Тематика работы научной группы, возглавляемой к.ф.-м.н., доцентом В.В.Монаховым
1. Разработка языка программирования и RAD-среды BARSIC
BARSIC (Business And Research Scientific Interactive Calculator) - это язык программирования интегрированной среды, также называющейся BARSIC. Он разрабатывается на кафедре вычислительной физики и предназначен для управления научными компьютеризированными установками, математического моделирования, программной анимации, а также обработки и визуализации физических данных.
BARSIC рядом черт напоминает Visual BASIC и Object PASCAL (среды Delphi и Lazarus) – но имеет встроенные средства, характерные для математических пакетов. В частности – численное символьное дифференцирование, матричная алгебра, работа с комплексными числами, специальные функции (в том числе комплексные), быстрое преобразование Фурье и др.
В BARSIC имеется оригинальная объектная модель и большое количество встроенных предопределенных классов, обеспечивающих удобный и понятный доступ к встроенным библиотекам.
На языке BARSIC разработан пакет BARSIC SLEIGN2 для решения сингулярных и регулярных задач Штурма-Лиувилля. Разрабатывается пакет для решения квантовой задачи движения электрона в поле двух зарядовых центров. Разрабатывается программное обеспечение управления промышленными спектрометрами ОКБ “Спектр” http://www.okb-spectr.ru/ .
Массовое использование BARSIC получил в интернет-олимпиадах по физике (см. далее) http://barsic.spbu.ru/olymp/.
2. Разработки в области языка программирования Java
В.В.Монахов является признанным специалистом в области Java. Его книга «Язык программирования Java и среда NetBeans» получила рекомендацию корпорации Sun Microsystems, разработчика языка Java и основного разработчика среды NetBeans. Книга стала бестселлером, конкурирующим с произведениями таких «гуру» в области Java как К.Хорстманн, Б.Эккель, Г.Шилдт.
Одно из направлений, активно развиваемой в группе - подключение к программам, написанным на языке Java, библиотек высокопроизводительных вычислений.
Java имеет большое количество достоинств, и, в частности, надежность и современную модель многопоточности, являющуюся наиболее разработанной и совершенной из имеющихся языков программирования. Что позволяет писать программы, эффективно распараллеливающиеся на современых многоядерных процессорах. Но из-за особенностей работы с памятью Java не может претендовать на высокие достижения в области высокопроизводительных вычислений. В группе разработана трехуровневая схема подключения библиотек высокопроизводительных вычислений к программам, написанным на языке Java, позволяющая решить данные проблемы. Показано, что при использовании данной схемы подключения итоговое понижение производительности библиотек составляет несколько процентов.
Разработана система, обеспечивающая под Windows и Linux унифицированный доступ из приложений Java к библиотекам, поддерживающим многоядерные процессоры и аналогичным LAPACK (базовой библиотеки высокопроизводительных вычислений в области линейной алгебры) по функциональности - Intel MKL, Sun Performance Library, AMD ACML, LAPACK+GotoBLAS.
Пока по предложенной схеме подключено только несколько алгоритмов LAPACK, идёт работа по подключению всех алгоритмов. А также подключению других пакетов высокопроизводительных вычислений.
Второе направление работы группы в области Java – портация языка BARSIC на платформу Java, поскольку требуется мультиплатформенность прложений BARSIC, а пока они работают только под Windows.
Данная работа ведётся по двум направлениям:
- портация (перевод исходного кода) с языка Object PASCAL (Delphi) на язык Java. Такая портация является очень сложным делом, так как требует изменения всех используемых компонентов, библиотек и зачастую даже основных принципов работы программного комплекса BARSIC. Наиболее сложным является перевод на Java парсер-генератора и парсера языка BARSIC.
- использование технологии Java Scripting для обеспечения парсинга синтаксических конструкций BARSIC виртуальной Java-машиной. Технология Java Scripting стала поддерживаться в Java совсем недавно - начиная с JDK 6. Она позволяет поддерживать с помощью Java-машины различные интерпретируемые языки программирования, обеспечивая для программ, использующих эти языки, оптимизацию выполнения (в частности, JIT-компиляцию), а также простоту интеграции с Java.
3. Разработка системы интернет-олимпиад СПбГУ
В данной научной группе разработана серверная программная система для проведения Интернет-олимпиад. Она была использована для организации Интернет-олимпиад по физике, и в настоящее время планируется проводить на ее основе и другие Интернет-олимпиады, которые будут разрабатываться в СПбГУ.
Основное отличие интернет-олимпиады по физике от других олимпиад заключается в использовании виртуальных лабораторий. В них воспроизведены особенности, присущие реальному физическому эксперименту. Модели виртуальных лабораторий разрабатываются на языке BARSIC и работают под управлением исполняющей среды (“проигрывателя”) BARSIC.
В интернет-олимпиадах по физике за 2005-2008 годы приняли участие более 15 тысяч школьников, причём каждый год идёт заметное увеличение числа участников.
Аналогов программной системы интернет-олимпиад по физике в мире нет.
Идут работы как по развитию серверной PHP-системы, так и по разработке на языке BARSIC клиентских приложений (редактора тестовых заданий, конструкторов моделей).
4. Развитие программного комплекса BARSIC и языка BARSIC
Как уже говорилось, идут работы по обеспечению мультиплатформенности приложений BARSIC. Для этого идёт работа по портированию исполняющей среды (“проигрывателя”) и среды разработки (IDE) BARSIC на платформы Linux и MacOS.
Для этого идут работы по портированию программного комплекса BARSIC на платформу Java.
Альтернативным направлением, в котором ведутся работы, является портация BARSIC с Delphi на Lazarus – свободный мультиплатформенный аналог Delphi.
Также идут работы по развитию самого языка BARSIC – в него добавляются новые возможности. В частности, необходимо обеспечить поддержку комплексной матричной алгебры, расширить возможности работы с массивами, добавить работу с хэш-таблицами, расширить работу с трёхмерной графикой, и т.д.