Турбо Кириллица

Говорят, когда-то российские патриоты русского языка создали модуль для 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 из папки "Руководства".

Ничего не могу сказать с уверенностью о применении "Глагола" русскоязычными программистами. Рискну предположить, что оно не слишком широко в силу достаточно слабого компилятора и неразвитой библиотеки стандартных функций. Не способствует популярности и отсутствие качественной интегрированной среды разработки - необходимого атрибута современного языка программирования. Сам бы я порекомендовал использовать "Глагол" для обучения программированию школьников (можно и студентов, но только гуманитарных специальностей). На более серьезные вещи "Глагол" вряд ли способен. Впрочем, я думаю, разработчики "Глагола" вряд ли откажутся от помощи волонтеров, так что если хотите - присоединяйтесь и развивайте "Глагол" в свое удовольствие.

Вадим СТАНКЕВИЧ

Версия для печатиВерсия для печати

Номер: 

21 за 2006 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя Инкогнито
> "оформление сайта ... оставляет желать лучшего"

Оформление сайта простое, без лишних наворотов, однако сайт быстро грузится, текст хорошо читается. На сайте отсутствует всякая реклама, счётчики и т.п. Думаю, что это наилучший вариант. Что сюда можно добавить "лучшего"?

> ""Заграница", "Код", "Отделы", "Руководства" и "Службы""

Глагол часто обновляется и совершенствуется. Теперь создан целый каталог "Приложения", в котором расположены примеры приложений, написанных на Глаголе, они тоже разбиты на 4 каталога, папка "Код" перенесена в каждый из них.

> "Среди примеров, кстати сказать, есть и более серьезные: например, "Тетрис""

Сейчас к играм добавлены русские шашки и крестики-нолики.

> "элементов управления всего три - кнопка, надпись и поле для ввода."

Думаю, этого вполне достаточно для любых консольных программ.

> "примеров использования этой скромной библиотечки разработчики в состав дистрибутива почему-то не включили"

А тетрис? А шашки с крестиками-ноликами?

> "достаточно слабого компилятора"

Необоснованное утверждение. Преобразователь Глагола, думаю, ни чуть не слабее компилятора Турбо Паскаля и ему подобных. Да и библиотеки,

> "Впрочем, я думаю, разработчики " Глагола " вряд ли откажутся от помощи волонтеров, так что если хотите - присоединяйтесь и развивайте " Глагол " в свое удовольствие."

Так и делаем. Разработчик пока только один, но уже есть сайты, посвящённые Глаголу (один из них веду я).

Аватар пользователя Вадим Станкевич
> Думаю, этого вполне достаточно для любых консольных программ.

Чем больше библиотека, тем больше шансов, что она кому-нибудь пригодится.

>Необоснованное утверждение. Преобразователь Глагола, думаю, ни чуть не слабее компилятора Турбо Паскаля и ему подобных. Да и библиотеки

Проверяли?

Тем не менее, я восхищён Вашей работой и желаю успехов.

Аватар пользователя sdfsd
Помню учился я в школе по хренотени под названием Кумир (работало оно на чуде советской инженерии - компутере Корвет, о 48Кб оперативной памяти). Вот точь в точь такое же тока begin...end там заменен на нач...кон А вот от ВЕЩ и ЦЕЛ так и повеяло детскими воспоминаниями Ж)
Аватар пользователя sdfsd
А автору бы порекомендовал просто сделать front-end для GCC - стало бы кроссплатформенным Ж)
Аватар пользователя sdfsd
во не поленился нашел ссылку - http://www.infomir.ru/kumir4.zip

однако под ДОС он реально толще чем под z80 :) - качать 1.5 метра.

Аватар пользователя Инкогнито
> Чем больше библиотека, тем больше шансов, что она кому-нибудь пригодится.

Тоже верно...

> Тем не менее, я восхищён Вашей работой и желаю успехов.

Хотя я и не Издатель Глагола, работа это не моя, тем не менее очень приятно слышать об этом языке столь хорошие отзывы. Спасибо.

Приятно осознавать, что и в среде программистов ещё остались патриоты.

