|
Навигация
|
Описание проекта
Проект состоит из нескольких частей (каждая из которых тоже может состоять из нескольких): язык Madus, компилятор, система тестов компилятора, библиотека модулей, система тестов модулей, система помощи, студия разработки и сайт проекта. Рассмотрим каждую часть более подробно. Язык Madus
Madus - императивный, объектно-ориентированный язык программирования. В нём поддерживаются основные управляющие конструкции, как в других языках; в то же время, есть нововведения. Основная цель, котороая ставилась при разработке языка - создание быстрых и компактных приложений. При этом, программа на Madus должна быть легка для понимания (то есть программу можно читать "с листа"), даже в ущерб скорости написания. Основная нагрузка по ускорению написания программ должна лечь на студию разработки. Описание языка Madus можно почитать тут (пока не написано). Компилятор
Полного и окончательного видения того, каким будет компилятор, пока нет. Здесь область свободная для творчества, любые идеи рассматриваются, что то может измениться, что то добавиться или удалиться. Компилятор собирает программу, написанную на языке Madus в выполняемый файл или, например, в исходный код на языке Си (в зависимости от используемого линковщика). На данный момент компилятор представляется в следующем виде. На вход подаётся файл проекта. В нём описывается весь проект, все составляющие его модули, опции синтаксиса и линковщика, входная точка (фунция входа в программу), указывается конечная платформа и операционная система, под которой будет выполняться проект. Тут же указываются пользовательские опции. Подробнее про файл проекта можно почитать тут. В модулях проекта описывается код программы на языке Madus. Выполнение начинается с точки входа. Выход компилятора зависит от используемого линковщика. О внутреннем устройстве компилятора можно почитать тут (пока не написано). Компилятор пишется на Delphi, при этом используются только основные возможности языка, так как Delphi используется до тех пор, пока Madus не сможет откомпилировать сам себя. Система тестов компилятора
Не путайте этот пункт с системой тестов модулей. Тесты компилятора выполняются для проверки корректности работы частей компилятора. Состоят из небольших приложений, реализующих какую то часть компилятора, например, лексический анализатор, оптимизатор и так далее. На вход такому приложению подаётся файл, котороый оно обрабатывает и генерирует файл выхода. Файл выхода сравнивается с эталонным и считается, что приложение работает корректно, если результаты совпадают. Тесты должны быть написаны так, чтобы они все выполнялись в автоматическом режиме. Фактически, в будущем будет сделан отдельный процесс, который сам будет скачивать полный образ исходный текстов и запускать их. В случае сбоя - информировать об этом. Тесты пишутся на том же языке, на котором написан тестируемый модуль. Всем остальным могут заняться соответствующие скрипты. В качестве скриптового языка используется PHP. Библиотека модулей
Параллельно с разработкой компилятора идёт разработка библиотеки модулей. Это те модули, которые будут использоваться в разных программах, а не только в компиляторе Madus. В качестве обработчика ошибок выполнения в библиотеку встроена обработка исключительных ситуаций. Работа с памятью реализована через отдельный класс. Вывод осществляется на стандартную консоль вывода. Модули разбиты на три группы: системные модули, модули подпрограмм и классы. Системные модули содержат описания для вызова функций операционной системы. Модули подпрограмм содержат, в основном, небольшие подпрограммы, которые выполняют незначительные действия, слишком скромные для реализации их в отдельном классе. Модули классов строятся на первых двух группах модулей; содержат основной код библиотеки. Система тестов модулей
В идеале необходимо написать тесты для всех модулей, которые используются компилятором. На данный момент, написаны тесты только для нескольких модулей, тех, работа которых отлаживалась отдельно. Система тестов устроена в виде отдельного приложения. В нём реализован граф вызовов функций. Существует корневой объект, который вызывает другие объекты, наследуемые от узлового. У всех них есть один метод - выполнить тест. Возвращаемый результат - число упавших тестов. В конце подсчитывается сколько всего тестов упало. Граф вызовов строится так, что он отображает дерево каталогов библиотеки модулей. Таким образом легко ориентироваться где какой тест должен быть расположен. Система помощи
Очевидно, должно быть несколько систем помощи: по языку Madus, по компилятору Madus и по библиотеке модулей. На данный момент ни одного из описаний не существует. Система помощи по языку будет составляться параллельно разработке и спецификации языка, а по компилятору - по мере его написания и введения новых функций и возможностей. По библиотеке модулей систему помощи необходимо писать прямо сейчас. Основная идея в том, чтобы прямо в файле модуля было описание того, что делает та или иная функция, её параметры, возвращаемое значение, исключения, которые она пораждает, если таковые имеются. Далее, в автоматическом режиме, специальная программа проходит весь исходный код и генерирует систему помощи в заданном формате. Для реализации этого надо разработать описание как информация по функции будет представлена в исходном коде, чтобы программа могла её собрать, описать уже написанные функции и разработать генератор помощи. Студия разработки
Так как программы на Madus пишутся в текстовом виде, то в общем подойдёт любой текстовый редактор. Но! Конечно, работать в студии, специально заточенной для конкретного языка гораздо удобнее. Так как в этом направлении вообще ещё ничего не сделано, то тут есть определённый простор для решений. Можно написать всё с нуля, разработав необходимые требования к студии, а можно взять готовое приложение и настроить его так, чтобы оно стало полноценной студией разработки именно для Madus. Простейшие, очевидные требования это подсветка синтаксиса, подсказка имён функций и параметров, дополнение имён по части слова, генерация реализации классов по описанию, быстрая генерация приложений и отладка. Сайт проекта
Всю информацию о проекте можно найти на его сайте. Тут и документация, и описания, и сам компилятор, а так же его исходный код. Помимо этого сайт важен как средство получения обратной связи. На данный момент сайт представляется как сборник статей по теме Madus, хранилище исходного кода и скомпилированного компилятора, а так же средство обсуждения того что сделано и что может быть сделано. Таким образом, сайт несёт чисто информативную функцию, а значит должен быть сделан просто. Для его написания достаточно использовать HTML, PHP и простых текстовых документов. В заключение остаётся отметить, что проект некоммерческий, с открытым исходным кодом. Поэтому любой желающий может его скачать и использовать в любых своих целях, кроме приносящих прибыль. Так как сейчас ещё мало что есть для коммерческого использования, соответственно, условия для этого будут выработанны позже. В любом случае, связывайтесь с разработчиком. |