8 языков программирования не на английском: галопом по Европам
Не все языки программирования используют английские слова для операторов и функций — в некоторых есть арабские, русские и даже латинские термины.
Анастасия Телесницкая для Skillbox Media
Шок-контент: только 45% из 8500 известных языков программирования используют английские слова для обозначения различных действий. А вот оставшиеся 55% — уже не англоязычные.
Их создают с разными задачами:
- Языки для обучения — чтобы школьникам и студентам легче было понять принципы программирования. Таких — большинство.
- Эзотерические языки программирования — когда создатели решают покуражиться и разработать настоящую мозголомку.
- Языки, которые решают узкую задачу, могут быть созданы под конкретную модель компьютера или использоваться внутри одной популярной программы для бухгалтеров. Ну, вы поняли :)
- Последняя задача звучит как «Китай» — в Поднебесной и правда используют китайские языки программирования для практических задач. А судя по темпу, с которым население Китая увеличивается, наши внуки вполне могут перейти на программирование с иероглифами :)
Разберём восемь европейских языков программирования: почему они сделаны не на английском, как устроены и где почитать документацию.
Русские идут: 1С, Робик, Рапира
Большую часть кириллических языков придумали ещё во времена СССР — и они канули в Лету вместе с пятилетками и перестройкой.
Сто китов мне в глотку: ненавистный 1С
1С в представлении не нуждается, да что там — именно он вдохновил нас написать статью. Правда, в языке 1С можно использовать и английские ключевые слова. По синтаксису он напоминает «русский Pascal», только менее строгий и без некоторых конструкций. При этом синтаксис языка довольно простой: например, вот так выглядит классика — «Hello, World!»:
Собственно, готово. Только зачем это бухгалтерам — непонятно :)
В профессиональном сообществе 1С-программистов и сам язык не очень-то и жалуют. Даже JavaScript на фоне нашенского Enfant Terrible выглядит благородным доном. Ругают 1С за слабую производительность и отсутствие классов — кстати, никакого наследования, инкапсуляции и полиморфизма вы там тоже не найдёте. Зато в экосистеме 1С есть своя объектная модель базы данных, хранилище значений и язык запросов.
Несмотря на хейт и насмешки, 1С популярен — российский бизнес плотно подсел на продукты компании, а значит, 1С-программисты без работы не останутся.
Русская «черепашка»: Робик
Язык Робик разработал Геннадий Звенигородский в 1975 году. Писали его под родные винтажные «агаты» — в помощь школьникам. Фишка Робика — концепция исполнителей. Это как «черепашка» в Лого, только у Робика таких «черепашек» было несколько, причём каждая со своим «характером» — набором команд.
Мало того, исполнителей можно было создавать самостоятельно под свои задачи. Самыми популярными из виртуальных работяг стали «Муравей» и «Маляр» — они умели перемещаться по клеткам и закрашивать их. Негусто для избалованных Тони Старками и прочими докторами Стрэнджами современных тинейджеров, но вполне себе волшебно для школьников и «агатов» в семидесятые годы.
Изучить язык по архивной документации можно тут.
Защищайтесь, сэр: Рапира
Рапира — ещё один учебный язык программирования made in USSR начала восьмидесятых годов. Рапира помогала старшеклассникам и студентам-первокурсникам пересесть с Робика на нормальные языки. Они писали на ней калькуляторы, алгоритмы поиска, сортировки файлов, простые игры и алгоритмы решения математических задач.
«Hello, World!» на Рапире выглядит вот так:
Интересно, что у Рапиры были версии не только на русском, но и на английском, эстонском, грузинском. «Пролетарии всех стран, соединяйтесь!» — да и только. Это был настоящий призрак цифрового коммунизма — правда, побродить по Европе ему так и не удалось.
Документация сохранилась в веб-архиве и на сайте новосибирца Ершова.
Исландский Fjölnir: Рейкьявик-Рейкьявик
Fjölnir (читается как «Фьёльнир») — это язык программирования на исландском. Его используют для обработки списков (как семейство Лиспов) и модульного программирования. Отличительная черта языка — взаимосвязи, благодаря которым имена при импорте не перечисляются «внутри» каждого модуля, а задаются «снаружи» — как выражения над модулями.
Вот так выглядит промозглый исландский «Hello, World!»:
Fjölnir придумал профессор информатики Исландского университета Снорри Агнарссон ещё в восьмидесятые. И он был довольно популярен среди местных программистов. Если вам вдруг попадётся файл с расширением fjo или sma — знайте, это Fjölnir.
В сети есть целая книга с описанием языка.
Испанский Lexico: Hasta la vista, baby
Ещё один учебный язык. Lexico — объектно-ориентированный и работает на платформе .NET от Microsoft. Придумали Lexico в Laboratorios Riosur.net E U ещё в 1985 году. Цель ставили простую: надо было облегчить жизнь благородных идальго — студентов и преподавателей ООП. Интересно, что Lexico постоянно развивался, вплоть до 2010-х: новые спецификации языка выходили в 1992, 2002 и 2009 годах. Синтаксически он напоминает С# и поставляется с компилятором и простой «фирменной» IDE.
На Lexico удобно писать простые алгоритмы, логические схемы и структуры. Все объекты основаны на двух классах — количестве и характере, а вместо оператора присваивания используется ключевое слово copie.
Lexico работает только на платформе от Microsoft, поэтому пользователи Linux и других ОС в пролёте. Именно в этом главный недостаток языка и причина его невысокой популярности в реальной разработке. А вы думали, всё дело в неанглийских словах? Да ладно вам, какой серьёзный девелопер не мечтает писать страстные и кровавые программы на испанском! Да ведь их можно петь под гитару вместо серенад. Послушайте, как звучит: «Привадос! Эль обхэкто валорес ун карактер!» Ах, ну что за прекрасная музыка — мы уже на всё согласные!
Вот и пример кода на Lexico — создание графического окна:
Спецификацию языка и подробности можно посмотреть тут.
Немецкий Teuton: немец свиньёй идёт
Teuton — даже не язык в строгом смысле слова. Это немецкая реализация CEDSimply — специальной оболочки, которая позволяет создавать локализации Python. Чтобы добавить новый язык, надо составить таблицу соответствия лексики Python. Вот немец Кай Шлюер и не поленился — сделал такую таблицу. Получилась весёлая программистская шутка.
Сам автор объясняет появление немецкого Python так:
«Хотя на немецком раньше не было языков программирования, об этом мечтал, пожалуй, каждый захмелевший студент, изрядно хряпнувший пшеничного на Октоберфесте или в других злачных местах. У Teuton нет никаких особых свойств — он просто немецкий. Идею я позаимствовал у Энди Дента, который рассказал в блоге о своём космополитическом языке CEDSimply».
Эстетствующий Шлюер не просто составил банальную таблицу — нет, он ещё и включил в Teuton две формы предлога in (in и im), чтобы они грамматически правильно подстраивались под падежи и артикли немецкого языка. В общем, если вы германист, вам точно понравится.
Программирует ли на нём кто-то кроме его создателя — загадка. Но быть может, песни Rammstein и Lacrimosa — это листинги пока не известных нам программ на Teuton. Скормишь компилятору брутальную Mutter — а на выходе получишь что-нибудь доброе, лучистое и светлое, как знаменитая улыбка лейтенанта Дукалиса.
Латинский Lingua: Romana::Perligata: sic transit gloria mundi
Lingua: Romana: Perligata — модуль для Perl. Он позволяет писать Perl-программы на латыни. Создатели Lingua: Romana: Perligata всерьёз заявляют, что в английском слабая лексическая структура. То ли дело древние языки — в них и лексическая структура гораздо богаче, и на строгий порядок слов они полагаются меньше.
У латинского варианта Perl есть ряд фишек. Например, в латыни для обозначения прямых цитат не используются символы. Их заменяет глагол inquit («сказал»). Поэтому в Perligata символьная строка создаётся не кавычками, а вызовом отглагольного существительного inquementum («результат высказывания»).
Вместо классического перлового
программист на Lingua: Romana: Perligata напишет так:
Похожим способом обозначаются математические операторы, значения и переменные. Пример — таблица соответствия операторов равенства и неравенства:
Perligata | Meaning | Perl |
---|---|---|
aequalitam | "equality (of...)" | == |
aequalitas | "equalities (of...)" | eq |
praestantiam | "precedence (of...)" | < |
praestantias | "precedences (of...)" | lt |
comparitiam | "comparison (of...)" | <=> |
comparitias | "comparisons (of...)" | cmp |
А вот как на латыни реализован код перебора значений числа i:
В сети есть подробное описание синтаксиса Lingua: Romana: Perligata.
Французский GOTO++: же не манж па сис жур
У этого языка программирования франко-английский синтаксис. И да, это эзотерический язык — на нём программируют забавы ради. Однако GOTO++ — не классический esolang, а weirdlang, то есть язык, в котором странным является только синтаксис.
GOTO++ поддерживает процедурную и объектно-ориентированную парадигмы. Авторы описывают его как «язык, с которым вам будет нелегко» (в оригинале это звучит как «le langage qui se laisse pas faire»). Например, комментарии пишутся после ключевого слова GOTO, а чтобы сгруппировать математические операции, используют расположенные в обратном порядке фигурные скобки (}{). Символ языка — зелёный бородавочник с гневными красными глазами. Они намекают на его «дикий нрав».
Документация написана исключительно на языке Гюго и Бодлера, который авторы считают самым красивым в мире. Неудивительно, что на официальном сайте англоязычных программистов встречает дисклеймер: «Жаль, но вам придётся выучить французский».
Вот как выглядит «Hello, World!» на GOTO++ (сказать по правде, мы тоже мало что поняли):
Прочесть о нём больше можно тут.
Вывод
Тут должна быть мораль или какие-то итоги — но их не будет. Капитанить в стиле «английский язык победил в программировании» как-то не очень, а других выводов и нет :) А вот обещание дадим — во второй части вас будут ждать азиатские языки программирования и привет из мира Star Trek.