Тематика работы научной группы, возглавляемой к.ф.-м.н., доцентом В.В.Монаховым

 

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 – в него добавляются новые возможности. В частности, необходимо обеспечить поддержку комплексной матричной алгебры, расширить возможности работы с массивами, добавить работу с хэш-таблицами, расширить работу с трёхмерной графикой, и т.д.