Pull to refresh

Делать Алгоритмы Маркова — это весело

Reading time3 min
Views46K
Писать Нормальные Алгоритмы Маркова, это безумно интересно и забавно. Интересно ли узнать о том, как мы делали лучшую в мире IDE для Нормальных Алгоритмов Маркова?





Кому в голову может прийти писать IDE для языка, на котором не написана ни одна коммерческая программа? И нам такая мысль бы не пришла. Но было задание в университете сделать проект — интерпретатор.

Если делать, то сразу лучше всех. Нужно сначала посмотреть, что уже сделали другие. Ничего особо интересного мы не нашли, поэтому очень бегло составили список что должно быть в IDE 21 века:

  • Подсветка кода
  • Подсказки ошибок
  • Комментарии к коду
  • Отладчик
  • Точки остановки


Было решено сделать все. Писать решили на C++ на Qt. Там GUI без проблем и сигналы-слоты есть. (Потом оказалось, что их можно использовать и без Qt, но это совсем другая история).

Нарисовали маленькую схемку классов




Придумали киллер-фичи

  • История запусков — сохраняются все входные слова, для удобного перезапуска. + история хранится также и в самом файле, поэтому она не потеряется при переносе с одного компьютера на другой.
  • Пошаговый отладчик. Если поставить точку остановки на любом правиле, то интерпретация остановится, во время выполнения правила, а также покажет, как правило было использовано. После остановки можно продолжить исполнения до следующей точки остановки или начать исполнение пошагово.




  • Редактирование кода не лету — во время отладки можно менять код, который сразу начнет использовать интерпретатор. А также все ошибки и подсказки по их решения появляются сразу при вводе кода.
  • Два режима запуска. Быстрый режим — сразу выдает результат, отладочный режим выводит также лог все правил и подстановок, которые были сделаны.
  • Предотвращения зацикливаний и программ, которые никогда не завершатся.
  • Поддержка дополнительной возможности указать алфавит символов, доступных для написания правил и алфавит символов доступных как входные данные.


Дальше была написана документация всех классов, нарисованы заготовки интерфейса, и началась самая быстрая фаза разработки — кодинг.



Через пару дней бета версия была готова, создан сайт, написана документация, иконки, инсталяшка — все, что нужно для нормального проекта.

Во время первого пилотирования было сделано более 10 улучшений. Самая интересная из них это поддержка «палочек». Как оказалось в Нормальных Алгоритмах Маркова числа удобней всего представлять в виде палочек: ||| = 3, |||| = 4. Для того, чтобы не было необходимости считать их каждый раз мы добавили маленькие цифры, которые это делают за вас.



Интересные решения

Во время разработки мы придумали некоторые интересные решения. Некоторые из них:

  • Нам удалось сделать офлайн документацию в браузере, которая автоматически переходит на ее онлайн версию (которая может обновляться в отличии от офлайн), если у человека есть подключение к интернету. Сделали очень просто — подключили javascript файл, который лежит на сервере и делает редирект на онлайн версию. Нет интернета, нет файла, нет перехода — открывается офлайн документация.
  • Удобная портативная версия, которая автоматически после запуска делает ассоциацию с .yad файлом, после чего ни чем не отличается от установленной через инсталятор.


Результаты

На проект было потрачено 10 дней, 4 чтобы придумать и написать документацию, 3 чтобы запрограммировать и еще 2 дня на улучшения, документация, сайт.

Теперь все желающие могут скачать без регистрации и СМС с GitHub (пока только для Windows), а также все кто захочет так же сможет собрать из исходников.

Проект мы сделали втроем: dianasi, yuragri и я.

Вместо заключения

Статья про Алгоритмы Маркова без алгоритмов это не серьёзно, вот маленькая программа, которая конвертирует двоичные числа в десятичную систему («палочки»).

//Alphabet
T = {|, 0, 1}
I = {0, 1}

//Rules
|0 -> 0||
1->0|
0->$


P.S. а преподавателю проект не понравился, потому что тут не было базы данных, но это тоже другая история.

Я не уверен, нарушает ли статья правила хабра, про рекламу. Если да, то прошу сообщить или передвинуть в Я пиарюсь.
Only registered users can participate in poll. Log in, please.
Я хочу иметь установочный пакет для
41.33% Windows186
16.89% Mac OS76
37.56% Ubuntu169
23.56% Не нужно, соберу из исходников106
3.33% Свой вариант (в комментарии)15
450 users voted. 241 users abstained.
Tags:
Hubs:
+66
Comments37

Articles

Change theme settings