📜 ⬆️ ⬇️

"National" programming languages

When I once again had to deal with 1C, I became interested in whether there are any other programming languages ​​with keywords not in English. What is not surprising, there were not so many such languages, and as I expected, most of them are intended either for teaching programming, or created by enthusiasts and therefore are not intended for serious development. Below I offer you an overview of several of these languages ​​(which seemed to me the most interesting). Naturally, the article is written solely for informational purposes and there are no conclusions about whether such languages ​​are needed or not.

1) GOTO ++

Website: http://www.gotopp.org/
Languages: French, English

Let's start with the most unusual language. GOTO ++ is an esoteric programming language in which keywords are a mixture of English and French.
The language is notable for an unusual set of functions, keywords and syntactic constructions that, according to the author's idea, should interfere with writing code. For example:
')
• To write function arguments, it is necessary that they stand to the right of the left bracket (the location of the right bracket does not matter).
• Comments are written after the keyword GOTO.
• For grouping mathematical operations, instead of round brackets, curly ones are used, and those located in the reverse order (} {).
• Integer, real, and character literals are written using special characters.
I = * (3)
J =? - 90,5
K = * `a '
• The GOTOGOTO function makes it possible to switch to one of the labels with the probability indicated after the question mark (in this case, if the total probability value is less than 100%, then there is a chance to move to the next line of the program):
§ 100
GOTOPRINTDUTEXTE (); "Hello universe"
§ 2989
GOTOPRINTDUTEXTE (); "Hello world"
GOTO After executing the GOTOGOTO function, the program with a 50% probability will go to the 2989 mark, with a 40% probability to the 100 mark and with a 10% probability to the next line.
GOTOGOTO ()% 2989 ? 50 % 100 ? 40
GOTOPRINTDUTEXTE (); "Hello exit"


You can learn more about the language in the official documentation (in French): http://www.gotopp.org/doc/html/index.html

Example of the program “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

Website: lexico.mobi
Language: Spanish

A learning object-oriented programming language created on the .NET Framework.

Included with the compiler is unpretentious IDE.
Syntactically, the language is similar to C #, but is more verbose. Among the features, it is possible to highlight the need to use the copie keyword instead of the assignment operator, as well as the fact that the object is automatically instantiated when declaring a variable, unless the no_crear keyword is specified.
The branch operator in the language has the following form:

es <condition>?
si:
{
<expression_1_if_signation_ true>
}
no:
{
<expression_2_if_condition_complicated>
}



Example of data input and output:
tarea
{
los objetos valor1, valor2, resultado son cantidades // declare integer variables
entre valor1, valor2 // waiting for data entry in the console
copie valor1 * valor2 en resultado

es resultado> 15 ?
si :
{
muestre resultado, "> 15"
}
no :
{
muestre resultado, "<= 15"
}
}


An example of creating a graphic window:
clase FormTest derivada_de system.windows.forms.form
{
privados :
el objeto valor es un caracter // private string field

mensajeS :
Formtest
{
copie "FormTest" en valor
copie valor en FormTest.text
}
}

3) Mama

Website: http://en.eytam.com/mama/
Languages: Hebrew, Yiddish, English

A learning programming language and development environment for creating 3D animations and games. The medium itself is paid, but it comes with a free version of the editor, which does not allow working with 3D, but with which you can write simple programs (including graphics programs).





In the paid version of the editor, you can write scripts in two ways:
• By means of graphical programming (like in LabVIEW), by dragging the “tiles” with instructions into the editor area.
• When enableFreeScripting is enabled, it becomes possible to write program code in text form.

An example program with creating a graphic window and drawing on it:

In Hebrew
מחלקה תכנית_ציור יורש חלון
תגובות ללחיצה על העכבר #
מתודה תקנית: תגובה לאירוע לחיצה על מקש העכבר # (x, y) מתודה עכבר_נלחץ
צב.מקום (x, y)
מתודה תקנית: תגובה לאירוע גרירת העכבר # (x, y) מתודה עכבר_נגר
צב.אל (x, y)

הגדר ת = תכנית_ציור () # יצירת עצם מהמחלקה של התכנית - גורם ליצירת חלון ולתחילת תגובה לאירועי העכבר

Try to find a bug in this program.

Yiddish
לאס ייכענונג_אפ ינכעראץ פענצטער
שעפן מויז געשעענישן #
מעטאד מויז_געדריקט (אקס, ווי) # נארמאל מויז געדריקט אופן
טשערעפאכע.שטעלע (אקס, ווי) # טשערעפאכע רעפריזענץ דעם איצטיקן פעדער ארט

מעטאד מויז_דראגד (אקס, ווי) # נארמאל מויז דראגד אופן
טשערעפאכע.צו (אקס, ווי) # יען שורה ון א פאזיציע צו די געגעבן איין

דעפינירן אפ = צייכענונג_אפ () # אנהייבן די אפלאקיישאן - שאפן ניו אפלאקיישאן כייפעץ

In English
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

define app = DrawingApp () # start the application - create new application object





4) Robomind

Website: www.robomind.net/
Languages: Arabic, Bulgarian, Catalan, Czech, German, Greek, English, Spanish, French, Hungarian, Indonesian, Italian, Hebrew, Korean, Dutch, Polish, Portuguese, Russian, Slovak, Slovenian, Swedish, Thai, Turkish, Ukrainian, Chinese

Environment for learning programming, in which you need to control the performer in the face of the robot. The robot is able to perform the following basic actions: move, draw, watch, drag beacons, and also toss a coin. Basic basic constructs such as loops, branches and procedures are available in the language.



An example of a program in which the robot moves along the white path:

In Hungarian
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
}
}

In swedish
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
}
}

In Russian
right
forward (8)

repeat
{
if (ahead White) {
forward (1)
}
otherwise if (on the right is White) {
right
}
otherwise, if (leftWhite) {
left
}
otherwise, if (in front of the obstacle) {
to finish
}
}

5) Fjölnir

Website: https://notendur.hi.is//~snorri/fjolnirdev
Language: Icelandic

A programming language developed by the computer science professor at the University of Iceland, Snorri Agnarsson, and which reached its peak in the 1980s.

Hello world:
;; Hello world in Fjölnir
"Hello" <main
{
main ->
stef (;)
stofn
skrifastreng (; "Hello, world!" ),
stofnlok
}
*
"GRUNNUR"
;

Language is notable for its work with modules. In other languages, as a rule, modules are connected by listing their names. In Fjölnir, packages are connected using algebraic operations.
In the example below (“99 bottles of beer”) the module from the GRUNNUR base library is included in the nameless module containing the bottles function, which in turn is included in the main module of the program.
"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"
;

You can read more on this topic here: http://morpho.cs.hi.is/papers/p117-agnarsson.pdf

Another example of a program that calculates the Euler number through Taylor decomposition, with a brief description:
;; By Snorri Agnarsson
"E" <aðal
{
aðal ->
;; enumeration of input parameters
stef (;)
;; variable declaration
staðvær n, liður, summa, i
;; function start
stofn
;; display line
skrifastreng (; "The program displays the Euler number with the specified number of decimal places." ),
;; line break
nÿlína (;),
skrifastreng (; "How much to display characters after the comma?" ),
;; read value from keyboard
n: = lesa (;),
liður: = 10 ^ ( 6 + n),
summa: = 0 ,
i: = 2 ,

;; cycle with value
meðan liður> 0 lykkja
liður: = liður / i,
summa: = summa + liður,
i: = i + 1 ,
lykkjulok

skrifastreng (; “e = 2." ),
;; output number on the screen
skrifafjöl (; (summa / 1000/100 + 5 ) / 10 ),

;; end of function
stofnlok
}
*
"Storfjol"
*
"Grunnur2"
;

6) Hindi.Net

Website: http://www.sktnetwork.com/portfolio/hindi-programming-language
Hindi



A programming language with keywords in Hindi. Compiled into MSIL, which means it requires the .Net Framework. Only console applications can be created.

Example:
कार्य खाली मुख्य ()
छोड़ें comment

छोड़ें अंक - number type variable
अंक
अंक

छोड़ें पढें - waiting for data entry in the console
पढें
पढें

छोड़ें अगर - if; वरना - else; खत्म अगर - end if
अगर {अ * प> 20 }
लिखें "> 20"
वरना
लिखें "<= 20"
खत्म अगर

छोड़ें पंक्ति - string variable
पंक्ति
पढें

खत्म कार्य

7) Farsi.NET

Website: https://skydrive.live.com/?cid=3753598452050A56&id=3753598452050A56!270
Language: Persian

Another language written under .Net, but with keywords in Persian. Its peculiarity is that it is actually translated to C # and this generated code can be viewed on a special tab in the IDE that comes with the language. For this reason, in one project there can be both classes written in Farsi.NET and classes in C #.





8) Scratch

Website: http://scratch.mit.edu/
Languages: more than 60

A learning programming language created by MIT Media Lab for creating simple cartoons and games. Is a record holder in the number of localizations. Programs on Scratch are built, as in Mama, from graphic blocks. The second version of the editor (now in beta) is written in Adobe Flash.



Key features:
• Work with raster graphics
• Work with vector graphics (from version 2)
• Work with sounds.
• Event support.
• It is possible to publish your work on a special page: beta.scratch.mit.edu/explore/projects/all



On this, perhaps, I finish this review. If you are interested in this topic, you can see a list of other languages ​​at the link: http://en.wikipedia.org/wiki/Non-English-based_programming_languages

Source: https://habr.com/ru/post/176243/


All Articles