- PVSM.RU - https://www.pvsm.ru -

Привет! Меня зовут Юра, я работаю тимлидом проекта Waterbase в KION, а в свободное время люблю читать, что нового происходит в мире ИТ и какие подходы к программированию есть в других странах. Сегодня хочу поговорить о ЯП с синтаксисом не на английском — здесь нет команд вроде if, print и while, к которым мы все так привыкли. Авторы стремились либо упростить вход в ИТ для носителей своего языка, либо переосмыслить само представление о ЯП. Ниже — пять таких проектов: LSE, VisuAlg, Aheui, Qalb и Kalaam. Погнали!
В конце 1970-х, когда компьютеры только начинали появляться в школах, инженеры из Supélec разработали [2] LSE — «Символический язык обучения». Его создали для того, чтобы языковой барьер не мешал начинающим программистам из Франции осваивать алгоритмы и создавать приложения. Структурно язык напоминал BASIC, но его синтаксис был полностью на французском: SI вместо IF, ALORS — THEN, SINON — ELSE.
Команды, такие как AFFICHER (показать) и LIRE (читать), делали язык понятным для франкоязычных школьников. Благодаря строгой логике и относительной простоте LSE получил распространение в образовательных учреждениях, включая систему Télématique и терминалы Minitel.
Вот пример [3] кода — программа запрашивает у пользователя две строки и проверяет, являются ли они анаграммами:
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 постепенно утратил значение. Сегодня он считается скорее музейным экспонатом: у него нет официального сайта или активного сообщества, но его вклад в развитие ИТ-образования во франкоязычном мире остается значимым.
В 2002 году бразильский преподаватель Антонио Карлос Морейра представил VisuAlg — язык, который должен был помочь студентам сосредоточиться на алгоритмах, а не на английской грамматике. Это не полноценный ЯП для разработки, а псевдокод [5] на португальском, превращенный в рабочую среду. Здесь 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 году, активно используется [6] в школах и колледжах. Это не конкурент мировым языкам, но в образовательной нише он сохраняет свою актуальность.
В 2006 году корейский разработчик Минхван Чой (Minhwan Choi) представил Aheui — эзотерический ЯП, в основе которого лежит алфавит хангыль [7] корейского языка. У названия Aheui (아희) нет конкретного перевода, это абстрактное слово.
В Aheui каждая команда — символ хангыля. Причем разные части слога (начальная согласная, гласная и конечная согласная) определяют:
тип команды (например, арифметика, ввод/вывод);
направление выполнения (вверх, вниз, влево, вправо);
структуру управления стеком.
Это делает язык двумерным — как и в другом эзоязыке, Befunge [8], выполнение кода может двигаться не только построчно, но и по любому направлению в таблице символов. У Aheui всего 26 стеков (по числу начальных согласных в хангыле) и одна очередь. Такая система хранения данных делает язык мощным, но весьма сложным для понимания. Особенно для тех, кто не владеет корейским.
К счастью, мучить себя не придется: на практике Aheui не используется для реальных задач — это эксперимент и художественный проект, созданный, чтобы показать, как можно выразить алгоритмы через структуру родного языка и визуальную форму текста.
Пример кода для вывода Hello, World!:
밤밣따빠밣밟따뿌
빠맣파빨받밤뚜뭏
돋밬탕빠맣붏두붇
볻뫃박발뚷투뭏붖
뫃도뫃희멓뭏뭏붘
뫃봌토범더벌뿌뚜
뽑뽀멓멓더벓뻐뚠
뽀덩벐멓뻐덕더벅
Обновления редки [9], язык не особо развивается. Однако интерпретаторы доступны, и этот ЯП продолжает вдохновлять тех, кто видит в коде больше, чем утилитарность.
В 2012 году ливанский разработчик Рэмси Нассер (Ramsey Nasser) представил язык программирования Qalb — в переводе с арабского «сердце». Это один из первых ЯП, где используется арабский синтаксис и направление письма справа налево. Проект появился как попытка показать, что программирование не обязательно должно быть привязано к английскому — код тоже может отражать особенности родной культуры и языка. А вот пример Неllo, World! на этом языке:

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

И репозиторий на GitHub, он до сих пор доступен [11].
В 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 [13] — молодой язык, который активно развивается. Его задействуют в образовательных проектах в Индии. ЯП позволяет сделать программирование ближе к местным культурным традициям. Так что словосочетание “индийский код” заиграло новыми красками.
На сегодня все. Если у вас есть другие примеры языков не на английском, пишите в комментариях — будем обсуждать!
Автор: Ust1no
Источник [14]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/razrabotka/416184
Ссылки в тексте:
[1] (источник): http://www.ti99.com/exelvision/website/index.php?page=le-lse
[2] разработали: https://www.epi.asso.fr/revue/06/b06p010.htm
[3] Вот пример: https://fr.wikipedia.org/wiki/LSE_(langage)
[4] (источник): https://sourceforge.net/projects/visualg30/
[5] псевдокод: https://ru.wikipedia.org/wiki/%D0%9F%D1%81%D0%B5%D0%B2%D0%B4%D0%BE%D0%BA%D0%BE%D0%B4_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2)
[6] используется: https://ufr.edu.br/cursos/geografia/wp-content/uploads/sites/11/2024/11/PPC-Geografia-2024-2031-Aprovado-pelo-CONSEPE.pdf
[7] алфавит хангыль: https://ru.wikipedia.org/wiki/%D0%A5%D0%B0%D0%BD%D0%B3%D1%8B%D0%BB%D1%8C
[8] Befunge: https://ru.wikipedia.org/wiki/Befunge
[9] Обновления редки: https://github.com/aheui
[10] пример: https://nas.sr/%D9%82%D9%84%D8%A8/
[11] на GitHub, он до сих пор доступен: https://github.com/nasser/---
[12] Источник: https://www.reddit.com/r/programming/comments/hanspl/kalaam_a_programming_language_in_hindi/
[13] Kalaam: https://github.com/Kalaam-Programming-Language/Kalaam
[14] Источник: https://habr.com/ru/companies/ru_mts/articles/898646/?utm_source=habrahabr&utm_medium=rss&utm_campaign=898646
Нажмите здесь для печати.