Делать Алгоритмы Маркова — это весело
Писать Нормальные Алгоритмы Маркова, это безумно интересно и забавно. Интересно ли узнать о том, как мы делали лучшую в мире 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., а преподавателю проект не понравился, потому что тут не было базы данных, но это тоже другая история.
Я не уверен, нарушает ли статья правила хабра, про рекламу. Если да, то прошу сообщить или передвинуть в Я пиарюсь.