1. ВВЕДЕНИЕ

Прежде, чем я начну описание языка ACL, я хочу рассказать немного о истории его создания. Язык программирования ACL первоначально был придуман мной в 1992-1994 годах для компьютеров PC AT-286, работающих под операционной системой DOS. К тому времени у меня было написано большое количество подпрограмм на языке программирования Fortran и назрела необходимость как-то всем этим управлять. Использовать библиотеки на стадии компиляции оказалось не удобно и не быстро. Мне хотелось иметь чистый интерпретатор, чтобы как двое из мешка: написал и сразу исполнялось. Получилось так, что ACL по своей структуре оказался языком макросов, что как раз соответствовало поставленной цели. Интерпретатор очень хорошо и быстро работал, обеспечивая выполнение многих функций, которые ранее выполнялись с помощью десятка разных программ с неудобным интерфейсом. Он позволял организовать любую программу с графическим интерфейсом пользователя за полчаса. Программу я, в основном, использовал для быстрой отладки графики, которую я всю программировал сам. Однако с появлением операционной системы Windows старый интерпретатор -- DOS программа -- потерял свою привлекательность. Более того, он просто не запускался под Виндовс, так как использовал некоторые запрещенные с точки зрения Виндовс приемы.

Через десять лет, в 2004 году, я взялся реанимировать ACL сначала с целью использовать его на КПК (карманном персональном компьютере), так как хороших программ для расчетов на карманном компьютере к моменту написания моей программы я не нашел. Да и сейчас их немного. Для написания интерпретатора я использовал язык Java в модификации для виртуальных машин (ВМ) проекта Ewe. Эти ВМ давались бесплатно с правом свободного распространения, что меня привлекло более всего. Увы, Sun Microsystems тогда бесплатно ВМ для мобильных устройств не давал. Фактически надо было переписать старый код с фортрана на Java, что я и сделал, и слегка изменить общую структуру с учетом новых возможностей. На ПК программа естественно тоже работала. Получилось так хорошо, что я решил сделать отдельную версию для реализации на ПК и с использованием стандартного языка Java-1.4.2. Это была последняя версия Java к моменту моего начала работы с Java. У стандартной версии больше возможностей так как она сразу ориентируется на ПК. В последующем обе версии стали слегка различаться по причине разных возможностей у КПК и ПК. Но главная структура языка все же общая. В этой книге я буду писать о языке для ПК. Программа для КПК практически умерла. Хотя она все еще может работать на моем карманном компьютере. Но он уже давно отправлен на пенсию, и я им не пользуюсь, а на современных смартфонах стоят уже совсем другие операционные системы, под которыми она не работает.

За прошедшее время было много вариантов интерпретаторов ACL. В конце концов я вернулся к одному варианту, но этот вариант можно использовать с различным внешним видом и разными целями. Я перестал экономить на размере файла, так как скорости интернета и мощности компьютеров за последнее время очень сильно выросли. Более того, я стал использовать только 64-битную JRE (интерпретатор Java) для 64-битной операционной системы Виндовс и достаточно большой размер числового массива. С другой стороны, описание самого языка осталось только то, что в интернете, причем полное описание есть только на русском языке. Описание на английском языке устарело и его надо скачивать независимо. Однако сейчас Гугл переводчик может вполне сносно перевести русское описание. Кроме того, программа сейчас имеет большой набор написанных мной готовых программ на языке ACL. Она также имеет средства разработки ACL программ, такие как редактор текста для записи и исправления ACL программы, быстрый запуск на исполнение прямо из редактора и анализ ошибок, запуск готовых ACL программ во время редактирования текущей программы и некоторые дополнительные функции.

Таким образом, сейчас программа состоит из интерпретатора в виде одного файла vkACL.jar, а также большого набора других файлов, необходимых для полноценной работы, которые записаны в файл vkACLa.zip. Более того, интерпретатор сделан таким образом. что один и тот же файл можно настроить и как среду разработки, и как интерпретатор одной ACL программы с собственным окном и настраиваемым меню, и как интерпретатор одной программы без окна, который работает молча и автоматически. При необходимости использовать разные версии достаточно заменить всего один файл интерпретатора vkACL.jar. Любую ACL программу, в принципе, можно оформить как бесконечную, позволяющую выполнять любые работы. Вариант на выполнение одной ACL программы выглядит как обычная программа на языке Java с меню, имеющем функции для решения конкретной поставленной задачи. Таких программ может быть много, они все будут иметь разный внешний вид и выполнять разные задачи, хотя все различие сводится только к разному коду на языке ACL, в то время как Java код интерпретатора один и тот же. Такой вариант хорош для пользователей, не знающих ACL. Однако плодить разные программы все же менее удобно, чем все делать в одной программе. Поэтому я сам проигрывателем почти не пользуюсь.

Язык программирования ACL можно характеризовать как смесь универсальности и специализации, простоты и сложности одновременно. Так как он привязан к Java, то он во-многом использует возможности Java, в частности, графику. Но все делается намного проще, хотя для понимания этой простоты необходимо все же приложить усилия. С другой стороны, если иметь в виду графические средства общения с пользователем, то они намного беднее, чем в Java, зато использовать их проще и главные элементы все же есть. В будущих версиях эта часть языка возможно будет развиваться дальше. Вычисления и логику можно делать, но и здесь все проще, и в то же время требует навыков. Вычисления, естественно не такие быстрые, но для многих простых задач скорость вполне достаточная. Сложные вычисления с большими циклами надо делать в виде целых команд, то есть ACL просто запускает готовые Java подпрограммы. Собственно, основная функция программ на ACL -- обеспечивать организацию вычислений и анализ результатов. Пакет научной графики полностью сделан мной. Он менее развитый, чем в специальных фирменных программах, но опять же все необходимое есть. Есть трехмерная графика, квази-трехмерная графика, а также серые и цветные карты. Я сделал все, в чем сам нуждаюсь. Недостающие функции можно сделать в виде готовых программ и просто вызывать из ACL программы. Этот режим позволяет использовать ACL программирование для частичного решения практически любой задачи, кроме может быть быстрых игр с динамичной графикой. Однако и здесь можно приготовить команды для выполнения специальных вычислений и частично это уже сделано. В следующих главах дано описание языка и разбор некоторых примеров кода.

Язык ACL можно использовать в качестве первого языка для изучения программирования. Для лучшего понимания основных особенностей работы на компьютере и методов программирования советую прочитать мою статью (Компьютер и программирование) тут . Ну и в моем описании все же мало слов о программировании в целом. Поэтому параллельно полезно почитать без погружения какую-нибудь толстую книгу о программировании на стандартных языках. Я также начал писать главы с разбором примеров решения разных задач.

Последние версии интерпретатора компилируются на Java версии 1.6.4. Таким образом, для их запуска нужна версия виртуальной машины не меньше указанной. А лучше всего иметь всегда самую последнюю 64-битную версию JRE.