We haven't yet seen a serious non-English programming language. One would have expected one in Chinese or Japanese by now. There was COBOL in French, once, with French words and word order, but it never caught on, even in Francophone countries.
We haven't yet seen a serious non-English programming language. One would have expected one in Chinese or Japanese by now. There was COBOL in French, once, with French words and word order, but it never caught on, even in Francophone countries.
I started programming at least 4 years before I started learning English. In my experience, not knowing what "if" means doesn't change anything because I never thought of code as prose. Whether it's called "if", "si", or "wenn", all that changes in my head is "what's the magic word that I have to insert before I can branch my code?".
This, I believe, it's why localized programming languages never catch on: because it solves a problem I don't have while bringing a new problem I do have, namely, not being able to find support for my niche programming language.
Variable names and comments? Sure, those are definitely prose. But I doubt anyone suffered too much when Python chose "elif" instead of "else if" (other than developers trying to remember whether a particular script should use "else if", "elsif", "elif", or "|").
Hm, even today, I have not idea why "for" is used for loops (?) and I'm using it without any problems.
Or more straightforwardly, in a way that can be applied to other English constructs, "do that for this group"
It's the same "for" in my head in both those versions.
$$ Σ_(i=0)^(20) x² $$
you'd actually pronounce that as "summe für i = 0 bis 20 von x²", which is a good argument for where it might be from.
I don't think it's much more intuitive in German than in English, probably goes back to the "for each" quantor.
I always read it as inspired by "for values of" which at least in German is a common phrase heard in mathematical courses.
In python is pretty direct: “for x in a” translates for for every x in the collection a, do this code...
In C it’s a bit more abstract: “for (i=0; i<10; ++i)” for every i in the range starting at i=0, while it’s less than 10, incrementing... Basically the body establishes a set or collection and the for loop executed the loop body “for” every item in the collection.
Modern languages often use foreach or some other slightly more descriptive name.
A class mate said his father said they were both pronounced as in English.
We had a fight over this in the playground, and I beat him. So I was right. "input" on the Commodore 64 is pronounced like in Dutch.
(edit: long live the Internet, it's on page 135 of the manual here: https://docplayer.nl/11208014-Gebruikershandleiding-nederlan... . Nostalgia).
I wish people who come up with all these inscrutable icons would realize that.
Unless the script is so foreign to you (ex. Latin vs Arabic) that the keywords look like inscrutable symbols anyway.
2. cannot google an icon
3. icons are not standardized - companies copyright their icons and sue anyone else who uses them
4. icons do not have a sort order
5. cannot type an icon into a text editor /word processor
6. fonts don't support icons
In PHP 5.4, they helped the situation somewhat by changing the error message to "unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM)" - I suspect national pride was involved in their refusal to completely remove the internal token name from the error message.
Who is "we"?
1C is a Russian-based domain-specific language that dominates accounting in Russia and neighboring ex-USSR countries[1]. It competes with SAP, and made its founder a billionaire[2].
[1]https://ru.wikipedia.org/wiki/1С:Предприятие
[2]https://www.bloomberg.com/news/articles/2017-06-15/a-russian...
I'll try to find some, but in the meantime check out these code samples:
https://gist.github.com/alexaandrov/739e16e1786ab2b3d6bc
https://guesto.ru/1c-razrabotka-konfiguratsii-menedzher-zada...
Etc
Сообщить("Hello Wold");
But nobody cared. Programmers program in English.
I once traveled to Finland to visit a customer. Everyone in the office spoke in English. I asked if they were just being polite because I was there. They said nope, their staff was from all over Europe and the only language they had in common was English.
There are, to this day, people who get in trouble when their computers reply to them in English, including coding folks. I bet they were (and are) thankful for initiatives like yours, but they won't have the vocabulary to tell you.
Maybe we see that in a few years, with everything moving to Chinese.
> Imagine if everyone posted on StackExchange using their native tongue.
Imagine users going to forums in their own language. People actually do that.
Once they get there, I'm not sure they have a lot of motivation left to do high-tech on foreigners' terms and in foreign languages.
While it doesn't follow that "we" need to learn Chinese then, whatever they'll use instead of StackExchange will simply outnumber the English version.
The definition of useful varies though. Many people starting out don't have the ability to understand some error messages, so being able to search for the error message is most useful. If everyone in the world has the same error message, finding an explanation for the error is a lot easier.
Two options:
1. LC_ALL=C $command to get the universal version of the error to search/report
2. Add a numerical error code that remains stable across locales
Of course if you turn on localized error messages you might actually prefer results in your own language.
We're still struggling with this in english. Think about how often the default reaction still is to google a compiler error, unless it's one of a handful of common ones you see often. Compiler errors are often opaque, even to the best programmers that speak english natively. A significant base of software emits error numbers with thin descriptions at best, which then have to be looked up in a manual anyway.
(Europe is only a special case "to some extent" because English also competes for lingua franca status with Hindi in India; in Japan it's taught (badly) as a result of connections with the US; and in countries as varied as Israel and Singapore it has a foothold.)
If you're starting from first principles, and are willing to go with that common-second-language threshold instead of insisting on people's first languages, English is still definitely a clear first choice - it barely edges out Chinese for total L1 + L2 speakers, and those speakers are concentrated in the centers of software development.
After that you have Chinese and Hindi (both fairly restricted in geographical reach, but involving lots of people), then Spanish (most of Latin America) and French (spoken in a dizzying array of cultures as L2, because of colonial history in Africa and the Middle East).
And then you finally get to Arabic :-P
Now, if the natural language has some influence on the semantics of the programming language, it might be useful enough. Doubt it, as most natural languages' grammar is way harder than either English or your average programming language. The only attempt that comes to mind right now would be Lingua::Romana::Perligata[1] and that's just an esolang layer.
Now, for political or philosophical reasons an artificial language might be considered. Like Esperanto or Lojban, but I haven't seen something like this, either (I'm not counting Klingon).
[1]: http://users.monash.edu/~damian/papers/HTML/Perligata.html
We already know that powerful programming languages can be built with non-ASCII characters in mind -- see APL, for example.
However, we also know that the difficulties of typing these languages without special keyboard support have led to a variety of more English in ASCII language successors such as J/K/L.
The input language has nothing to do with the keyboard. How do you think people type foreign natural languages? This comes up again and again in programming-related online discussions - why is it so hard for people who program software every day to imagine that keyboard input is also mapped by software?
The real reason Iverson used ASCII for J is that in the early 1980s, you had to get an APL character video ROM (code page 907) for your terminal or PC (exactly the same case as for foreign languages). Obviously not a problem at the time for Macs or other computers that use bit-mapped fonts, and has not been a problem for PCs for the past 30 years.
So ooo calc vba equivalent is translated in various languages ;p
Not as stupid as translating low level error messages.
While I understand localization can be useful for a subset of users, at least they could have made the English function names also work, or have a suggestion mechanism to suggest the Spanish translation if you type an English function name. I don't understand why they don't do this.
Anyway, the problems of name localization are nothing compared to the problems of using commas as decimal separator. People from English-speaking countries will never know how many extra hours of life they have from not fiddling with decimal separators, text encoding programming issues, etc.
If memory serves me right, back when MS Office macro viruses were the threat du jour, there was already a bit of a remedy in place for those formats that would translate the formulas and macros of incoming files from a different language version of the same software. This caused secondary waves of "mutated" viruses that had crossed multiple language barriers and came back slightly different but still working, foiling the efforts of checksum based virus scanners.
It's part of the dev environment windev which is totally closed and (at least last time i had to use it) doesn't allow to use any tools like git (sources are encrypted). This and the fact that the whole environment was extremelly bugy (and even the language itself) makes it a real nightmare to work with. That's the only other example of non english programing language I can think of though
Edit: just found this article on wikipedia after writing this. There's quite a few languages:
https://en.m.wikipedia.org/wiki/Non-English-based_programmin...
Easily the single most diabolical thing I've heard all week.
> diabolical
You have no idea.
I've worked with devs using it (and had to debug their code more often than not): the thing is hell, through and through, from the stdlib itself (buggy as fsck[0], terribly leaky abstractions[1], ridiculously contrived[2]) to the IDE to the concepts (worse than VB, you store procedures in windows so changing the UI ever so slightly has dramatic effect on your whole codebase and since it's half static half dynamic you catch that only at runtime) to the source control (worse than VSS, and that's telling[3]) to the database (worse than your random toy-weekend-project database[4]) to the devious marketing ploys[5].
(some links in FR but you can toggle to English)
[0]: JSON parsing and generation is non-conformant, e.g translates null to empty strings. There is basically no memory management and the thing leaks like a sieve. This one can only do GET and POST "automatically", adds a topmost "Accept: * ", and actually only sends credentials on non-HTTPS: on HTTPS they're outright dropped because of a bug, so you have to implement HTTP basic yourself with the hack below! https://doc.pcsoft.fr/fr-FR/?3043007&name=HTTPRequete
[1]: Same proc as above, the overall thing and additional header field is actually a string concat, so if you want multiple ones you pass a string with those separated by \r\n, but god forbid you omit the last CRLF as the headers and body won't have the required CRLF and be right next to each other.
[2]: dict-like stuff (mem leaks included): https://doc.pcsoft.fr/fr-FR/?1514057&name=Tableaux_dynamique...
[3]: http://www.highprogrammer.com/alan/windev/sourcesafe.html
[4]: For network access they actually recommended you share a database via SMB shares before they had a "server mode", and still do for "small loads". The indexes get borked once in a while for random reasons so you have to rebuild them regularly. Their main API is something resembling low-level ISAM but with shared global state, and while they introduced a SQL implementation atop of that, it's downright terrible, severely lacking, and has zero query optimisation plan, throw in a HAVING and you can lock a 10000 records table for minutes.
[5]: Car seller tactics like "Buy a license, get a top of the line iphone/ipad for 1€", goodies strategy dialled to 11, heavily sexualised material (down to the IDE splash screen), with scantily clothed women in luscious poses, high heels, leather, you name it, full of bullet-point buzzwords, actual tagline is "develop 10 times faster" and literally "1000+ new features" for each version, dev conventions are cult-like, Stockholm syndrome is pervasive. License for a given version is lifetime (controlled by a hardware dongle labeled with legal threats) but any support is dropped the minute the next release is out (which is every year). Not that it matters, as bugs stay largely unfixed. Wikipedia page is heavily edited by their marketing team (from their own IPs to boot), forums are heavily moderated against any critical post, who get censored, to the point that one of the devs I mentioned was threatened (on the phone, they called him) of legal action for libel because he publicly reported and discussed a bug.
It's so bad that to fix bugs I implemented drop-in replacements for part of that stdlib and software code in C# (they have a .Net bridge which, quite surprisingly, works well, even dynamically generating WinDev proxy stubs from the C# classes) in well under half a day of work (which also had the benefit of moving some things to git and have actual unit testing), and had plans to port wlanguage to the CLR to help people get out of this hole. Guess what, the plan was rejected (even for bug fixing) because of purely irrational cultish reasons and I had to put intricate workarounds in my Ruby code to massage my way out of the endless brokenness, costing me overall months of work and terrible customer impact.
If it feels like I was on some sort of mission, then it's partly true, as the people I worked with were really nice folks I had real bonds with, and witnessing the brainwashing they were victim of, destroying the very real potential they had, was truly disheartening.
The "software" was MS Excel workbooks. C-level execs love Excel, and they love interactive worksheets even more. The workbooks my friend made were huge, and had immense amounts of functionality. And this was all done without using VBA. It all had to be done in pure Excel functions. This guy had obvious programming talent as he rose through the ranks very quickly, but he never was allowed to program in anything outside of Excel, anything that resembled an actual programming language. He eventually left that career (and the very good money he made in it) for an entirely different calling. He's now finally experimenting with more normal languages, like Java, in his free time.
More on-topic, I feel so sorry for the French developer scene that you've got a monster like windev holding down an entire generation of what could be promising devs.
We do have one in Mainland China, popular in the last decade: https://en.wikipedia.org/wiki/Easy_Programming_Language
It's somewhat of a disaster, though: its author probably caught up with the idea of "Language = IDE" & "selling the language for profit" so it's really not that suitable for "real" serious uses.
Here is a piece of code in German VBA for Excel 95: https://de.wikipedia.org/wiki/Visual_Basic_for_Applications?...
Changing some accented characters in a well known brand name into strange ones used in "obscure Serb Croat religious documents
then save the worksheet and re-open it with the Italian Excel, since the functions are actually saved internally as an "ordinal" (or whatever) and interpreted by Excel in its "local" language.
An asinine idea indeed.
EDIT: Of course there is!
https://en.wikipedia.org/wiki/Dolittle_(programming_language...
I don't know... is it even meaningful to call a Programming language as being in some other language ? The "language" in the CS sense remains essentially the same, and all you end up doing is substituting the alphabet.
This situates the problem in an entirely modest light, and makes it obvious as to why any new "nativist" programming language is not worth the trouble - the alphabet, in this case the terms, is rarely ever the hardest part of learning a language. Indeed, if you're a lisper, the triviality of the change would become instantly obvious to you.
`SELECTIONNER * DE clients TRIER PAR ...`
(sorry for the bad joke, I'm just kind of fond of French acronym mangling. The vocabulary is similar enough to English to to keep the letters the same in many cases, only the order is off. It's bit like verlan for the rest of the world)
[1] https://en.wikipedia.org/wiki/Coordinated_Universal_Time#Ety...
As for French not being used in keywords, I found that state of affair somewhat liberating. I learned some LOGO with French keywords in primary school, then moved on to BASIC with English keywords long before I learned English. The fact that the keywords are in a foreign language somehow helped. I was not randomly trying French words hoping that it would do something. Either I knew the "computer" word (aka English) or I did not.
I find programming using French keywords somewhat distasteful. French does feel ill suited for this kind of endeavor with its complex grammar rules and conjugation. It's also very verbose. When I was in college my friends used to name things in a mixture of French and English. Yes, even native speakers that wanted to use French for variables would invariably use English keywords.
For example, an accessor would be named `getUtilisateur()` instead of `getUser()`, simply because all the equivalents for `get` and `set` are super long and fastidious to type. Also everyone would be super confused if a different convention than `get` or `set` was being used in this context. But often enough the reason was that the English word was so much shorter, and as easily understood.
If that's Java, there's more to it than simply being "short". Since Java (unlike C#) doesn't have native properties, methods following that JavaBeans naming convention are treated as property getters and setters (often using reflection). That is, the methods "String getUtilisateur()" and "void setUtilisateur(String value)" are treated as if the object had a property named "utilisateur". Any other naming convention won't work, since everything that wants to access an object's "properties" will be looking for them only with the JavaBeans naming convention.
LSE [1] was more-or-less BASIC with French keywords. From what I've heard (I'm not French so have no first-hand experience with this), for a time (primarily in the 1980s) it was actually heavily used in the French education system, due to the backing the French government gave to it. Over time, the French government lost interest in the project, and use of the language has declined as a result. (The decline in interest in BASIC dialects in general has probably contributed.)
[1] https://en.wikipedia.org/wiki/LSE_(programming_language)
It's really not easy to create a programming language that "catches" on, as readers of hackernews are probably aware. There are a lot of brilliant languages, based on English, wich didn't.
I suspect those international programming languages are not failing because of the language barrier, but rather because they don't add enough value and/or fail to attract a community.
There are such languages. Mostly DSLs, but here[0] is a general language from a Russian ERP system. Every keyword has both English and Russian equivalents. There are tons of maintained code written entirely in Russian, including business-critical.
I think what mostly kills the appeal is 1) The actual keywords in the language are not that many (<50) and have a technical meaning where knowing English is only of limited help. 2) Much of what we do today uses library of code from others, where either you limit your audience by using non-English function (and/or class) names or you use English function names and hope that everyone will understand them to the necessary degree.
Little dismissive don't you think. I get your point, but don't undervalue this project.
#define pour for #define ent int etc...
I think these don't really capture the whole idea around creating a programming language in another language, though...
No idea if this counts as "serious", but it was used in schools back then.
... and forcing everyone to put up signs in French [1]. Compelled speech, if you will.
[1] https://en.wikipedia.org/wiki/Office_qu%C3%A9b%C3%A9cois_de_...
It is not like using non English languages would change paradigm programming itself.