Когда мне в очередной раз пришлось столкнуться с 1С, я заинтересовался, существуют ли ещё какие-либо языки программирования с ключевыми словами не на английском. Что не удивительно, таких языков оказалось не так уж и мало, и как я и предполагал, большинство из них предназначено либо для обучения программированию, либо созданы энтузиастами и поэтому не предназначены для серьёзных разработок. Ниже я предлагаю вам обзор нескольких таких языков (которые мне показались наиболее интересными). Естественно, статья написана исключительно в ознакомительных целях и в ней нет выводов о том, нужны ли такие языки или нет.
1) GOTO++
Сайт: http://www.gotopp.org/
Языки: французский, английский
Начнем, пожалуй, с самого необычного языка. GOTO++ является изотерическим языком программирования, в котором ключевые слова представляют собой смесь английского и французского языков.
Язык примечателен необычным набором функций, ключевых слов и синтаксических конструкций, которые по задумке автора должны мешать написанию кода. Например:
• Для записи аргументов функции необходимо, чтобы они стояли правее левой скобки (при этом местонахождение правой скобки не имеет значение).
• Комментарии пишутся после ключевого слова GOTO.
• Для группировки математических операций вместо круглых скобок используются фигурные, причём расположенные в обратном порядке (}{).
• Целочисленные, вещественные и символьные литералы записываются с использованием спецсимволов.
I=*(3)
J=?-90,5
K=*`a'
• Функция GOTOGOTO даёт возможность перехода на одну из меток с указанной после знака вопроса вероятностью (при этом, если суммарное значение вероятности меньше 100%, то появляется шанс на переход на следующую строчку программы):
§100
GOTOPRINTDUTEXTE(); «Hello universe»
§2989
GOTOPRINTDUTEXTE(); «Hello world»
GOTO После выполнения функции GOTOGOTO программа с вероятностью 50% перейдёт на метку 2989, с вероятностью 40% на метку 100 и с вероятностью 10% на следующую строчку.
GOTOGOTO() %2989 ?50 %100 ?40
GOTOPRINTDUTEXTE(); «Hello exit»
Более подробно ознакомиться с языком вы можете в официальной документации (на французском): http://www.gotopp.org//doc/html/index.html
Пример программы «99 bottles of beer»:
GOTO 99 bottles of beer
niveaugourou 0
GOTO Vars
msgBtle = « bottle»
msgWall = « of beer on the wall»
msgBeer = « of beer.;n»
msgTake = «Take one down, pass it around, »
newLine = «;n;n»
msgEnd = «Go to the store and buy some more, »
msgNoN = «No more»
msgNon = «no more»
plural = *`s'
beers = *(99)GOTO Loop
§1
GOTOPRINTDUTEXTE() &msgWall &plural &msgBtle &beers
GOTOPRINTDUTEXTE() &msgBeer &plural &msgBtle &beers *` ' *`,'
GOTOPRINTDUTEXTE() &msgTake
beers = &beers ++ *(-1)
AUTOGOTOZ } &beers eg *(1) {
plural = «»
AC
AUTOGOTOZ } &beers eg *(0) {
beers = &msgNon
plural = *`s'
AC
GOTOPRINTDUTEXTE() &newLine *`.' &msgWall &plural &msgBtle &beers
GOTONONNULPOURLESNULS %1 &beersGOTO Last verses of the song
GOTOPRINTDUTEXTE() &msgWall &plural &msgBtle &msgNoN
GOTOPRINTDUTEXTE() &msgBeer &plural &msgBtle &msgNon *` ' *`,'
GOTOPRINTDUTEXTE() &msgEnd
GOTOPRINTDUTEXTE() &newLine *`.' &msgWall &plural &msgBtle «99»
2) Lexico
Сайт: lexico.mobi
Язык: испанский
Обучающий объектно-ориентированный язык программирования, созданный на платформе .NET Framework.
В комплекте с компилятором идёт простенькая IDE.
Синтаксически язык похож на C#, но является более многословным. Из особенностей можно выделить необходимость использования ключевого слова copie вместо оператора присваивания, а также то, что объект автоматически инстанцируется при объявлении пременной, если не указать ключевое слово no_crear.
Оператор ветвления в языке имеет следующий вид:
es <условие>?
si:
{
<выражение_1_если_условие_истинно>
}
no:
{
<выражение_2_если_условие_ложно>
}
Пример ввода и вывода данных:
tarea
{
los objetos valor1, valor2, resultado son cantidades //объявляем переменные типа integer
entre valor1, valor2 //ожидание ввода данных в консоли
copie valor1*valor2 en resultadoes resultado > 15?
si:
{
muestre resultado, " > 15"
}
no:
{
muestre resultado, " <= 15"
}
}
Пример с созданием графического окна:
clase FormTest derivada_de system.windows.forms.form
{
privados:
el objeto valor es un caracter //private поле типа stringmensajeS:
FormTest
{
copie «FormTest» en valor
copie valor en FormTest.text
}
}
3) Mama
Сайт: http://en.eytam.com/mama/
Языки: иврит, идиш, английский
Обучающий язык программирования и среда разработки, предназначенная для создания 3D анимаций и игр. Сама среда платная, но в комплекте идёт бесплатная версия редактора, которая не позволяет работать с 3D, но с помощью которой можно писать простые программы (в том числе и графические).
В платной версии редактора вы можете писать сценарии двумя способами:
• Средствами графического программирования (наподобие как в LabVIEW), путём перетаскивания «плиток» с инструкциями в область редактора.
• При включении параметра enableFreeScripting, становится возможным писать код программы в текстовой форме.
Пример программы с созданием графического окна и рисованием на нём:
На иврите
מחלקה תכנית_ציור יורש חלון
תגובות ללחיצה על העכבר #
מתודה תקנית: תגובה לאירוע לחיצה על מקש העכבר # (x, y)מתודה עכבר_נלחץ
צב.מקום(x, y)
מתודה תקנית: תגובה לאירוע גרירת העכבר # (x, y)מתודה עכבר_נגרר
צב.אל(x, y)הגדר ת=תכנית_ציור() # יצירת עצם מהמחלקה של התכנית — גורם ליצירת חלון ולתחילת תגובה לאירועי העכבר
Попробуйте найти ошибку в данной программе
На идише
קלאס צייכענונג_אפ ינכעראץ פענצטער
שעפן מויז געשעענישן#
מעטאד מויז_געדריקט(אקס, ווי) #נארמאל מויז געדריקט אופן
טשערעפאכע.שטעלע(אקס, ווי) #טשערעפאכע רעפריזענץ דעם איצטיקן פעדער ארטמעטאד מויז_דראגד(אקס, ווי) #נארמאל מויז דראגד אופן
טשערעפאכע.צו(אקס, ווי) #ציען שורה פון א פאזיציע צו די געגעבן אייןדעפינירן אפ=צייכענונג_אפ() #אנהייבן די אפלאקיישאן — שאפן ניו אפלאקיישאן כייפעץ
На английском
class DrawingApp inherits Window
# handle mouse events
method mouse_pressed(x, y) # standard mouse pressed method
turtle.position(x, y) # turtle represents the current pen locationmethod mouse_dragged(x, y) # standard mouse dragged method
turtle.to(x, y) # draw line from current position to the given onedefine app=DrawingApp() # start the application — create new Application object
4) Robomind
Сайт: www.robomind.net/
Языки: арабский, болгарский, каталанский, чешский, немецкий, греческий, английский, испанский, французский, венгерский, индонезийский, итальянский, древнееврейский, корейский, нидерландский, польский, португальский, русский, словацкий, словенский, шведский, тайский, турецкий, украинский, китайский
Среда для обучения программированию, в которой нужно управлять исполнителем в лице робота. Робот умеет совершать следующие базовые действия: двигаться, рисовать, смотреть, перетаскивать маяки, а также подбрасывать монетку. В языке доступны основные базовые конструкции, такие как циклы, ветвления и процедуры.
Пример программы, в которой робот двигается вдоль белой дорожки:
На венгерском
jobbra
előre(8)ismétel
{
ha(előlFehér){
előre(1)
}
máskép ha(jobbraFehér){
jobbra
}
máskép ha(balraFehér){
balra
}
máskép ha(vanElőlAkadály){
vége
}
}
На шведском
höger
framåt(8)uprepa
{
om(framåtÄrVit){
framåt(1)
}
annars om(högerÄrVit){
höger
}
annars om(vänsterÄrVit){
vänster
}
annars om(framåtÄrHinder){
slut
}
}
На русском
направо
вперед(8)повтор
{
если(впередиБелый){
вперед(1)
}
иначе если(справаБелый){
направо
}
иначе если(слеваБелый){
налево
}
иначе если(впередиПрепятствие){
закончить
}
}
5) Fjölnir
Сайт: https://notendur.hi.is//~snorri/fjolnirdev
Язык: исландский
Язык программирования, разработанный профессором информатики Исландского университета Снорри Агнарссоном, и пик популярности которого пришёлся на 1980-е годы.
Hello world:
;; Hello world in Fjölnir
«hello» < main
{
main ->
stef(;)
stofn
skrifastreng(;«Hello, world!»),
stofnlok
}
*
«GRUNNUR»
;
Язык примечателен своей работой с модулями. В других языках, как правило, модули подключаются перечислением их имён. В Fjölnir пакеты подключаются с помощью алгебраических операций.
В примере ниже («99 bottles of beer») модуль из базовой библиотеки GRUNNUR включается в безымянный модуль, содержащий функцию bottles, а тот в свою очередь включается в главный модуль программы.
«bottles» < main
{
main ->
stef(;)
staðvær i,b
stofn
fyrir( i := 100; i > 1; i := i-1) lykkja
bottles(;i-1),
skrifastreng(;" on the wall, "),
bottles(;i-1),
skrifastreng(;",ntake one down, pass it around, n"),
bottles(;i-2),
skrifastreng(;" on the wall.n"),
lykkjulok,
stofnlok
}
*
{
bottles ->
stef(;n)
stofn
val n úr
kostur 0 þá
skrifastreng(;«no more bottles»),
kostur 1 þá
skrifastreng(;«1 bottle of beer»),
annars
skrifa(;n),
skrifastreng(;" bottles of beer"),
vallok
stofnlok
}
*
«GRUNNUR»
;
Подробнее по данной теме вы можете почитать здесь: http://morpho.cs.hi.is/papers/p117-agnarsson.pdf
Ещё один пример программы, производящей расчёт числа Эйлера через разложение Тэйлора, с кратким описанием:
;; Автор: Snorri Agnarsson
«e» < aðal
{
aðal ->
;; перечисление входных параметров
stef(;)
;; объявление переменных
staðvær n,liður,summa,i
;; начало функции
stofn
;; вывод строки на экран
skrifastreng(;«Программа выводит число Эйлера с указанным числом знаков после запятой.»),
;; разрыв строки
nÿlína(;),
skrifastreng(;«Сколько вывести знаков после запятой? „),
;; считывание значения с клавиатуры
n:=lesa(;),
liður:=10 ^ (6+n),
summa:=0,
i:=2,;; цикл с расчётом значения
meðan liður > 0 lykkja
liður:=liður/i,
summa:=summa+liður,
i:=i+1,
lykkjulok,skrifastreng(;“e=2.»),
;; вывод числа на экран
skrifafjöl(;(summa/1000/100+5)/10),;; конец функции
stofnlok
}
*
«storfjol»
*
«grunnur2»
;
6) Hindi.Net
Сайт: http://www.sktnetwork.com/portfolio/hindi-programming-language
Язык: хинди
Язык программирования с ключевыми словами на хинди. Компилируется в MSIL, а значит, требует наличия .Net Framework. Поддерживается создание только консольных приложений.
Пример:
कार्य खाली मुख्य()
छोड़ें комментарийछोड़ें अंक – переменная типа number
अंक अ
अंक पछोड़ें पढें – ожидание ввода данных в консоли
पढें अ
पढें पछोड़ें अगर – if; वरना – else; खत्म अगर – end if
अगर {अ*प > 20}
लिखें "> 20"
वरना
लिखें "<= 20"
खत्म अगरछोड़ें पंक्ति – переменная типа string
पंक्ति ब
पढें बखत्म कार्य
7) Farsi.NET
Сайт: https://skydrive.live.com/?cid=3753598452050A56&id=3753598452050A56!270
Язык: Персидский
Ещё один язык, написанный под .Net, но с ключевыми словами на персидском языке. Его особенностью является то, что он фактически транслируется в C# и данный сгенерированный код можно посмотреть на специальной вкладке в IDE поставляемой вместе с языком. По этой причине в одном проекте могут быть как классы, написанные на Farsi.NET, так и классы на C#.
8) Scratch
Сайт: http://scratch.mit.edu/
Языки: более 60
Обучающий язык программирования, созданный в MIT Media Lab и предназначенный для создания простых мультфильмов и игр. Является рекордсменом по числу локализаций. Программы на Scratch строятся, как и в Mama, из графических блоков. Вторая версия редактора (сейчас в стадии beta) написана на Adobe Flash.
Основные возможности:
• Работа с растровой графикой
• Работа с векторной графикой (со 2 версии)
• Работа со звуками.
• Поддержка событий.
• Существует возможность публиковать свои работы на специальной страничке: beta.scratch.mit.edu/explore/projects/all/
На этом, пожалуй, я закончу данный обзор. Если вас вдруг заинтересовала эта тема, список других языков вы можете посмотреть по ссылке: http://en.wikipedia.org/wiki/Non-English-based_programming_languages
Автор: bmforce