Говорят, когда-то российские патриоты русского языка создали модуль для 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 из папки "Руководства".
Ничего не могу сказать с уверенностью о применении "Глагола" русскоязычными программистами. Рискну предположить, что оно не слишком широко в силу достаточно слабого компилятора и неразвитой библиотеки стандартных функций. Не способствует популярности и отсутствие качественной интегрированной среды разработки - необходимого атрибута современного языка программирования. Сам бы я порекомендовал использовать "Глагол" для обучения программированию школьников (можно и студентов, но только гуманитарных специальностей). На более серьезные вещи "Глагол" вряд ли способен. Впрочем, я думаю, разработчики "Глагола" вряд ли откажутся от помощи волонтеров, так что если хотите - присоединяйтесь и развивайте "Глагол" в свое удовольствие.
Вадим СТАНКЕВИЧ
Комментарии
Оформление сайта простое, без лишних наворотов, однако сайт быстро грузится, текст хорошо читается. На сайте отсутствует всякая реклама, счётчики и т.п. Думаю, что это наилучший вариант. Что сюда можно добавить "лучшего"?
> ""Заграница", "Код", "Отделы", "Руководства" и "Службы""
Глагол часто обновляется и совершенствуется. Теперь создан целый каталог "Приложения", в котором расположены примеры приложений, написанных на Глаголе, они тоже разбиты на 4 каталога, папка "Код" перенесена в каждый из них.
> "Среди примеров, кстати сказать, есть и более серьезные: например, "Тетрис""
Сейчас к играм добавлены русские шашки и крестики-нолики.
> "элементов управления всего три - кнопка, надпись и поле для ввода."
Думаю, этого вполне достаточно для любых консольных программ.
> "примеров использования этой скромной библиотечки разработчики в состав дистрибутива почему-то не включили"
А тетрис? А шашки с крестиками-ноликами?
> "достаточно слабого компилятора"
Необоснованное утверждение. Преобразователь Глагола, думаю, ни чуть не слабее компилятора Турбо Паскаля и ему подобных. Да и библиотеки,
> "Впрочем, я думаю, разработчики " Глагола " вряд ли откажутся от помощи волонтеров, так что если хотите - присоединяйтесь и развивайте " Глагол " в свое удовольствие."
Так и делаем. Разработчик пока только один, но уже есть сайты, посвящённые Глаголу (один из них веду я).
Чем больше библиотека, тем больше шансов, что она кому-нибудь пригодится.
>Необоснованное утверждение. Преобразователь Глагола, думаю, ни чуть не слабее компилятора Турбо Паскаля и ему подобных. Да и библиотеки
Проверяли?
Тем не менее, я восхищён Вашей работой и желаю успехов.
однако под ДОС он реально толще чем под z80 :) - качать 1.5 метра.
Тоже верно...
> Тем не менее, я восхищён Вашей работой и желаю успехов.
Хотя я и не Издатель Глагола, работа это не моя, тем не менее очень приятно слышать об этом языке столь хорошие отзывы. Спасибо.
Приятно осознавать, что и в среде программистов ещё остались патриоты.
Язык, в котором типы данных названы "видами", а процедуры и функции переименованы в "задачи", не может считаться подходящим для обучения программированию. Может считаться только вредным.
И английская основа нормальных распространенных языков (C, Java, Perl, PHP, Python, etc.) человеком, привыкшим к русской, будет восприниматься с таким же (если не с большим) трудом, как русская - человеком, привыкшим к английской.
А вообще - удивительно, что идея массового универсального языка программирования на своих родных языках еще жива. Хотите русский добавить - по-моему, лучше потратить время на исследования в области компьютерного интеллекта и распознавания естественного языка и сделать программу, которая _действительно_ будет использовать какое-то хотя бы бедное подмножество русского языка в качестве входного интерфейса. По крайней мере, это будет интересно и может быть в чем-то ново (уж зависит от системы и алгоритмики, которую заложите). Тем более, в реальной жизни часто приходится писать на дестяке разных языков (от ассемблера до джавы, с++ и питона), так что лучше использовать то, что привычно. Кстати, вот в математике обычно используются латинские (а также греческие и даже ивритские) обозначения. Может их тоже перепаять на кирилические?..
Теперь по статье.
" основу языка взят Паскаль, компилятор которого писать намного проще, чем компиляторы Си-подобных языков. Впрочем, мне кажется, Паскаль - хороший выбор: это очень четкий и логичный язык, в отличие от Си, хорошо приспособленный для прикладного программирования"
Очень субъективно. Вообще, С появился раньше и большинство современных языков все же более походит на С (точнее, берет его в качестве основы) Честно говоря, после Object Pascal-я не припомню ничего кроме макро-ассемблера (там есть отдельная секция для описания данных), в которых как-то выделялось бы нечто вроде VAR.. А по личному мнению - С гораздо яснее, логичнее, удобней и правильней для изучения - паскалем только вкус у людей портить.
"осле распаковки в папке, куда установился "Глагол", вы увидите пять каталогов: "Заграница", "Код", "Отделы", "Руководства" и "Службы"."
Честно говоря, сложновато догадаться о значении чего-либо кроме "Код" и "Руководства".
"Сам бы я порекомендовал использовать "Глагол" для обучения программированию школьников (можно и студентов, но только гуманитарных специальностей)."
Соглашусь с мнением, приведенным выше - не стоит на этом учить.
"рискну предположить, что оно не слишком широко в силу достаточно слабого компилятора и неразвитой библиотеки стандартных функций."
Навреняка. И не может быть иначе, пока на реальных проектах в массовом порядке, после пары сотен (хотя бы) гневных писем о тормазах и просящих об оптимизациях, не будет получен _продукт_ (а это совсем не то же, что просто _разработка_)