10 апреля 2013

«Национальные» языки программирования

Программирование
Из песочницы
Когда мне в очередной раз пришлось столкнуться с 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 &beers

GOTO 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 resultado

es 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 поле типа string

mensajeS:
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 location

method mouse_dragged(x, y) # standard mouse dragged method
turtle.to(x, y) # draw line from current position to the given one

define 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
Теги:GOTO++MamaRobomindLexicoHindi.NetFarsi.NETFjölnirScratch
Хабы: Программирование
+105
64,5k 120
Комментарии 54
Лучшие публикации за сутки

Минуточку внимания

Разместить