Non-English Programming Languages?
jjohnson asks: "As a coder I've been exposed to a lot of programming languages, big and small, and they're all in (pseudo) English, reflecting their invention and development in English speaking countries (or to gain traction in English speaking countries, such as Ruby). Of course, there's no reason a programming language couldn't be developed in Russian, using a cyrillic character set; or Chinese, using kanji; or Japanese, using hiragana. All three of those nations have big/advanced enough developer communities to justify the development of native-tongue programming languages, which have the obvious benefit of not requiring their developers to learn/code in a foreign language. What non-English programming languages exist, and how do they compare?"
10 FOR I = 1 to 10
20 PRINT "BORK!"
30 NEXT I
Don't blame Durga. I voted for Centauri.
Thank you google for your infinite wisdom:i sh_based_programming_languages
http://www.sciencedaily.com/encyclopedia/non_engl
Physics makes the world go 'round.
original 'ask slashdot' article'
Any language which doesn't define a core of keywords, but instead just has functions that can be overridden... and which supports unicode. Variants of lisp anf forth qualify, off the top of my head. Of course, languages with only a few keywords, like java, are amenable to trivial pre-processing of those keywords, and also support unicode right out of the box.
I've had this sig for three days.
Klingon Var'aq.
Example:
Michael.
Linux : Mac
brainfuck though, granted, it's still in ASCII.
10 PRINT "BORK!"
20 GOTO 10
See - 1/3 reduction in code!
Ah, apparently the submitter hasn't heard of the horror that is (was, I hope) translated VBA. If you had a Dutch version of Office, your Visual Basic was Dutch as well. That is, the language itself. A FOR..NEXT loop was something like a VAN..NAAR loop (I have only seen this stuff, not coded in it).
I can't find the right Google keywords at the moment to find an example, but it was horrible, and of course totally incompatible with other versions...
I believe posters are recognized by their sig. So I made one.
As far as I know there are none.
The reason is pretty simple. English is probably the most commonly spoken language for business and science on the earth today. Before someone says that there are x billion Chinese yes they are but there are many dialects of Chinese and also of Hindi. Also a very large percentage of the Computer industry is centered in the US. I just do not think that there is any other language that has so many educated speakers. If you want to be an Airline pilot in any country in the world you must speak english. Yes a Russian airline pilot landing in Germany will speak to the towner in english. Or back in the 1800s French was the language of Science. For now it is English that is more or less the universal language.
See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
With a bit of Lex and Yacc, it should be pretty simple to come up with a C++ variant in any given language. When I was in college, some friends of mine and I wrote a compiler in ebonics, called Eubonicode. Granted, I don't know how well lex/yacc cover non-ascii character sets, but it wouldn't be hard to whip up a compiler for a French, Spanish, or German version of C++.
... its not a valid reduction if the effect isn't the same ...
; -- the corruption of government starts with its secrets. a truly free people keep no secrets. --
I am sure there are or were some non-english programming languages (and even as a native english speaker I've thought about this problem myself). But, and its a big but, right now using english gets you access to the most diverse and largest audience (except maybe mandorin, but even there your talking basically the chinese (mandorin is not generally taught as a second language as widely as english).
:)
With the internet and the "global economy" it makes NO sence to have a localized language, unless your a proprietary developer that doesn't want you code to have the longest life it could
You may think I am just saying this because I speak english so of course I think english should be the most used, but I honestly can tell you I would be quite happy to learn another language as best I could if english weren't the primary communication language for programming (and most anything really). I would obviously be severely inconvienenced, but no more so that maybe people whose software I use now.
Maybe the best choice would be to have translatable keywords for a language, because the syntax really doesn't match english in all cases anyway. Of course translatable keywords would become a nightmare quickly due to the severe limitation on variable names etc, for instance how could you ever choose a word and be sure the language wouldn't end up need that for "if" in some language you never heard of?
As far as different character sets, this becomes a non-issue as all software moves towards unicode and UTF-8 (or equivalent) encoding. Once that happens you can for get about worring about character sets (and its happening fast).
By altering the code as he has, he has increased the output in a rather significant fashion.
Yeah, but not only is it 1/3 less code, it's also infinitely more BORKtastic!
You might even say it's BORKalicious!
BORK!BORK!
I used to program in LOGO in elementary school, and the version we used was in Spanish. Might have been translated to other languages as well.
So what if it was interpreted rather than compiled, and it was a very limited program made for children, it was a programming language, so stop laughing, all of you.
one reputable source of information about non-English programming languages.
That's pretty funny.
Your sourse link is 404 though. You should consider reposting it.
... completely without letters if you do it right! ;-)
Denken hilft.
Back in the DOS days, an Israeli company called "248 software" created a translated BASIC interpreter, complete with Right-to-left line entry:
5 TO 1 = X FOR 10
"HELLO" PRINT 20
NEXT 30
(sorry for lack of right-alignment - I couldn't get this to work in the comment window. Just assume the lines above are right aligned).
substitute the regular keywords with the equivalent hebrew words in a hebrew font, and you get the idea.
Notice that unlike the keywords here which are left-to-right, the hebrew keywords are actually read right-to-left, so the only thing on the line read left-to-right are the numbers.
I havent seen nobody mention whitespace, it has no english keywords whatsoever =)
Well at least another poster already posted about brainfuck
I can't remember of any other languages, but maybe one could try machine code, nah, just kidding (are there people who program directly in machine code?, I found this link about the Psion organizer or something, but I didn't get too deep into it)
There most certainly were quite a few, and not only programming languages, but also OSes. One of programming languages that comes to my mind is Rapira (). If you do a search you'll get quite a few references to it. I always had a problem with this sort of "localized versions" -- especially in Slavic lannguages: our average word length is longer than English (hence lots of abbreviations in these laguages), most of computer terminolgy is anyway borrowed...
Just the same I am generally having big problems with localized Excel -- I once saw my mothers excel worksheet (Russian version) and could not figure out half of the formulas!
--AP
If a compiler was designed correctly you should be able to change the keywords just by changing the lexical analyzer. Everything else would stay the same.
You could try machinecode (not not assembly, machine code) ;)
Not English atleast
The K Programming Language is language agnostic. Quote: "One of the hardest things for many people to get over at first is the way K looks. Even the strongest K enthusiast will freely admit that K tends to look like line noise." [A Shallow Introduction to the K Programming Language"]
Hello World or Καλ ημέρα κόσμε or こんに ちは 世界
/. wont let you insert html entity refs ]
" >http://plan9.bell-labs.com/sys/doc/utf.html</a> ;
[ how ironic that
Rob Pike & Ken Thompson
<a href="http://plan9.bell-labs.com/sys/doc/utf.html
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
"#define" is your friend.(enemy..)
#define if hvis
#define do gjør
#define while sålenge
#define return returner
#define void ingenting
#define char karakter
#define const konstant
typedef int tall;
tall lengde(konstant karakter *p){
tall i = 0;
sålenge(*p){
i++;
p++;
}
returner i;
}
I think of the car, cdr, and cons functions in lisp. Now cons is for construct. Car gets you the first element in a list, cdr the the second link (& therefore the remaining list) of a list.
I heard that car and cdr are are artifacts of machine code mnemomics, which I assume are English. But when you look at the functions, they are now cryptic and esoteric enough that they do not appear language specific. How many languages use cons as an abbreviation for the local equivalent of construct?
Dogma - "let's just say we'd like to avoid any empirical entanglements."
In the article, it said Chinese is using a kind of characters called kanji -- which is not true. Don't try to clone what Japanese called Chinese characters.
"A Programming Language", which uses Greek letters and special shapes as operators.
http://www.acm.org/sigapl/
The latest Slashdot meme.
There is APL ("A Programming Language"), which I remember getting some limited use (not by me) on campus when I was an undergrad. The language was sufficiently greek that it used some Greek characters as part of its language; I think the aim was to design a language programmed by mathematical notation. The keyboards for APL also came with stickers on the keys so that you knew which keys to chord in order to generate the non-standard language constructs. It looked like a very symbolic programming language to me. And I was scared of its keyboards.
Wiki page at http://en.wikipedia.org/wiki/APL_programming_langu age
This Slashdot story is bound to be so much more informative and useful than that Slashdot story. Right?
Way back, probably in the early 80's, I saw a guy tweak the Tiny Basic on our RCA-based computers, so that all the words were in Finnish. All 12 of them. He called if AKVOK, which was a direct translation of the "Beginners All-purpose Simple Instruction Code" into Finnish "Aloittelijan KaikkiValtias Ohjaus Koodi". For some reason nobody took him very seriously - but we all had great fun!
In Murphy We Turst
Just like Italian is the language used in music notation, Latin in medical and botanical terms, English is the de facto language of computers.
For those masochistic enough, Java supports Unicode for symbol names. Imagine a project that has been outsourced at various times to Russia, India, Mexico, and China, whose developers decided to make full use of the Java Language Specification (not using features is wasteful, right?).
Vote in November. You won't regret it.
10 I=1
20 Print "BORK!"
30 IF I=10 GOTO 60
40 I=I+1
50 GOTO 20
60 END
(Ported to C64)
It is actually a module for Perl to let you write Perl in Latin:
Perl in Latin
I guess it was intended as a toy but it could be used as a model for other languages.
Except, that illustrates the problem precisely. If it truly were Swedish chef, the words "PRINT" and "GOTO" would be in their Swedish equvalents. And since I don't speak Swedish, I'll approximate:
10 DRUCKENJORGESPORGE "BORK!"
20 GEHENJASUREj00BECHA 10
Working toward a usable PDA environment in the spirit of Newton OS: Dynapad
Check Wouter van Oortmerssen's web page and be sure to have a look at False.
I realize it's not an entirely new programming language, but Damian Conway wrote a Perl module that allows one to program Perl in Latin. Since Latin relies on inflection of words instead of word order to convey meaning, it eliminates a lot of the normal syntactical issues involving positioning. Although you're unlikely to find very many native speakers of Latin, it certainly won't hurt Perl's readability.
"I would give my right hand to be ambidextrous."
Arabic and Hebrew are different in this regard.
The Mind programming language, which is in Japanese, was recently discussed on Kuro5hin. Apparently the syntax reads like natural declarative Japanese.
I have two words for you:
Accent marks.
I saw someone else say this, but the score was 0!!! I hope that wasn't uninformed moderation. :\ Anyway...
... you can change most compilers to accept any variation of strings as the tokens by changing the lexer! If you would like C in Finnish, it's a very strait forward task once you settle on words that you want to use. Even change the file format from ASCII to UTF-8! It's just bytes that go into the lexer and then everything is a token.
Writting a wholey new language doesn't make much sense if you don't have an innovative idea for expressivity. Again, we are only talking about changing the lexer. Ideas of natural language grammar don't come into programming languages all that often with some strange exceptions. (Consider "instanceof" in Java where the operand order relates to English grammar. Kinda kluge even for an English speaker.)
Sam
There is at least one "russian" programming language. 1C Enterprise is common accounting software across Russia and its neighbors (incl. Latvia). Our company provides 1C localization in Latvia.
So-called "built-in language" of 1C Enterprise in fact is based on Russian. There is also "english" form but seems nobody uses it. Unfortunately, slashdot doesn't use unicode. I'll post some links to code examples:
1 2 3
The first language I programmed in, Hex codes! definitely NOT English.
OP Codes are for wussies.
Your thin skin doesn't make me a troll
You're forgetting the granddaddy of them all, APL. oeо...OEZ¼Ss- 7; ± Sheesh, it's greek to me!
Envy my 5 digit Slashdot User ID!
Not a language per se but a Perl dialect, Lingua::Romana::Perligata allows you to program in something that strongly resembles Latin (that is, if you don't know real Latin to tell the difference).
Singularity: a belief in the "God" idea with the "demiurge" relation inverted.
So BORK means BORK in Swedish too?! How amazing.
Fjölnir is in Icelandic, a language spoken by only about 300k people.
Documentation in Icelandic is available. You can also get a compiler.
In "proper" swedish.
10 SKRIV "BORK!"
20 HOPPATILL 10
It's all Greek to me.
Since you've said it, your 2nd and 3rd defines have characters which might be out of the range of characters a normal C compiler might use, no?
Would this really work?
Lost at C:>. Found at C.
There is a French version of COBOL. Not only are the keywords in French, but the syntax is French, so that, as with English COBOL, statements can be valid sentences in a natural language.
AppleScript had the concept of "dialects" which were AppleScript terms written in different languages (they had French, Japanese, Japanese (romanji), German, and Italian working). It was intriguing, I remember actually submitting an AppleScript in French for an assignment in French class in high school circa 1995.
English:
the first character of every word whose style is bold
French:
le premier caractère de tous les mots dont style est gras
Above in PDF
Sample of an AppleScript in English and Japanese
WikiPedia
Current Apple info
Some discussion on it circa 1994
Note, this should not be confused with OSA (Open Scripting Architecture) dialects, like JavascriptOSA, which are different.
Aside from this, the most linguistically extendable language would probably be Perl (especially Perl 6). Having been written by a linguist, I imagine the most awareness of the linguistic aspects of coding in a different lanugage would be.
I mean really, "coding in another language" doesn't mean replacing "for" loops with "pour" loops, it means taking advantage of concepts (like word genders and verb conjugation) that are specific to that language. Programming "in a French way" could lead to constructs, algorithms, and phrasing very different from "standard C".
Hire a Linux system administrator, systems engineer,
Whether you like it or not, English is the de facto standard of computer languages. While it would make sense to write programs in your native language, eventually you will reach the point where you need to work with others around the world.
While in college, I had to work with graduate students from India and China. We couldn't understand each other all the time, but we could read each other's code. I'm now in industry, but my company does work all over the world. It's pretty normal in my industry to have distributed project teams. With the advent of the internet, distributed projects have become more and more common. And we will probably see a rise in distributed companies, such as MySQL AB. A company like this couldn't exist if there weren't some sort of language standard.
Personally, I don't care what spoken language is decided on, but consider that the majority of developers in the world can speak English. Given that, it just makes sense to keep things in English as it will require the fewest number of people to have to learn a language.
I own a TI-89 calculator, which can be programmed using some flavour of BASIC and also Assembler.
Usually, the interface and all commands are in English, but TI offers language packs for some other languages. I once loaded the german language pack and realized that I'd have to rewrite all programs because it expected the commands to be in German.
I am not sure whether this qualifies as a programming language because it's interpreted and not compiled.
where's all that Karma?
The trouble really is, since most CS related research has been released in English, any developers need to know English anyway, and since they need the language for other reasons, having code in English doesn't really limit your potential audience at all. In a global environment, if you move your code to a foreign language, you limit number of people that can help you.
If you are doing Open Source you are killing yourself, and even if you are not, you are limiting your potential employees to those able to speak your chosen language. And since you can't really hire (seriously!) anyone not speaking English for development anyway, there's no point in localized code.
Software should be free as in speech, but if we also get some free beer, all the better.
If I remember correctly, Mitarou Namiki wrote a paper exploring this. The reference seems to be:
See his 1991 papers listing and his lab's website.
I talked with him about it ten years ago. I have a copy of the paper or maybe a similar one somewhere, but it's in japanese and I never allocated the hours I need to read it.
Another 50% reduction!
sulli
RTFJ.
Perl! It looks like line noise that just happens to compile. :)
lisp is based on Church's lambda calculus and lambda is a greek letter.
There's definitely a link between language and the way that we think about things.
Some mathematicians are very interested in one native language here in BC (almost dead). Apparently, they have two different number systems, and mathematicians are interested in what's different in the concepts of the two, and what it may be able to teach them.
Free Software: Like love, it grows best when given away.
How does Latin Perl sound to you?
And you too can do this !
Actually, Perligata is more serious than it may seem.
On one level, it uses Latin -- which packs much of the meaning of sentences into word endings rather than word order -- as a case study for a programming language that doesn't enforce a particular mandatory word order on language statements. That is, in English, "boy chases dog" has a much different meaning than "dog chases boy", but in Latin you could write it either way because the inflection on the words controls the meaning. Likewise, in most programming languages, x = y has a different meaning than y = x, but if you had a language that was agnostic about "sentence order" then you could write it either way. Using Latin allowed him to demonstrate this in practice.
Why would anyone care? Well, when Perligata was written, Perl6 was just starting to be considered, and Damian was wondering what core concepts had to be maintained and which were open to revision. Among the assumptions he wanted to consider was word order, and Perligata is a case study in how you can throw it out the window without breaking anything.
Coming down to Earth, this technique could have other applications as well. For example, the techniques used in Perligata could be applied in a source filter to convert VBScript to Perl at run time. There are issues to consider, of course, but it could work, if you wanted it badly enough. To cite a real example, one of the core plans for Perl6 is that it should be able to run existing Perl5 code, and the techniques demonstrated in Perligata will probably be used to make that possible.
Likewise, the object framework for Perl 6 is very flexible, allowing people to hand-roll almost any style of OO programming they are comfortable with. If you pair this with things like the built in Unicode support (and, allegedly, no obstacles to using Unicode symbols directly in Perl6 code for things like variables, functions, overridden operators, etc), there's no reason why people couldn't prepare "localized" versions of Perl6. It'll be interesting to see if this ends up happening, but I wouldn't be surprised at all if
DO NOT LEAVE IT IS NOT REAL
BrainFUCK!!!
I can't believe this got modded as "Interesting"
My favorite is Unlambda, which is entirely independent of natural language facticity:
Clickez ici. It's based on S,K,I combinators and "abstraction elimination."
-I like my women like I like my tea: green-
#define is your friend.
Bougez vos fesses et apprenez l'Anglais! Personne va traduire les langages d'ordinateur pour vous.
(I basically told them that no one is going to translate programming languages to French. No one would be THAT stupid.) Could you imagine:
10 ECRIVEZ "Bonjour"
20 ECRIVEZ "Je m'appelle Pierre"
30 SI (x==10) ALLEZ A 10
how long until
Written Chinese served the same role in Asia that Latin was serving in Europe. Pasar Melayu ("market Malay") is a language I learned to get by in places from Thailand to Papua New Guinea.
There have been, and continue to be, lots of linguae francae.
"Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
I've done a lot of work with Japanese developers. They have no more interest in a "Japanese" programming language than they have in a pocket calculator that used kanji digits instead of Western digits.
The 52 letters, 10 digits, and handful of special characters in ASCII are easy for them to both read and type on local keyboards, and keywords like "if" and "while" are already familiar to most Japanese older than about 10 or so.
I'm not saying they speak English well. In general, they don't. I'm saying that writing code in symbols composed of ASCII characters is so much easier than English and so much like other things they do in school that it just isn't a problem.
The same is true for Chinese and Koreans, and if it's barely a challenge for them, it's nothing for most other cultures.
By the way, I *have* seen a Japanese BASIC that used katakana keywords. It was apparently intended for 12 yr olds, but even they rejected it as no easier than ordinary BASIC.
Though there is a much stronger argument for local-language identifier names, the programming language itself doesn't need translated keywords.
"Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
OK, check this out: Ampere WS1.
An APL laptop from the bizarro world. I have just spent as many as several minutes on Google trying to find some evidence that this weird thing I vaguely remembered from the distant past actually exists. I've seen one, even tried to use it. Didn't get anywhere. I'm gonna chase that puppy up and learn me some APL. Oh yeah. Welcome to so many wasted weekends and sleepless nights. Happy days.
Now wash your hands.
Google for it. Bug has been a term since before Edison, who spoke of debugging things.
Infuriate left and right
http://en.wikipedia.org/wiki/Brainfuck
Creative Demolition
Owing to growing up in Wales (that's the bit sticking out to the left of England, for Americans; and certainly not 'Wales, England'), I did my first Computer Studies courses there in the late 70s/early 80s. Around that time there was a very strong push for equality of Welsh and English, so much so that a Welsh version of BASIC, called BASEG was produced. Sadly, the passage of time seems to have wiped it from the web (though a Google Groups search for 'welsh basic programming' throws up some references).
We were also taught a singularly useless pseudo-assembler language called CESIL (Computer Education Symbolic Instruction Language), and I think there was also a Welsh version of that.
ben_ the technologist and platform agnostic
I have a vague recollection of french versions of Basic (or was it Logo) when I was young (around 1985).
Those were extremely annoying to code with, since you had to guess what could be the translation for "gosub" or "on error resume next". (or nag the owner/school for a basic manual they usually didn't know existed.)
It's weird though. Nowadays, programmers compete for jobs on a global scale. It seems backward to start using localized programming languages usable only by a small fraction of the global workforce, unless the plan is to protect jobs through a language barrier.
The chef doesn't speak Swedish either. I do, here's my attempt: :/
10 SKRIV "BORK!"
20 GÅTILL 20
Something like that. I guess a single Aring isn't quite as exotic as something using Japanese glyphs would be.
main(O){10<putchar(4^--O?77-(15&5128 >>4*O):10)&&main(2+O);}
Kaola is a programming language for expert systems. All the keywords are in French.
Unfortunately there is not a lot of online documentation.
knows that the language as defined there consists of the
set of production trees of the grammar of the language.
Each production tree needs to be represented in a
representation language, which is the form we usually
seen when we think about programming languages.
However, back then machines had such wildly differing
wordsizes and character sets that this distinction was
necessary. After publication of the Revised Report, with its
included representation meant publication of programs,
but not for actual implementation on hardware, they
developed a `standard' hardware representation.
Even in that representation there were multiple representations
of the keywords in the language, e.g. and were allowed representations for the exact same keyword.
Implementors were strongly suggested to use the standard hardware representation, but if documented, they were fully
free to chose whichever representation they like. Hence, an
implementation may perfectly well use instead of as long as it is clearly documented.
Um, I missed with the target line number for the GÅTILL instruction on line 20, obviously. Oops. :/
main(O){10<putchar(4^--O?77-(15&5128 >>4*O):10)&&main(2+O);}
I remember that Visual Basics for Applications in Office 97 was in Dutch. Yes, it was a Dutch Office version. Pain in the ass when I had to use an original english version macro.
Flubbed a two-line BASIC program. Heaven help us if you're writing mission critical code for a living! :-)
Okay, some of the keywords are English, but they don't really help. The "documentation" can be found here.
- Whitespace
- Java2k (mostly non-english)
- HQ9+
- Beatnik
For a summary of MANY programming languages and examples have a look at: http://www.99-bottles-of-beer.net/ All links are taken from this non-english page: http://ulm.ccc.de/~schabi/weirdprog20c3/Greetings...
hildi
#define als if // that's a judgement call
#define doe do
#define voor for
#define zolang while
#define retourneer return
#define niks void
#define karakter char
#define const const
#define reeks string;
#define klasse class;
#define publiek public;
#define beschermd protected;
#define prive private;
#define statisch static;
#define nieuw new;
#define verwijder delete;
typedef int geheel;
typedef float zwevend;
voor(geheel i=0; i10; i++) {
cout "Of course, all libraries would have to be translated as well for consistency";
}
I remember Multilog, a 4GL with a french syntax: "si" in stead of "if" and "is" in stead of "fi", etcetera... Multilog ran on DOS and was actually written in QuickBASIC; I had to learn QuickBASIC because it allowed us to access internal variables of the Multilog system.
-- Qu'est-ce que la propriété intellectuelle? It is thought control.