Аватар пользователя Максим
Есть ещё язык программирования ПРОФТ5 -вариант VisualBASIC и Дльфи - тоже с русским синтаксиом. Есть бесплатная и платная (700 Руб :)) версии.
Аватар пользователя Инкогнито
> Сам бы я порекомендовал использовать "Глагол" для обучения программированию школьников (можно и студентов, но только гуманитарных специальностей)

Язык, в котором типы данных названы "видами", а процедуры и функции переименованы в "задачи", не может считаться подходящим для обучения программированию. Может считаться только вредным.

И английская основа нормальных распространенных языков (C, Java, Perl, PHP, Python, etc.) человеком, привыкшим к русской, будет восприниматься с таким же (если не с большим) трудом, как русская - человеком, привыкшим к английской.

Аватар пользователя аноним
Все классно, только один вопрос - а не полезнее ли применять время, потраченное на разработку языка подобного массе других (только уже отработанных, отлаженных, оптимизированных и используемых) на что-нибудь более полезное, в том числе с патриотической точки зрения? Тем более для того чтобы выучить 20-30 последовательностей латинских букв особо глубокого знания английского не требуется, зато можно работать практически на любых машинах (не глядя на поддержку кирилицы), что часто бывает нелишним.

А вообще - удивительно, что идея массового универсального языка программирования на своих родных языках еще жива. Хотите русский добавить - по-моему, лучше потратить время на исследования в области компьютерного интеллекта и распознавания естественного языка и сделать программу, которая _действительно_ будет использовать какое-то хотя бы бедное подмножество русского языка в качестве входного интерфейса. По крайней мере, это будет интересно и может быть в чем-то ново (уж зависит от системы и алгоритмики, которую заложите). Тем более, в реальной жизни часто приходится писать на дестяке разных языков (от ассемблера до джавы, с++ и питона), так что лучше использовать то, что привычно. Кстати, вот в математике обычно используются латинские (а также греческие и даже ивритские) обозначения. Может их тоже перепаять на кирилические?..

Теперь по статье.

" основу языка взят Паскаль, компилятор которого писать намного проще, чем компиляторы Си-подобных языков. Впрочем, мне кажется, Паскаль - хороший выбор: это очень четкий и логичный язык, в отличие от Си, хорошо приспособленный для прикладного программирования"

Очень субъективно. Вообще, С появился раньше и большинство современных языков все же более походит на С (точнее, берет его в качестве основы) Честно говоря, после Object Pascal-я не припомню ничего кроме макро-ассемблера (там есть отдельная секция для описания данных), в которых как-то выделялось бы нечто вроде VAR.. А по личному мнению - С гораздо яснее, логичнее, удобней и правильней для изучения - паскалем только вкус у людей портить.

"осле распаковки в папке, куда установился "Глагол", вы увидите пять каталогов: "Заграница", "Код", "Отделы", "Руководства" и "Службы"."

Честно говоря, сложновато догадаться о значении чего-либо кроме "Код" и "Руководства".

"Сам бы я порекомендовал использовать "Глагол" для обучения программированию школьников (можно и студентов, но только гуманитарных специальностей)."

Соглашусь с мнением, приведенным выше - не стоит на этом учить.

"рискну предположить, что оно не слишком широко в силу достаточно слабого компилятора и неразвитой библиотеки стандартных функций."

Навреняка. И не может быть иначе, пока на реальных проектах в массовом порядке, после пары сотен (хотя бы) гневных писем о тормазах и просящих об оптимизациях, не будет получен _продукт_ (а это совсем не то же, что просто _разработка_)

Аватар пользователя Инкогнито
Русский язык в программировании доказал свою жизнеспособность хотя бы на примере 1С. Можно говорить, конечно, что это не настоящий язык программирования и недостатков у этого скриптового языка намного больше чем достоинств. Но русскоязычный 1С кормит на просторах ExUSSR народу больше, чем все С++ вместе взятые. И скорость разработки на русском языке, действительно больше, чем на чем-либо другом, как и возможность поддержки (а также скорость понимания чужого кода тоже на порядок больше чем в латинских системах). Почему собственно надо стесняться того что программишь на своем родном языке? Англичане или американцы занимаются этим ежедневно и не стыдятся того, что не читают хэлп на неродном им языке...