Копия для печати
Турбо Кириллица
Говорят, когда-то российские
патриоты русского языка создали
модуль для Forth'а, позволяющий писать
программы с использованием
русскоязычных ключевых слов. Этот
проект стал знаменит фразой,
которую можно скомпилировать:
"Пока не никогда делать ни
фига". Впрочем, в силу некоторого
своеобразия языка
программирования Forth, данное
новшество не прижилось. И уж точно
не нашло широкого распространения
в среде программистов. Видимо,
именно поэтому
"братья-славяне" придумали
новый язык, основанный уже на
Паскале и Обероне. И назвали его
"Глаголом".
Официальный сайт проекта
находится по адресу glagol.nad.ru. Честно
говоря, оформление сайта, как и у
большинства подобных
"наколеночных" проектов,
оставляет желать лучшего. Впрочем,
разобраться и найти дистрибутив
"Глагола", размер которого,
кстати говоря, всего-то около 500 Кб,
будет нетрудно. Дистрибутив
фактически является
самораспаковывающимся архивом,
который при запуске автоматически
распаковывается туда, откуда был
запущен. Поэтому перед началом
экспериментов с "Глаголом"
сначала скопируйте Glagol1.exe в
какое-нибудь тихое и укромное
место, где он не будет мешать другим
программам.
После распаковки в папке, куда
установился "Глагол", вы
увидите пять каталогов:
"Заграница", "Код",
"Отделы", "Руководства" и
"Службы". В папке со странным
названием "Заграница"
несколько служебных ассемблерных
файлов и bat-файлы для компиляции,
ассемблирования и компоновки (т.е.
получения exe-файла из исходного
текста программы). К слову: exe-файлы,
получаемые с помощью
"Глагола", имеют достаточно
малый объем и не зависят от
дополнительных библиотек, в
отличие от, например, программы,
написанной в Microsoft Visual Basic 6. В папке
"Код" можно найти объектные
файлы стандартных библиотек
"Глагола", которые потом
компонуются в exe-файл вместе с
основной программой (т.е. эти файлы
тоже служебные, и лучше их без
особой надобности не трогать). В
папке "Отделы" находятся
исходные тексты стандартных
библиотек "Глагола" и
небольшие (и немногочисленные)
примеры использования этого языка.
В папке "Руководства" найдется
различная документация, а в
"Службах" - ассемблер,
компоновщик и, собственно,
компилятор "Глагола",
названный разработчиками почему-то
"Преобразователем Глагола".
Вполне вероятно, я ошибаюсь, и на
самом деле авторы "Глагола"
ничего не знали об экспериментах
над "Фортом". Появление же
своего детища они объясняют
следующим образом: "Основная
задача "Глагола" - дать
человеку возможность воплощать
свои мысли на языке, близком к его
родному. "Глагол" строится из
небольшого числа ясных для
человека и четких для машинного
восприятия выражений. В свою
очередь, краткость и простота языка
позволяют создавать для различных
машин надежные преобразователи
языка в двоичный код. Круг задач,
решаемых с помощью языка
"Глагол", в основном, совпадает
с задачами, решаемыми Турбо
Паскалем. Это математические
вычисления, обработка файлов с
данными и, конечно же, обучение
программированию. В сборнике
разработок есть примеры
вычислительных приложений, игра
"Тетрис" и другие приложения.
Графических примеров в сборнике
разработок пока нет". Таким
образом, как видно, жива еще идея
создания русскоязычных языков
программирования, столь популярная
в далекие 80-е. Причем, что
характерно, за основу языка взят
Паскаль, компилятор которого
писать намного проще, чем
компиляторы Си-подобных языков.
Впрочем, мне кажется, Паскаль -
хороший выбор: это очень четкий и
логичный язык, в отличие от Си,
хорошо приспособленный для
прикладного программирования.
Кроме того, Паскаль очень популярен
в русскоязычных странах (куда, к
великому моему сожалению, пока
приходится относить и нашу
синеокую Беларусь), во многом
благодаря продуктам
небезызвестной компании Borland.
Программы на "Глаголе"
выглядят довольно необычно для
привыкшего к английским
сокращениям и аббревиатурам глаза,
однако сохраняют понятность и
простоту программ на Паскале. Чтобы
это утверждение не выглядело
голословным, приведу пример. Это
расчет числа Пи по формуле Пи/4 = 1 - 1/3
+ 1/5 - 1/7 + ... (с заданной точностью).
ЗАДАЧА ЧислоПИ;
(* Расчет по алгоритму и вывод ответа на экран *)
ПЕР
сумма,слагаемое:ВЕЩ;
знаменатель,знак:ЦЕЛ;
ПОСТ
ТОЧНОСТЬ=1.E-6; (* приблизительно *)
УКАЗ
Вывод.Цепь("^Расчет суммы: 1 - 1/3 + 1/5 - 1/7 + ... ");
сумма:=0;
знаменатель:=1;
знак:=1;
ПОВТОРЯТЬ
слагаемое:=знак/знаменатель;
сумма:=сумма+слагаемое;
УВЕЛИЧИТЬ(знаменатель,2);
знак:=-знак
ДО МОДУЛЬ(слагаемое) < ТОЧНОСТЬ;
Вывод.ЧВещ("(%d слагаемых)^^ %g сумма*4^ %g ПИ^ %g arctg(1)*4^",
знаменатель/2, сумма*4,Матем.ПИ,Матем.arctg(1)*4)
КОН ЧислоПИ;
В приведенном примере, думаю,
требует пояснения последняя
конструкция перед "КОН
ЧислоПИ". Это вывод на
стандартное устройство вывода,
аналогичный конструкции Writeln из
"Турбо Паскаля" или передаче
данных на стандартный поток cout из
C++. Правда, здесь "Глагол" чуть
больше похож на C++ в том плане, что, в
отличие от Паскаля, использование
ввода/вывода требует подключения
отделов (структурная единица
"Глагола" - аналог unit'а из
Паскаля) "Вывод" и "Ввод".
Приведенный пример можно отыскать
целиком в папке
"Отделы\Приложения\Разное".
Среди примеров, кстати сказать,
есть и более серьезные: например,
"Тетрис" - на мой взгляд, ничуть
не хуже того, что я когда-то
вдохновенно и собственноручно
изваял на неоднократно упоминаемом
мною "Турбо Паскале". Получать
из текста примеров готовые exe-файлы
приложений очень легко: в каждой
папке находится файл Примеры.bat, при
запуске которого автоматически
компилируются, ассемблируются и
компонуются все программы.
Вообще говоря, стандартная
библиотека "Глагола" не
слишком поражает разнообразием.
Имеются процедуры и функции (в
"Глаголе" и то, и другое
названо задачами) для работы со
стандартными устройствами ввода и
вывода, несложной работы с памятью;
есть несколько функций для
низкоуровневой работы с ОС Windows.
Есть отделы для работы с
псевдографическим интерфейсом (т.е.
с текстовым, как в Norton Commander'е или Turbo
Pascal'е). Впрочем, хочу сразу
разочаровать тех, кто ожидает
увидеть некий аналог легендарного
Turbo Vision: элементов управления всего
три - кнопка, надпись и поле для
ввода. Причем примеров
использования этой скромной
библиотечки разработчики в состав
дистрибутива почему-то не включили.
Стоит отметить присутствие в
библиотеке инструментария для
работы с разнообразными
математическими задачами: имеются
отделы для работы с векторами,
матрицами, комплексными числами (а
также комплексными векторами и
комплексными матрицами), а также
некоторых дополнительных функций
вроде преобразования чисел в текст
или вычисления простых
математических функций типа
факториала. Имеются дополнительные
отделы для отладки приложений,
разработанных с помощью
"Глагола". Там же находится
диспетчер памяти для программа на
"Глаголе". Из дополнительных
отделов стоит отметить следующие:
отдел для работы с различными
кодировками текста; отдел для
работы с параметрами командной
строки, которые передаются
приложению при запуске; отдел для
работы со строками,
заканчивающимися нулем,
используемые в Си (строки в стиле
Паскаля "Глаголом", к
сожалению, не поддерживаются).
Часть стандартной библиотеки
"Глагола" написана на
Ассемблере, а не на самом
"Глаголе", видимо, для
увеличения производительности
критических операций.
Среди документации,
прилагающейся к "Глаголу", -
сравнение этого языка
программирования с его
англоязычными прототипами (Турбо
Паскалем и Обероном-2), ответы на
часто задаваемые вопросы и
справочник по алфавиту, структуре и
конструкциям языка.
Если вы читаете печатный, а не
электронный вариант газеты, то,
вероятно, заметили, что в статье нет
скриншотов интегрированной среды
разработки для "Глагола".
Причина этого факта проста и
банальна: таковая среда
просто-напросто не существует. А
если и существует, то сами авторы
"Глагола" ничего о ней не
знают, а то бы, думается мне,
обязательно включили ее в пакет
поставки своего продукта. Но на
последнее уповать, боюсь, не
приходится, потому будем считать,
что собственной среды разработки у
"Глагола" нет. Сами
разработчики "Глагола"
предлагают следующее решение
данной проблемы: "В качестве
среды для написания
Глагол-приложений применяется
файловый менеджер FAR (ФАР) в связке с
подключаемыми к нему модулями. Для
просмотра описаний файлов Глагола
необходимо в
"ФАР->Параметры->Описания
файлов->Имена списков описаний"
вставить имя файла-списка
"Опись". Добавив модуль
"Колорер", можно во встроенном
редакторе ФАР включить цветовую
раскраску для исходных текстов
Глагол-приложений, а добавив модуль
"ТруТпл", можно ускорить набор
этих текстов. Если у вас еще не
установлен "Колорер", то можно
переписать с сайта "Глагола"
архив с "Колорером", уже
настроенным на "Глагол". В
поставке модуля "ТруТпл"
версии 1.24 уже содержится схема
ввода для "Глагола". Более
подробно эту информацию можно
изучить, читая документ sreda.htm из
папки "Руководства".
Ничего не могу сказать с
уверенностью о применении
"Глагола" русскоязычными
программистами. Рискну
предположить, что оно не слишком
широко в силу достаточно слабого
компилятора и неразвитой
библиотеки стандартных функций. Не
способствует популярности и
отсутствие качественной
интегрированной среды разработки -
необходимого атрибута
современного языка
программирования. Сам бы я
порекомендовал использовать
"Глагол" для обучения
программированию школьников (можно
и студентов, но только гуманитарных
специальностей). На более серьезные
вещи "Глагол" вряд ли способен.
Впрочем, я думаю, разработчики
"Глагола" вряд ли откажутся от
помощи волонтеров, так что если
хотите - присоединяйтесь и
развивайте "Глагол" в свое
удовольствие.
Вадим СТАНКЕВИЧ
Обсуждение статьи (записей: 10)