
Привет, Хабр! Меня зовут Юра, я работаю тимлидом проекта Waterbase в KION, а в свободное время люблю читать, что нового происходит в мире ИТ и какие подходы к программированию есть в других странах. Сегодня хочу поговорить о ЯП с синтаксисом не на английском — здесь нет команд вроде if, print и while, к которым мы все так привыкли. Авторы стремились либо упростить вход в ИТ для носителей своего языка, либо переосмыслить само представление о ЯП. Ниже — пять таких проектов: LSE, VisuAlg, Aheui, Qalb и Kalaam. Погнали!
LSE (Langage Symbolique d’Enseignement): французский привет из прошлого

В конце 1970-х, когда компьютеры только начинали появляться в школах, инженеры из Supélec разработали LSE — «Символический язык обучения». Его создали для того, чтобы языковой барьер не мешал начинающим программистам из Франции осваивать алгоритмы и создавать приложения. Структурно язык напоминал BASIC, но его синтаксис был полностью на французском: SI
вместо IF
, ALORS
— THEN
, SINON
— ELSE
.
Команды, такие как AFFICHER
(показать) и LIRE
(читать), делали язык понятным для франкоязычных школьников. Благодаря строгой логике и относительной простоте LSE получил распространение в образовательных учреждениях, включая систему Télématique и терминалы Minitel.
Вот пример кода — программа запрашивает у пользователя две строки и проверяет, являются ли они анаграммами:
1 CHAINE A,B,BP
5 FAIRE
10 AFFICHER 'A = ' ;LIRE A ; SI A=’’ ALORS FINI
11 AFFICHER 'B = ' ;LIRE B ; BP ← B
12
15 R SI LGR(A) # LGR(B) ALORS .FAUX. SINON &ANAG(A,B)
20 SI R ALORS AFFICHER A, 'EST ANAGRAMME DE ',BP
21 SINON AFFICHER A, 'N’’EST PAS ANAGRAMME DE ',BP
25 BOUCLER
30 TERMINER
50 FONCTION &ANAG(U,V) LOCAL J {lgr(u)=lgr(v)}
51 SI U=' ' ALORS RESULTAT .VRAI.
52 SI J = 0 ALORS RESULTAT .FAUX.
54 RESULTAT &ANAG(SCH(U,2, ' '),MCH(V,J,1, ' '))
Проект стал довольно популярным (для своего времени, конечно). LSE активно применялся в школах Франции, Бельгии и франкоязычной части Канады, включая Квебек. Это, к слову, один из первых языков, адаптированных под родной язык учащихся. Однако с распространением более универсальных и мощных языков, вроде Pascal и C, LSE постепенно утратил значение. Сегодня он считается скорее музейным экспонатом: у него нет официального сайта или активного сообщества, но его вклад в развитие ИТ-образования во франкоязычном мире остается значимым.
VisuAlg: бразильский проводник в мир кода

В 2002 году бразильский преподаватель Антонио Карлос Морейра представил VisuAlg — язык, который должен был помочь студентам сосредоточиться на алгоритмах, а не на английской грамматике. Это не полноценный ЯП для разработки, а псевдокод на португальском, превращенный в рабочую среду. Здесь escreva заменяет print, leia — read, а se — if. VisuAlg ориентирован на обучение: он поддерживает базовые конструкции — циклы, условия, переменные — и поставляется с интерпретатором и отладчиком, что позволяет сразу видеть результат работы кода. Его сила в простоте и доступности, особенно для начинающих.
inicio
inteiro n
escreva("Digite um número: ")
leia(n)
se (n % 2 = 0) entao
escreva("O número é par!")
senao
escreva("O número é ímpar!")
fimse
fim
VisuAlg остается востребованным в Бразилии: версия 3.0.7, вышедшая в 2019 году, активно используется в школах и колледжах. Это не конкурент мировым языкам, но в образовательной нише он сохраняет свою актуальность.
Aheui: корейский эксперимент в программировании
В 2006 году корейский разработчик Минхван Чой (Minhwan Choi) представил Aheui — эзотерический ЯП, в основе которого лежит алфавит хангыль корейского языка. У названия Aheui
(아희) нет конкретного перевода, это абстрактное слово.
В Aheui каждая команда — символ хангыля. Причем разные части слога (начальная согласная, гласная и конечная согласная) определяют:
тип команды (например, арифметика, ввод/вывод);
направление выполнения (вверх, вниз, влево, вправо);
структуру управления стеком.
Это делает язык двумерным — как и в другом эзоязыке, Befunge, выполнение кода может двигаться не только построчно, но и по любому направлению в таблице символов. У Aheui всего 26 стеков (по числу начальных согласных в хангыле) и одна очередь. Такая система хранения данных делает язык мощным, но весьма сложным для понимания. Особенно для тех, кто не владеет корейским.
К счастью, мучить себя не придется: на практике Aheui не используется для реальных задач — это эксперимент и художественный проект, созданный, чтобы показать, как можно выразить алгоритмы через структуру родного языка и визуальную форму текста.
Пример кода для вывода Hello, World!:
밤밣따빠밣밟따뿌
빠맣파빨받밤뚜뭏
돋밬탕빠맣붏두붇
볻뫃박발뚷투뭏붖
뫃도뫃희멓뭏뭏붘
뫃봌토범더벌뿌뚜
뽑뽀멓멓더벓뻐뚠
뽀덩벐멓뻐덕더벅
Обновления редки, язык не особо развивается. Однако интерпретаторы доступны, и этот ЯП продолжает вдохновлять тех, кто видит в коде больше, чем утилитарность.
Qalb: арабский голос в цифровом мире
В 2012 году ливанский разработчик Рэмси Нассер (Ramsey Nasser) представил язык программирования Qalb — в переводе с арабского «сердце». Это один из первых ЯП, где используется арабский синтаксис и направление письма справа налево. Проект появился как попытка показать, что программирование не обязательно должно быть привязано к английскому — код тоже может отражать особенности родной культуры и языка. А вот пример Неllo, World! на этом языке:

У Qalb простой (для носителей языка, конечно) синтаксис: например, команда قول
означает «скажи». ЯП не создавался для разработки сложных приложений — это скорее эксперимент, нацеленный на обучение и привлечение внимания к языковому разнообразию в IT. С момента последнего апдейта прошло много лет, проект почти не обновляется — новейший коммит сделан в 2013 году. Так что о дальнейшем развитии говорить пока не приходится. Но ему и не нужно развиваться, поскольку Qalb экспериментальный проект, концепция Его не применяют в промышленности, но он живет как интересный опыт.
Вот еще один пример участка кода:

И репозиторий на GitHub, он до сих пор доступен.
Kalaam: хинди для нового поколения

В 2019 году индийский разработчик Адитья Бхаргава выпустил Kalaam — язык на хинди, где kalaam означает «слова» или «речь». Его цель — открыть программирование для миллионов индийцев, не владеющих английским. Чтобы обойти сложности с клавиатурой (не у каждого есть такая на хинди), синтаксис использует транслитерацию латиницей.
Что касается команд, то это likho вместо print, jab tak вместо while, agar заменяет if и т.п. Kalaam прост и ориентирован на обучение, помогает новичкам освоить базовые концепции без языковых преград.
shuru
likho("1 se 5 tak gino:")
i = 1
jab tak (i <= 5) {
likho(i)
i = i + 1
}
khatam
Kalaam — молодой язык, который активно развивается. Его задействуют в образовательных проектах в Индии. ЯП позволяет сделать программирование ближе к местным культурным традициям. Так что словосочетание “индийский код” заиграло новыми красками.
На сегодня все. Если у вас есть другие примеры языков не на английском, пишите в комментариях — будем обсуждать!