657 comments

[ 3.9 ms ] story [ 311 ms ] thread
Scala supports Unicode characters in identifiers. It would be interesting to know your take on that.
Doesn't almost all major "modern" languages support that? The list is quite long: https://rosettacode.org/wiki/Unicode_variable_names
Scala supports not just variables, but operators. * or + are not part of language, but methods in library.
In symbolic programming languages (like Lisp), very few characters are "part of language", as you say. In fact, some lisps (at least the ones I use: Common Lisp, and Racket) even support reprogramming the reader.
So does Go.

And in Plan 9 all compilers did. I bet this is the first exmaple of a humorous Hello world in C with Unicode smileys in identifiers: https://youtu.be/dP1xVpMPn8M?t=695, by Dennis Richie I think.

Javascript and Python do, to. But the keywords are in English and there are several different linguistic biases like word order, counting etc.

That's way internationalization is a lot harder than just applying a dictionary.

Oh, it's just an art project.

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.

> Oh, it's just an art project.

Little dismissive don't you think. I get your point, but don't undervalue this project.

Well, it was done for an art collective and displayed in a museum... it is at least an art project.
I think parent was referring to that "just"
A translator that takes say C code written in a non-English language and spits out ASCII C (except for variable/function names) ought to be simple.
Providing a mapping from utf-8 to ASCII is easy, e.g. punycode. The problems arise when it comes to things like checking equality of two identifiers, as it becomes non-trivial in general Unicode: https://unicode.org/reports/tr10/
Well, yeah. That already exists if you go to any non-english speaking country and look at the coursework of people doing introductory C classes...

#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...

1C is popular programming language in Russian.
My SO works on a project with leeeeeegacy software that still uses an RDBMS/OS combination (yes, it's one product. don't remember the name) in French.

`SELECTIONNER * DE clients TRIER PAR ...`

So, an SMBDR/SO? ;)

(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)

There were localized versions of Visual Basic for Applications in Office 95, at least there was a German one. I had the "pleasure" to use it once, and I can tell you it was no pleasure at all. The first problem was that for some keywords there is no obvious translation (for example "if" can be translated to "falls" or "wenn"), so I had to look up the keywords again and again. Then of course it wasn't easily possible to transfer code snippets from English VBA projects, so everything had to be converted (by hand at that time). And for some reason certain keywords were not localized at all (for example 'DIM'). Turned out the whole localization was a horrible idea.

Here is a piece of code in German VBA for Excel 95: https://de.wikipedia.org/wiki/Visual_Basic_for_Applications?...

Yeah, the translated VB functions in Excel are a nightmare, especially when one works in a multi-lingual workplace. If you haven't heard finns complain about things being in Swedish before, then I can recommend handing them an excel-sheet with the VB code in Swedish and watch the chaos unfold. :D
Not function related but I work in a very international org and when excel traverses international boundaries you get strange effects.

Changing some accented characters in a well known brand name into strange ones used in "obscure Serb Croat religious documents

This is the bane of my existence when working with Excel. I'm spending too much time figuring out that "RAND" (which is what you'd find in search) is "ZUFALLSZAHL" in German Excel (which I use at work) and "ALEATORIO" in Spanish (which I use at home).
Is this on VBA or for formulas too?
It is for spreadsheet functions, VBA is English only, but there are anyway some quirks, as an example inside VBA the decimal point (separator) is actually a point whilst /as an example in Italian) the decimal separator is a comma, and this creates often the need to convert back and forth the numbers.
JFYI, what I often do for those functions I am not already familiar with both in Italian and English (it doesn't work for really all functions) is to use the English original I find in (the English version of) Spread32 (an extremely small Excel compatible program):

http://www.byedesign.co.uk/

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.

As I remember, they had also localised symbolic "constants" so a format spec fed to (some date function) was 'dd/mm/yyyy' for english locale, but 'gg/mm/aaaa' for the italian one . God help you if you had (I did) some combination of - say - English Excel and italian OS (as I remember you got english function names but italian 'constants' as in DATEFORMAT('gg/mm/aaaa'...) with nonsens errors if you used 'dd/mm/yyyy').

An asinine idea indeed.

We have 1C here in Russia. It is not very advanced language-wise, but if you list COBOL as serious, well, it is.
There's also wlanguage that supports french, english and chinese https://fr.wikipedia.org/wiki/WLangage (in french)

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...

> binary source format

Easily the single most diabolical thing I've heard all week.

Not even sure it's actually encrypted as much as it's a memory dump, old skool .doc style.

> 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 fr...

So much memory... My first dev experience was with windev, I never mentioned it on my resume. Like you said, everything was really bad, from their aggressive sexist marketing to every single part of their product.
This reminds me of a friend of mine, who used to work at a company that supplied financial analytics software.

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.

The Amstrad CPC (under CP/M I guess) had a French LOGO, where it wouldn't be "forward 10" but "avance 10".

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.

There were other French programming languages, e.g. Logo in French which was used in schools along a physical turtle (see http://gautard.pierre.free.fr/la_tortue_jeulin_t2.htm for a picture) that you could pilot to draw on big sheet of papers, or WLangage from WinDev. But AFAIK all these were just translations of English programming languages, not original creations. And didn't really caught on.
> 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 "|").

Agreed. I started to program in BASIC some 7 years before I started to learn English. I had no idea what PRINT or LET meant and was able to program without any problems.

Hm, even today, I have not idea why "for" is used for loops (?) and I'm using it without any problems.

Native English speaker and I also don't really get what "for" was meant to mean. At this point it's probably just something that everyone has memorised and part of history.
(comment deleted)
I'm not a native speaker, but "perform this task, for i in {1,2,3}" seems to make sense as a prose. At least it does in French, when translated literally.
personally as a native speaker it has alwaus made sense to me in the sense of saying "for these given constraints, loop while they are maintained" for the arithmetic style for loop, and "for each of these elements" for the more iterator based style.
In python it makes sense but when you have `for(let i=0; I<length; I++)` it makes less sense
"for all i smaller than length, starting at 0". It doesn't really map perfectly because in math you usually don't care about the order, so a for loop actually contains more information than the statement it's trying to mimic.
Also native English: For me it's always made sense only with the loop body, as "for these do that"

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.

Huh? It's pretty common even in basic college math courses to use language like "for every p in Q". It's not like programming invented this usage.
My high school teacher had a very legit explanation for the meaning of “for” in that context. But I can’t remember it now. Nowadays I write it because it’s expected, not because there’s a hidden deeper meaning.
Hmm, never thought about it either. I'd guess a contraction of "for each value..."
Could it really be anything else? I always assumed that was the obvious intention there. Never crossed my mind that it could mean anything too different.
Originally it was a Anglicization of "für" in German first used in a programming language called Superplan which was then picked up upon by FORTRAN and then it just stuck
Well, that doesn't really solve the mystery. The German "für" doesn't have any closer connection with loops than English "for".
e.g. in Sums or Products, with

$$ Σ_(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.

Yes, though isn't that the same when pronouncing math in English? (So it's a good explanation, but doing the detour via German doesn't give us any extra enlightenment?)
Well I don't know how it's pronounced in English, so I didn't know that, good to know though:)
https://en.wikipedia.org/wiki/Heinz_Rutishauser

I don't think it's much more intuitive in German than in English, probably goes back to the "for each" quantor.

The for loop is the most unintuitive variant of the possible looping constructs. The others (while do/do while/endless loop) are much more straightforward. We could easily have ended up with another version.

I always read it as inspired by "for values of" which at least in German is a common phrase heard in mathematical courses.

Fortran has «do» loops, no «for» loops (to my knowledge). do i = 1, N ...
I always translate “for” in my head to: for each item x in...

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.

I would guess it comes from calling the universal quantifier ”for all” in logic
When I was 10, the Dutch language manual for the Commodore 64 explained the pronunciation of "input#", but not that of just "input". So I (unfamiliar with foreign languages) thought that "input" was pronounced as we would in Dutch, while "input#" sounded like what I now know is English.

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.

My brain is parsing how a Dutch input would sound different in Dutch? "in de put" vs "input" sounds the same, no? What is different?
There is definitely a difference. If you don't hear it, you might be saying one of them incorrectly? Wiktionary has audio files for input (English) and put (Dutch) if you need a comparison. In IPA the difference is ʊ vs ʏ. In terms of describing it to a Dutch person I would say the English u is somewhere between the Dutch u and the Dutch oe sounds.
In-poot vs in-puht, roughly.
(comment deleted)
A long time ago I did some VBA work without any real understanding of the underlying language and even though I had no idea that "Sub" or "Dim" was supposed mean "Subroutine" or "Dimension" my brain just approximately mapped it to "function" and "var" without ever needing to spend time trying to decode the "English" meaning.
Oh so that's what Dim meant :D
Yes, it's only like 20 keywords to learn.

I wish people who come up with all these inscrutable icons would realize that.

Why is learning 20 inscrutable icons harder?
You're wording is interesting and has me thinking. Why think of these words individually, with their individual characters, as a burden of the English lexicon, and instead think of the words as an image in their entirety. So thats it's almost programming by picture.
Because they are tiny and can be unreadable at perfectly normal font sizes.
It's hard to reason and talk about something until you name it. With named keywords, you already have a name for it, even if you say it different than the English pronunciation.

Unless the script is so foreign to you (ex. Latin vs Arabic) that the keywords look like inscrutable symbols anyway.

1. cannot look up an icon in a dictionary

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

Could a localization be implemented in a header file with #defines to turn the localized keyword to the real one?
Very good point. While non-english programming languages haven't caught on I have experienced German documentation, comments and variable names in a codebase.
One of the more well-known examples, and one that made me double-take when I saw it - from PHP 3 onwards, when a pair of Israelis rewrote the parser, a common and confusing syntax error was "unexpected T_PAAMAYIM_NEKUDOTAYIM". Which is Hebrew for T_DOUBLE_COLON.

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.

This choice is also good for search optimization.
This rings true, but I imagine the difference is higher if you can't read the Latin script or if your keyboard doesn't have Latin characters.
I have seen schemas written in Japanese but yet to see anything in Chinese (apart from comments) despite living in a Chinese speaking region.
Never understand why non English programming language would exist except for identity politics reason, nowadays.

It is not like using non English languages would change paradigm programming itself.

For education and compatibility ? I have no idea if the latin alphabet is learned everywhere.
(comment deleted)
I had to work with WinDEV for some time, in a French speaking environment, with every single keyword and library API translated. That was a terrible experience (I’m native French speaker).
Now that I think about it, Excel has regional translations for functions. In my experience that makes it difficult to search for documentation, but I’ve seen business people really enjoying it.
Honestly I am pretty sure there must be Japanese ones. Seeing how little of English Japanese programmers speak, there must surely be one.

EDIT: Of course there is!

https://en.wikipedia.org/wiki/Dolittle_(programming_language...

There’s open office calc (and ms excel i guess) !! Its a huge pain for me actually. Once my grandpa needed help with an OOo calc sheet because his bank csv exports were super dumb and listed price columns as strings with the unit symbol as opposed to just the number. So i split the string and casted to number on my ooo calc (in english), but the casting didnt work on his french ooo calc. I spend the next 40 minutes trying to find the god damn function in french. It was surprisingly hard !! But eventually we figured it out (was and i forgot the casting function both in french and english as i never use calc/excel).

So ooo calc vba equivalent is translated in various languages ;p

Yes, that has been a constant confusion for me since they started translating office. Why would you translate commands to another language?
I think it's supposed to be more like a DSL, aimed at non-programmers. So it may make sense to translate something like "Average", if you don't expect your target users to know english.

Not as stupid as translating low level error messages.

But it should be a presentation thing. The formulas stored in the file should be the same regardless of language. There's no good reason not to.
Yep, same in Excel. And as a Spanish Excel user, I can attest it's a pain. If you find a solution for a nontrivial Excel problem online, chances are it will be in English. Then, you need to manually translate function names to Spanish to make it work in Spanish Excel. Translations are often non-obvious (average is PROMEDIO, not MEDIA? really?).

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.

I would hope Excel could convert all the built in functions by changing a language setting somewhere. The problem you describe should have been the first thing to come up when they decided to localize it.
One of the early sins of office file formats, translating formula symbols not just in presentation but right down in the persistent form.

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.

People are mentioning MS Excel and the only other example I can think of is Logo (turtle graphics). It was quite popular in Poland when I was a kid to teach children programming and I vividly remember it was fully in polish (which even at that age I found a bit weird).
> There was COBOL in French, once, with French words and word order, but it never caught on, even in Francophone countries.

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)

I have heard from some people that used to work in some major Japanese companies (famous worldwide) that they had a version of COBOL developed in-house that was entirely in Japanese. It seems it was widely used within the company and used to power some banking infrastructure. I wonder if such system still exists in production nowadays.
Back in the 1980s, I thought it would be great to add German, French, and Japanese error messages to the compiler. I hired native speakers to do the translations.

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.

As discussed elsewhere in the thread, the few dozen keywords are a different matter (and are just memorized to mean "make the computer do ..."), but having useful error messages from your compiler helps get stuff sorted out more quickly.

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.

The tech community greatly benefits from settling on a lingua franca. Imagine if everyone posted on StackExchange using their native tongue.
> The tech community greatly benefits from settling on a lingua franca

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.

People have been talking about "everything will be moving to Chinese in the next few years" for the last ~20 years.
I'm well aware. But China is also the only country (or even bloc) in the world that's aiming for a fully internal supply chain for high tech. Not sure you can transform basic materials into a laptop (to pick one simple example) at scale without China anymore, but China is on a pretty successful track to do that without anybody else.

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.

For hardware, perhaps, but the Chinese have no realistic way to replace the rest of the world for software. If they want to sell their hardware to the rest of the world, English is the only realistic language to use for that. I see no evidence of mass learning of Chinese anywhere.
The replacement for StackExchange already exists, on WeChat. More for hardware than for software.
Probably the Chinese will embrace and extend the English language, the way the US did.
The US did not embrace english, the US were a set of english colonists who managed to absorb lots of foreigners with the clear contract that not adapting to their culture/language would result in bad outcomes.
> having useful error messages from your compiler helps get stuff sorted out more quickly.

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.

> 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

LC_ALL=C changes all the locale-related behaviors. I would try LC_MESSAGES first.
Localized error messages are detrimental to solving the problem as googling the error message in a different language will prevent you from finding a solution in the main language.
In compilers it's not uncommon to output an error code in addition to the human readable message. That allows you to google independent of language.

Of course if you turn on localized error messages you might actually prefer results in your own language.

This sounds like it's coming from someone who has never had to help relatives fix their broken Windows PCs localized in a language spoken by only a few million people.
> having useful error messages from your compiler helps get stuff sorted out more quickly.

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 to some extent a special case - even outside of software, English is the pan-European lingua franca; lots of college-educated people know a lot of it even before getting into tech. In places like China, or Central Asia, or the Middle East, this is not as much the case, and so picking up English skills add a further barrier to entry to the field.

(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

I'd love to code in an all Swedish environment. But when the I18n is incomplete or poorly done, all English wins out. Better if 100% of the compiler messages are in English than a 50/50 mix of Swedish and English messages because then you have to context switch between the languages all the time.
> One would have expected one in Chinese or Japanese by now.

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.

>We haven't yet seen a serious non-English programming language

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...

Neither of these two links seem to go into much depth about the language itself. I'm very excited to read more. Do you know if there is a summary in English that explains how it works, and how Russian influenced the language?
> One would have expected one in Chinese or Japanese by now.

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.

As many other said, with the usual amount of keywords it's really not worth it. It's a bit like Italian words for musical theory. International communication beats the slight learning curve by far.

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

Speaking of Klingon and natural language influencing programming language semantics, I believe var'aq[0] is said to be structured the way it is to better follow the Klingon grammar. It also supports both English and Klingon keywords, which I think is an important compromise.

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.

[0] https://esolangs.org/wiki/Var%27aq

> 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.

maybe not serious, but excel functions are translated I think ?
IDK if Excel functions can be called a "serious programming language", but their local names are driving me nuts.
For Japanese, I hear about Nadeshiko (なでしこ) a lot. It has a thriving user base, apparently. [1]

[1] https://nadesi.com/top/

>We haven't yet seen a serious non-English programming language

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.

[0] https://1c-dn.com/1c_enterprise/1c_enterprise_script

Wikipedia has a list of similar projects: https://en.wikipedia.org/wiki/Non-English-based_programming_...

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.

Most importantly, anyone that only speaks english will be unlikely to ever hear about a non-english language.
There were French and German versions of LOGO, for example.

No idea if this counts as "serious", but it was used in schools back then.

If given an opportunity, the French language police of Québec would have adopted and enforced it in Québec.
« the French language police of Québec » = the institution who defines the institutionnal use of the official language in the state, like all countries in the world do. France have almost the same laws as Law 101.
Heard of 'pastagate' ?
OCaml is French but mysteriously it is neither in French nor particularly popular in France. France could be a global powerhouse of programming if only they could see what’s right under their noses.
Frenchman expat here. I do recall OCaml being somewhat popular among teachers and professors some 20 years ago. All the coding I learned in high school and then the first years of college was in either Basic, Pascal, OCaml or Matlab. I did not touch C or Java which were a lot more popular in the late 1990s until I started a my Softare Engineering degree.

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.

> 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.

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.

With the power of c preprocessor, you can program in any natural languages. /s
There's a “易(Easy)语言(Language)” in China which advertised itself as epitome of "Chinese Programming". It is basically a re-skinned C with a visual programming tookit, which does has its merit as visual programming tools were rare during that time. However, it only catched on in the "domain" of cheat engines and trainers, and eventually died out.
The support forum page for it links to a parked domain, so it probably isn't very active.
Retrofitting an existing language with flexible syntax (in this case, LISP) to non-English languages is relatively easy. They are not necessarily bad and can be useful for learners and casual users, but deviating from ASCII alone doesn't remove a cultural bias as the OP states. Programming languages have to be developed from scratch to fit to other spoken languages and cultures in my opinion. I'm aware of multiple (non-esoteric [1]) languages in this direction, none satisfactory enough though.

[1] If we allow esolangs I would proudly present Aheui (https://esolangs.org/wiki/Aheui) as a good example.

> Programming languages have to be developed from scratch to fit to other spoken languages and cultures in my opinion.

This is really interesting. I wonder if there are some human language with properties that would allow for programming language constructs that we don't really use today.

My linguistic skills are not good enough to really suggest an example, but considering there is a language[0] (almost) without relative directions (left and right), which is mind blowing to me, it feels like there should be something interesting out there.

[0]: https://en.wikipedia.org/wiki/Guugu_Yimithirr_language

As a very superficial example, Korean is agglutinative and you can't easily take affixes apart from a word. For example, you can't easily recognize that the following sentence has a noun "언어" and a verb stem "배우-" without a substantial knowledge about Korean:

    언어를 배운다.
    [topic omitted] Language-(object marker "를") learn-(verb conjugation "ㄴ다").
    (One) learns a language.
Many syntaxes are based on easily segmented tokens, or words, so they are not a good fit for Korean and other agglutinative languages. My friend has made a programming language, Yaksok [1], specially made for Korean and solving this problem by making all invocations as a pattern, somewhat similarly to AppleScript:

    # - "약속" is a keyword for procedure declarations.
    # - Unquoted words are formal parameters.
    # - Anything quoted should occur literally, except for slashed alternations
    #   used for affixes varying by the preceding word.
    약속 대상"을/를 배운다"
        ...
Of course this results in a very unconventional parser.

[1] http://yaksok.org/

> This is really interesting. I wonder if there are some human language with properties that would allow for programming language constructs that we don't really use today.

Ooh, just thought of something interesting: I lived in Turkey for 4 months, and in Turkish, rather than using location to indicate which words modify each other, you use suffixes. (At least, as much as I could figure out in that time.) Then you can order your words for clarity and emphasis, rather than for meaning.

You could imagine doing the same thing with functions or expressions; rather than being stuck with "infix" operators, which need precedence and parentheses, or "prefix" operators forcing you to use RPN, you could order them the way you want.

So perhaps the following three expressions could all evaluate to the same thing ("a / b" in most C-based languages):

    /' a' b"
    /' b" a'
    b" /' a'
    a' /' b"
    a' b" /'
The idea would be that `/` is the verb, and `'` is the suffix indicating that its two "arguments" are `'` and `"`.

That sounds like an interesting concept to explore anyway.

There are a lot of languages like this - this is the much-studied spectrum of analytic vs. synthetic.

English is one of the most strongly analytic languages (Chinese being even more extreme) - it determines word relationships and function with word order and helper words.

Whereas Standard Arabic, Ancient Latin, and Finnish are very synthetic, changing words to indicate their function and relationship to other words in the sentence. If your language has the concept of "declensions", it's probably on the synthetic end of the spectrum.

Interestingly, after observing an increase in analyticity over time in European languages, some linguists have hypothesized that analytic languages are easier for foreign speakers to learn as adults, and that this causes languages with lots of geographic spread and inter-language contact to become more and more analytic. With creole languages being of course the most striking example.

> some linguists have hypothesized that analytic languages are easier for foreign speakers to learn as adults, and that this causes languages with lots of geographic spread and inter-language contact to become more and more analytic.

That's an interesting theory, and certainly fits with Mandarin (aka "Common Speech"); but how well does it fit with the prevalence of Greek in the ancient world, Latin during the Middle Ages, and Arabic in the Middle East and North Africa now? Those are all towards the "synthetic" scale, aren't they? Did/have those languages drift/ed to become more "analytic"?

Yeah, Latin and Greek became somewhat more analytic during the time periods where a lot of foreign speakers were adopting them as their main languages. (That was during the Roman period, not the Middle Ages, for Latin; Latin in the Middle Ages was a dead language used only by learned people in non-everyday contexts, so its grammar was mostly preserved.) I don't know about Arabic.
Standard Arabic is similar to Latin in Medieval Europe - it is a second language that is used for formal education and communication, but that no one speaks as a native language. All the Arabic languages that people speak as first languages are much more analytic.

It's a similar phenomenon to Latin, where the formal written Latin used in Europe preserved things like case endings and flexible word order, while the Vulgates that later became the Romance Languages dropped a lot of that and started relying much more heavily on word order.

Now that I think about it, languages that aren't subject-verb-object probably find OOP insane.

I tried to find an example of this and found a somewhat related article about how Japanese grammar maps nicely onto ruby: https://thoughtbot.com/blog/learning-japanese-the-rubyist-wa...

> Now that I think about it, languages that aren't subject-verb-object probably find OOP insane.

I'm not sure if that's true in this generality. After all, "agent.doSomeThingWith(object)" is not a declarative sentence, it's a command. So you'd have to look for languages where imperatives don't have subject-verb-object (as an acceptable) order.

I'm sure there exist some, but at least I would expect them to start with the agent you are commanding.

The agent still needs to hear the complete command to carry it out, so there's no strong pressure to prefer a particular word order.

In German, the difference between the imperative "Machen Sie das!" [Do that, you (polite form of address).] and the declarative "Sie machen das." [You (polite form of address) are doing that.] is that the imperative does not put the agent first.

Interesting point about German, though du/Sie isn't the kind of "agent" I was thinking of. I meant something where you name the agent by name, like "Frau Huber, machen Sie das!". And yes, I know you can put the name at the end as well.

The du/Sie in such sentences is something that's specific to German compared to the other languages I know, which don't need (or even allow) the pronoun: "do this", "faites ça", "gjør det" are all complete sentences. In fact even in German it's specific to Sie, for while you can say "mach Du das", "mach das" is fine as well. (If you speak a different dialect from mine, you might insist on "mache" instead of "mach", but around here that ship has sailed.)

Interesting how German doesn't allow to drop the addressing pronoun due to how the sentence structure works, but Scandinavian readily allows even the number of addressees to be derived from the context. I guess I prefer English over German as the language for programming because it shoehorns a lot of structure on a later, more boiled-down incarnation of Germanic, and notably (therefore?) ships many short and flashy words, such as "if", "on", "not", "do".
No. Object-oriented programming is not about syntax but rather is a generalization of functional programming. Functions are objects too: they have a domain and codomain as fields and implement the return ane call methods.
there is chinese python.

http://reganmian.net/blog/2008/11/21/chinese-python-translat...

I bet there are IoT devices out there that use it already.

For example:

#!/usr/bin/env zhpy

# 檔名: while.py

數字 = 23

運行 = 真

當 運行:

    猜測 = 整數(輸入('輸入一個數字: '))


    如果 猜測 == 數字:

        印出 '恭喜, 你猜對了.'

        運行 = 假 # 這會讓循環語句結束

    假使 猜測 < 數字:

        印出 '錯了, 數字再大一點.'

    否則:

        印出 '錯了, 數字再小一點.'
否則:

    印出 '循環語句結束'
印出 '結束'

which translates to:

  #!/usr/bin/env python
  # File name: while.twpy
  number = 23
  running = True
  while running:
    guess = int(raw_input('Enter an integer : '))

    if guess == number:
        print 'Congratulations, you guessed it.'
        running = False # this causes the while loop to stop
    elif guess < number:
        print 'No, it is higher than that.'
    else:
        print 'No, it is lower than that.'
  else:
    print 'The while loop is over'
  print 'Done'
I appreciate the idea behind this project. I assume that there is a potential in the subject of cognitive biases about programming.
I've always wondered why this is not more common. Is there a reason you can't just have localized keywords in each language that map to the same thing? Chinese JavaScript, etc?
That is a really great way of geofencing programming as a job where you can use the same knowledge basically everywhere. A really terrible idea imo.

But there are already (joke) projects that do this:

https://github.com/frozzare/fikascript

The A#1 most import aspect of a programming language is consistency. The alternative is localization hell, with no options in the middle.

Most things aren't this black or white, but this is one of them. Whatever the keywords for a language are, they must be exactly the same everywhere.

Excel seems to be localized and I absolutely hate it. A german version of excel expected me to write WENN instead of IF, or SUMME instead of SUM. It's dumb. Especially since if you're trying to look up code snippets or how to do something in excel, you'll find one in english and then have to find the corresponding german commands.
I hate that too soooo much. You never know the function names in your native language and need to google them. :)
Google docs had a really interesting quirk that drove me insane for about 20 minutes while I figured it out. I was helping someone with some shared spreadsheet on Google Sheets and figured out that SUMIF(...) was what they needed, by doing a bit of searching. Except that it refused to work where I needed it even when I followed the docs to the letter, and when I explored it a bit more the function seemed to work but only randomly. I'd recreate exactly the same data in the same positions in one sheet where it would behave as I expected, but in another it would fail.

It turns out that according to the locale Sheets will change the separator for params, so in en-US it'll be:

    =sumif(A1:A10, "Something", B1:B10)

while in cs-CZ it should be

    =sumif(A1:A10; "Something"; B1:B10)

On the one hand, that's really quite cool and impressive. On the other, I would never have expected a language or development environment to support different syntax depending on the locale in use.
Yeah, the pain whenever I have to remember what HLOOKUP is in German.

And a similar feature made CSV even worse.

The Italian version of Excel requires “;” to serate clauses in the localised version of IF, SE(<condition;<if-true>;<otherwise>) and other differences beyond mere translations, and that drives me up the wall and through the roof.
That's how it works in Excel, I'm not sure how it works under the hood but it's translated to your system locale so you can open up your French speaking colleagues spreadsheet and not notice the difference until they start asking about "=RECHERCHEV()".
Different word order (especially, verb-noun order [1]), different syntax for affixes and adpositions, difficulty in segmentation and even the non-existence of English-like "words", ...

You can't "localize" programming languages in that way. A new programming language, probably similar in semantics but with a completely rethought syntax, is needed for the true localization.

[1] https://simblob.blogspot.com/2019/10/verb-noun-vs-noun-verb....

I think it's cognitive overload. I remember when I was pretty young, there was a language named Logo. It has different but similar syntax in Polish and English. Eventually you used only one of them.
Fun fact: LOGO is actually a LISP.
"All modern programming tools are based on the ASCII character set, which encodes Latin Characters and was originally based on the English Language. As a result, programming has become tied to a single written culture. "

And that's good. That means "we" hackers/programmers/developers/coders/whatever share something in common, no matter our culture/country/religion/beliefs/whatever. Heck, I'd even go as far as saying it's a thing of beauty.

BTW, I'm not a native english speaker.

It is beautiful, but it's a barrier also. I don't think you should be barred from learning to code because you don't speak a language which uses the Latin/ASCII character set.
feel the same. there's a lot of people out there who never get a chance to learn any english. to write your own code based on ascii / latin char set might be ok, but to interpret other's code etc. would be very difficult. so for example in a school, having only code examples with ascii could be a significant barrier to teach ,when all other subjects presented are in the local language / character set.
But it still works! Right? The constraints imposed by the programming language self document our var names.

I understand Hindi YT vids that are science related. I dont know Hindi. It's fantastic.

Latin1 is critical. Handing over acceptiable byte sequences that our cli's acccept to standards bodies is a mistake. https://github.com/jakeogh/angryfiles

Pardon my french but that's a lame excuse. We are talking about maybe 20 crucial words like "if", "for", "while" etc. If somebody can't learn those, progressing with fully formed programming language will be a mighty challenge.

The drawbacks are numerous and huge - today you can get any code from any guy on the planet, and can read it instantly. He can name variables and comment stuff in his native language, still no problem. That's extremely empowering, and to lose it just that somebody doesn't have to learn few keywords is... dumb.

Having native programming languages beyond some playing around is foolish and step in wrong direction for all of us on so many levels, especially long term.

Missing the point... Everyone has to jump that barrier so that there's no barrier between us, which is much more important.
Native English speakers don’t
English keywords often have only the most tenuous links to their vernacular meaning. It's an unavoidable side effect of how different spoken and programming languages are. Compared to the difficulty of learning programming itself, remembering particular keywords is a tiny fraction of the mental burden.
Such is life, sometimes people have an unfair advantage.

But in this case, having a common language is still much more valuable than the unfairness that this common language is the mother tongue of some.

This is such an odd exaggeration; the number of words you have to learn to type are just abysmally small. You don't have to know what the word 'integer' is to know how it works in your code.

I-N-T, three letters, this symbol means that the number does not have a fraction associated with it.

As for the code base and documentation? Well, wouldn't you rather a lingua franca as opposed to trying to Google Translate your way through comments?

(comment deleted)
I think this point is vital, and yet completely lost in the current zeitgeist. Shared foundations matter. Without them, we can't communicate effectively.
Eh, I think you're forgetting how much english grammar exists in stdlibs.

`string.toUppercase()` is super intuitive for an english speaker, but is nonsense that needs to be memorized for someone that can't speak english.

(comment deleted)
That's my point: everyone has to learn a bit of english, and that's good. It's good for everyone. It's a personal annoyance at first but with a bit of effort you turn it into a personal skill which then benefits to everyone.

Community > Individual

I'm not sure how an arabic speaker having to learn english is better than you having to learn arabic.
It's not, but I don't get your point.
Your underlying point seems to be that the world would be better if we all spoke one language.

I disagree, and to my mind programming is no different than linguistics in this regard.

Sorry, there is no underlying point.
You are going to need to more clearly explain how this

  That's my point: everyone has to learn a bit of english, and that's good.
is "good" then.
Refer to my first post to find why.
I disagree. Calling English keywords in programming languages a barrier is the same as describing symbols in mathematics as a barrier. It doesn't matter which word signals an IF clause, the global uniformity is what is really important.

English has become the basis for the symbols of programming. You should not think of code as prose, it is simply code.

I don't think keywords are the problem, it's library function/type names that will be much more difficult to learn / interpret.
A localized language would only "fix" the keywords, and all the libraries (most made by third parties) would be even more difficult to learn/interpret - because if they wouldn't be in English, they likely would not be in your language, they'd be in someone else's non-English language.
There is no alternative. Mountains of code, documentation, Q&A posts, tooling have all been created in English. Even if you use a programming language that supports your own language you will be crippling your ability. Learning enough English words to use pythonh would be much easier than having to reinvent the world in your own language.
You're not barred, you have to learn relevant combinations of 26 symbols. If you cannot do that, I doubt you'll become proficient in programming anyway. OTOH,knowledge sharing in the field would be severely impeded if every piece of source code was localized to the wim of the author/marketplace/whatever.
That’s good if you write language-agnostic software and live in cool english low level or web bubble. If you take any local business-logic heavy software that uses a big set of terminology, you may regret that it wasn’t written at least by transliteration (better in native). This may be less of a problem for Latin-derived languages. I met this a lot, and it is a reverse problem of what jansan described about VB. You can read ifs and fors, but have no idea what is happening in the code, because names are completely google-translated with no context and then shortened or abbreviated. I highly doubt that non-native speakers could take jobs like that at all, as it is gibberish even for natives.
Non native speakers would'nt be able to take those jobs anyways if names were untranslated and in local script.
That’s what my point is. English is zero-profit for non-natives and hard time for natives in these cases. It could work, if a developer were a perfect english writer, and if english were a clear language of all specific terms in existence. But in reality, both conditions fail miserably in this area. Btw, it’s not a legacy pre-internet problem. In a recent local thread around half of developers couldn’t even translate the “income/expense” pair correctly.
> and hard time for natives in these cases.

Being able to get worlwide support on language/libraries/etc issues, even if you use native words in your business logic, beats writing "si alors sinon" instead of "if then else".

ASCII doesn't deal with (local) extensions of the Latin alphabet (in particular not diacritics), but to say ASCII is based on English... They are the basic Latin chars, no more, no less.
>to say ASCII is based on English... They are the basic Latin chars, no more, no less.

Bring back the Þorn! :D

How do you pronounce it? Kalb?
qalb and I think it means 'heart' or 'core'
'Kalb' sounds more like the word dog, 9alb is the correct way.
Nine Elby?

For non-speakers, it's a bunch of scribbly lines.

A technical problem with localising a programming language is reserved words: either you decide in advance which localised variants will exist and you can't add any later, or the variants are potentially incompatible and to combine code written for different variants you would need to do some translation that involves changing identifiers, and I can't immediately imagine how that would work with libraries and so on.

Alternatively, you pick a programming language that doesn't have any reserved words, such as FORTRAN. (Are there any other well known ones?)

PL/I. The argument there was that one cannot assume anybody to remember all the keywords (over 300 in some implementations. See https://www.cs.vu.nl/grammarware/browsable/os-pli-v2r3/), so they weren’t any reserved words, allowing, for example

    IF IF = ELSE THEN IF = ELSE - 1; ELSE ELSE = IF + 1;
Writing a compiler for that must be fun, especially if one wants to produce useful error messages.
On of the reasons that PL/1 didn't take of I believe, a pity as it was very advanced (for its time) and nice to work with.
so, like APL
The language is a Lisp with different identifiers and lists printed right to left.
OT: Languages are the biggest lock-in + market barrier for others an economy has (best example is China). Great that English has got even bigger as a lingua france since the Internet started. I think every try to spread local languages is just wasted time. I am rather afraid that more tech leadership comes from China (I am looking at all the Chinese Githup repo READMEs).
If this is an ironic post, hats off to you.
Dear tsanummy, help us to find the irony in my post or better the message in your post. So, what's your point? I'd love to know what you are talking about.

Just to give another example: Imagine all countries in the world had the same language and people could move freely: You had massive and full competition between all nations/cities/economies for the best people and competition is good. Nobody is locked-in because of odd languages or would you dare to move to Beijing tomorrow?

Or imagine you had the same with languages and a nation forced people to only use Cobol and ignore newer developments. You get it? English is btw also a language which is easily extendable, something like creating verbs out of nouns is not that straight-forward in other languages. It keeps English alive.

As an addition to the question about where you are from that was already asked, how many languages do you speak?
All countries in the world speaking the same language is like asking for an organism without immune system
If suddenly all countries had the same language i bet overtime, they will change and gradually evolve into multiple language.
I kind of doubt that. The Internet, movies, TV, etc would keep us all connected enough that we would still all be able to understand each other. This article[1] even mentions some grammar forms where America and Britain diverged that have joined back together (I assume due to the Internet etc) ("can I", subjunctive, and British slang).

[1] https://news.ycombinator.com/item?id=21293876

Interesting thought, and looking at how many Romance languages evolved from Latin in the past, there might be something to it. At the same time there are languages that managed to re-unite the different dialects, at least in education and literature, I am thinking about the Hochdeutsch for German [1]. So we have at least a counter example. Would be interesting to know what are the factors that lead for similar languages/dialects to become one or the opposite.

[1]: https://en.wikipedia.org/wiki/Hochdeutsch

Makes me wonder, if there could be a transpiler of some sort that could take a non-English syntax and convert it to the English counterpart syntax.

This way there might not be a need to invent a new programming language per human language.

AppleScript in its original, 90’s classic macOS implementation, was said to support this. It compiled down to a symbolic representation, which was then restored based on which language was selected. IIRC only a French alternate language was ever developed (HyperCard had more, but those scripts were stored as text) but also a JavaScript “dialect”.

The compiled representation was mostly exposed to users when they didn’t have the app used in a script installed and just got FourCCs/OSTypes sprinkled throughout their script instead

Interesting, haven't heard of these!

I am sure many small projects attempted to innovate similar solutions but never really took off.

If such a thing got popular, would be interesting to see if it would affect international collaboration. Whether it would speed things up.

The big problem is more with APIs, variable names, documentation, and comments. Those can't be easily translated. Languages keywords can easily be memorized.

The lesser problem is with languages that don't read left to right, since the parsing of the language has to be reversed.

Many languages now support UTF-8 for variable names, so in theory you could code those in any left-to-right language by just choosing different variable and function names,

It's actually never come to my mind that there are only English programming languages

So programmers in China and Russia also using only English programming language?

Yep. That's probably why you'll never met a developer without a rudimentary understanding of written english.
As some empirical evidence, look at how few StackOverflow sites there are in other languages: https://stackexchange.com/sites?view=list#technology-traffic. Just three (Russian, Spanish, Portuguese), all were introduced 5+ years after the main site started.

Similarly, Github doesn't have localised versions.

There are certainly clones in other languages (e.g. https://teratail.com/ clones SO in Japanese), but it shows how little demand there is when these well-funded platforms for developers de-prioritise local versions. I couldn't imagine a comparable platform for lawyers or accountants doing same thing.

I will tell you even more -- in Russia it is dominant practice that code comments are written in English as well, though could be written in Russian. You never know who will work with your code tomorrow.
In China there are several Chinese PLs, the most wildly used is called EPL(易)[0]. However, those are not generally used in production other than lightweight scripting scenarios.

Comment-wise, many companies use Chinese comments in code while many use English as well.

https://en.m.wikipedia.org/wiki/Easy_Programming_Language

It would be more ironic if integer constants had to be written as Roman numerals.
This is at best useless, and at worst harmful. If we start using languages other than English for code, then we'll end up balkanizing the software world. People in humanities departments can talk about things like "Chinese Poetry" and "Continental Philosophy," but in STEM, we should be above that nonsense. I should be able to read code written anywhere in the world and understand what it does.

This is the same reason that everyone uses FORTRAN. Can you imagine if people went off and created their own "programming languages" instead? You wouldn't be able to contribute to an open source project unless it happened to be written in a language that you knew. There would be so much duplication of effort: someone would write a library for Foo Language, and someone else would do the same thing for Bar language. Job postings would ask for "Foo Developers," and you wouldn't be able to just work anywhere. Fortunately, programmers collectively decided to all use the same language. Let's not go back on that decision.

I think Lojban is the only language that could work (not just for computers but humans as well). I do not see it happening anytime soon though.

For anyone who does not know what Lojban is: https://en.wikipedia.org/wiki/Lojban#Applications would be a great starting point. :)

>I think Lojban is the only language that could work (not just for computers but humans as well)

What about humans who like to think in a language whose idioms, history, etc match their culture?

Heck, human languages even adapt to the climate (e.g. warmer areas having more vowel sounds, cold areas optimizing for shorter/less open mouth exposed to cold air, etc).

Plus there is some naivety in the idea that humans need or want a "logical and unambiguous structure". We need it for some things (math, STEM), but we seek more freedom to be ambiguous in other things -- and in fact it can be essential to the very civilization to be able to be so (for diplomatic reasons, civility, psychological, etc).

(comment deleted)
Does https://en.wikibooks.org/wiki/Lojban/Culturally_neutral or https://wiki.c2.com/?CulturallyNeutralLanguage answer your question?

From the second link:

> The only thing that characterizes a logical language, like LojbanLanguage, is that it's unambiguous from a structural standpoint. It seems that Lojban is just as expressive as any other human language, with the same capacity for overstatement, understatement, irony, metaphor, simile, pun, etc. A lot of famous works of fiction have been translated into Lojban by enthusiasts.

Your concerns have been brought up and explained in part by the two links above, and in the Wikipedia article I linked to. Allow me to quote some parts from it:

> The removal of grammatical ambiguity from modification [...] seems to heighten creative exploration of word combination. [...] Other areas of possible benefit are (surprisingly in a 'logical' language) emotional expression. Lojban has a fully developed set of metalinguistic and emotional attitude indicators that supplant much of the baggage of aspect and mood found in natural languages, but most clearly separate indicative statements from the emotional communication associated with those statements. This might lead to freer expression and consideration of ideas, since stating an idea can be distinguished from supporting that idea. The set of possible indicators is also large enough to provide specificity and clarity of emotions that is difficult in natural languages.

> The language was built to attempt to remove some limits on human thought; these limits are not understood, so that the tendency is to try to remove restrictions whenever we find the language structure gets in our way. You definitely can talk nonsense in Lojban.

Anyway, you can decide to be ambiguous if you wish to do so, it is perfectly possible. Do not worry, it will not turn our society into something similar to the movie Equilibrium. I think the word "logic" makes people jump to similar conclusions.

Wait, was the last 30 years some Picard-and-the-flute dream? Thank God! Hopefully the next FORTRAN version will keep the name all-caps.
I have a feeling a lot of art projects in history have been described as “at best useless, and at worst harmful“. For example leonardo da vinci’s bicycle.

Even if that is true, here or in the other art projects, the purpose is to evoke some aort of response, to capture attention and to provoke discussion.

And by this measure and judging firom the comments here this has been a resounding success :)

> This is the same reason that everyone uses FORTRAN.

The person you are responding to is not being serious. it is a joke.

I think you are being sarcastic/ironic.
That is what I have gotten as well starting from the "This is the same reason that everyone uses FORTRAN." bit.
(comment deleted)
Some games (e.g. the anno series) actually have a german language scripting language for custom maps.

And the original, first high level programming language plankalkül also had nothing to do with english.

Very funny, but no, it's the reason we have one hundred languages instead of a thousand
There ARE successful (used in production) languages with non-English syntax.

You're just saying "Everyone should use Chrome, otherwise the web would be balkanized". Or, taking it to the extreme, "every book in the world should be written in English".

>I should be able to read code written anywhere in the world and understand what it does

You are, but no one promised "without any effort". Almost every developer of not English-speaking origin put that effort, why shouldn't you?

>You wouldn't be able to contribute to an open source project unless it happened to be written in a language that you knew

You've just described the status quo.

they are joking.
How can you tell? It looks like a serious post to me.
The whole second paragraph where they talk about everyone writing FORTRAN and no other programming languages existing.
(comment deleted)
So glad this turned out to be a joke in the second paragraf. The first is very believable. I've definitely encountered people who would write something like it unironically.
TBH, I didn't get the joke until I read your comment. A small "/s" at the end wouldn't hurt.
Pointing out it was indeed a joke, was part of the reason I wrote the comment in the first place.
Just to be clear - I think your parent should have put '/s' at the end, not you. :)
To be frank, "/s" would have totally ruined it for everyone else.

I'm assuming that you simply didn't read past the first paragraph? (That's fine, I bet we all do that way too often here) I mean, I have a hard time believing that you really can't tell that a post that states that everybody uses FORTRAN isn't serious.

I care because HN has a way of ruining satire and sarcasm this way. These are only the delightful stylistic devices that they are when you don't say that it's satire (resp sarcasm). I truly wish we'd all "/s" a little less, not more :-)

I'm sad to admit I downvoted after the first paragraph. I was glad HN let me undo that after I read the second :)

(also, hey skrebbel! :)

No, not really, I read the whole post. And the FORTRAN reference was weird, but there are weirder things people post (and believe), and when writing, people do make mistakes. Thinking back, it should have been the clue, but it wasn't. And judging by the other answers, I am not the only one who was fooled by the tone.

That said, if you feel like `/s` is ruining the sarcasm for you, the solution is pretty simple. GreaseMonkey [0] should be able to remove it very easily, while adding it would be _a bit_ more challenging.

[0] https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/

> No, not really, I read the whole post. And the FORTRAN reference was weird, but there are weirder things people post (and believe)

True. I'm sometimes a source for similarly controversial statements. However, the following line should suffice to indicate the facetiousness of the post:

> This is the same reason that everyone uses FORTRAN.

Everyone does not use FORTRAN, and in fact it is so uncommonly used that it is ridiculous anyone would think otherwise. There are probably quite a lot of people in this industry who've never even heard of FORTRAN.

This is a common form of sarcasm in English, to counter an argument (programming languages should be English-only because there'd be too much fragmentation otherwise) by presenting the same argument in the context of something obviously untrue (that's why everyone uses FORTRAN).

Did you read my comment? I also said:

> ...and when writing, people do make mistakes.

Maybe he meant Python, who knows? If only there was a way to signal you are being sarcastic to avoid misunderstandings. Oh wait... /s

> To be frank, "/s" would have totally ruined it for everyone else.

Yes and no. Here on HN I see it everyday: good on-topic jokes get downvoted.

I suspect this happens because when people are in "HN mode" there comes a sort of earnestness into their state that makes it hard to detect other tonalities.

P.S. I needed the FORTRAN bit until it dawned on me…

We need a committee to form standards for sarcasm indicator use in various contexts.
Autism and humor are two irreconcilable elements; attempts to bridge them fare as well as for matter and antimatter.
I don’t think it’s fair to assume that there’s a higher incidence of autism on HN than elsewhere (bad social skills can also occur in neurotypical people), but hot damn does it really bug me that HN has such a hard time with snark.
It's not just snark—try dropping a colloquial "all" or "none" in a context where that's clearly what it is, and watch ten people rush to correct you that "well, technically..."

Or even carefully qualified statements! I think folks here drop "most" and "typically" and similar words as they read. You have to write poorly, qualifying everything three times and disavowing a bunch of stuff you obviously aren't saying or even implying anyway, to make sure you don't get a bunch of pointless comments.

Technically correct is the best kind of correct!
...hot damn does it really bug me that HN has such a hard time with snark.

Yeah, I've noticed that when I get sarcastic or snarky, it's very often an invitation to being downvoted. I can't tell if it's because people don't get the sarcasm or snarkiness, get it but are offended that I'm using it at all (especially without an "/s"), or are offended that I'm being snarky about [insert sacred technolibertarian cow here]. :)

I was using autism colloquially. :3 (The irony)
I have run into this a few times when I've posted a link (where it seemed amusing and relevant to a discussion) to this classic video of Australian Senator Bob Collins discussing an environmental mishap:

https://www.youtube.com/watch?v=3m5qxZm_JqM

Invariably, someone replies with a comment like "People should be aware that this is not actually an Australian senator, it is the comedian John Clarke impersonating one."

Every. Single. Time.

As if it wouldn't be obvious after watching the first few minutes of the video!

What ever happened to the fun of not realizing something is satire until you're partway into it?

"Fortunately, programmers collectively decided to all use the same language."

That zinger didn't tip it off to you?

Totally went over my head. I thought he was talking about programming languages uses the same language for their keywords.
That's one of the biggest problems with sarcasm/irony in casual writing. There's always someone who misunderstands and treats it as serious. This problem is amplified by the number of eyes a typical internet comment receives. It's a major way people are radicalized by internet communities. There's always a proportion of members who are being "ironically" sexist/racist/discriminatory but eventually people take it seriously, the ironic commenters are pushed out of the community and presto, you have 4chan and worse.
I watched this happen in /r/TumblrInAction. Over the years it got more mean spirited and fell for more obvious trolls/satire as people less committed to the cause of disrespecting self-identity moved on. Now it's all "lol attack helicopters" and cruelty, and half the former regulars are now queer leftist furries.
I loath the cheap humor aspect to forum commentary. It is hurtful as noise or incidentally inflammatory, as you mentioned. There is no way to eliminate it, but that isnt the point. I dont promote pure misdirection.
Yeah, thanks for saying that in English, I wouldn't have been able to understand you in any other language.
da nicht für
(comment deleted)
syntax error
python --lang=german main.py

shivers

Think it would be --lang=deutsch. Gotta internationalize the command-line flags too!
I think you mean, --sprache=deutsch
Imagine the CLI...
It's already there, I've often seen console output with translated error messages. Helpful for the users but not of much use to developers, unless using error codes as well
Absolutely. If we do localization of UI texts, the command line options should be included :)
How about having them just as flags then?

python --deutsch mein-kampf.py

python --ελληνικά φορολογία.πυ

You are all being silly.

Obviously we would translate the name of the command itself, and the language would be implied

  riesenschlange main.py
Frankfurt-am-Main.py
Basic would be fun though...

10 drucken 'Hallo, Welt!" 20 gehe zu 10

10 drucken 'Hallo, Welt!" 20 gehe zu 10 aber schnell

-o3

Haut.py
More like 'Haupt.py'. ('Haut' is 'skin') But in German that alone would translate back to 'head.py', so you might want to give some more context to it like 'Hauptdatei.py' ('main file.py').
Excel and other spreadsheet software products localize their function names.

So people learn to use those in their native language which is great.

But if they need to use the same software with a different language setting, because they move or work abroad, they have to relearn all those function names, which sucks...

It's not great even in the learning scenario. First I have to Google how to solve the problem and then I have to Google how to translate the function names to Swedish.
> Excel and other spreadsheet software products localize their function names.

And, most annoyingly, their thousands and decimal separators. That has tripped me up countless times.

100,991 vs 100.991.

I once worked with a person in an ecommerce department who was annoyed that a German website used German instead of English.
Wow I stopped reading after the first paragraph and almost missed the joke. I have other things to do...
At worst it's about as "useless" as other niche programming languages like Brainf* and the like.

While this language doesn't seem to be geared towards introducing people to computer science, all the languages based on English require someone to learn that script, that language and some of its culture first before being able to use it.

And in much of the world people don't regularly start learning English (or a latin script for that matter) in elementary school. A language based on Arabic (or Chinese, Korean, etc) could help with introducing computer science in school before the students master English at the necessary level...

This comment is a good way to see all the HN users who go off of a comment without reading it fully.
Doesn't everyone do that?
I fail to see how this is good way to see all the HN users. Why would I even want that? There must be thousands of HN users.
Hundreds even!
I honestly don't understand how people can reply without even reading what they're replying to. And when they do, why aren't they downvoted to oblivion?
It's not always easy to get these jokes in the internet, even more so for non-English speakers which are, precisely, the ones who may be more harmed for not getting this particular joke.

I only downvote when I see some comment that goes against the rules, I do not think that it is my task to punish those who do not read a comment or do not get a joke.

Our comments, however, clearly go against the guidelines:

> Please don't comment on whether someone read an article.

> Please don't comment about the voting on comments. It never does any good, and it makes boring reading.

Time is limited. I'd be lying if I said that I read all comments in full when their first paragraph appear to be nonsense.

I'd rather move on to the next comment.

Is this what it means for communities to be too large? Like, you'd never do this to a coworker or a friend, but here there's enough content and users that you can say "fuck it" and assume you know better than what you didn't actually read.
(comment deleted)
In fairness, lots of people talk over their friends.
I'd prefer to not have to discuss problems in Ali's code I can't read, yet his algorithm doesn't work, but I can fix typos in our resident elderly COBOL programmer's output, even though he's from SE Asia and his English is rather basic. It seems like a personal preference, yet I think it's more complicated than that.
(comment deleted)
A lot of people don't speak English and I think it's main barrier to become a programmer or QA engineer.
it's much much easier to learn coding than to learn English. i have coworkers that don't speak English but have no problems coding.
Well, for people like us, obviously. I have many friends who are multilingual, and who can easily learn a 4th or 5th language if they want, but who have/would struggle with the logical and mathematical facilities required to code.
Good! We need less shitty software, the fewer people that write it the better.

I don't get why you have to be a certified engineer to build a bridge, but you can be some bloke with a 2 weekend course in python to program medical computers, avionics, train scheduling systems and other stuff that kills people when it breaks.

Non native speaker btw.

Good point. There's just one problem: any moron can still be able to become a programmer if they come from an anglophone country. Therefore, I propose that all companies in English-speaking countries switch to using Linotte[1], which is based on French.

I'm also going to submit a patch to GCC that will require the user to solve a differential equation before their code will compile.

[1] https://en.wikipedia.org/wiki/Linotte

On the fact that the atlantic has two sides: https://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/E...

> 1. good programming is probably beyond the intellectual abilities of today's "average programmer"

2. to do, hic et nunc, the job well with today's army of practitioners, many of whom have been lured into a profession beyond their intellectual abilities, is an insoluble problem

3. our only hope is that, by revealing the intellectual contents of programming, we will make the subject attracting the type of students it deserves, so that a next generation of better qualified programmers may gradually replace the current one.

> any moron can still be able to

Whoops, proved my own point.

Because man-hours is the limiting factor in software that is made. Additional software simply gives you more options to choose from. Yes, it contributes to noise, but it's nothing like building two bridges.
And thats why Apple and Microsoft have the best software?/s A monkey with a typewriter will produce garbage no matter how many monkey hours it puts in.

The only way to have as little bugs as possible is to have as little software as possible.

You don't need to know English to write code. I wrote my first QBasic and Visual Basic programs (one of them was "photo editor") when only foreign language I knew was German (my native is Russian).
Or at least just a few words I guess - if, for, while etc.
You don't really need to know what these words mean in English. You just have to know what they do in the code.
It's a headstart for sure, but English speakers do have to learn those reserved words and control structures in each language. The difference is we have the benefit of grounding them in their similar, but not identical, ordinary meanings

The bigger deal is standard lib classes and functions. An English speaker can guess for the names of things they want whereas a nonspeaker would have to remember them explicitly

I'm really curious now. If you don't mind me asking, how did you learn the meanings of the keywords when they were in a language you didn't understand? Did you have to learn to translate "for", "while", etc into Russian equivalents?
I knew meaning of "if then else", "function", "go", "return", other keywords were just keywords for me - I knew what they do and it was enough.
Same way you learn to use the ternary operator in c-ish languages? All the binary operators that have no equivalent in daily life?
How do you learn to read music when all the keywords are in Italian? Do you have to learn to translate “fortissimo” etc into English equivalents?
Context. I don't know what lingua franka means, but I also know what it means. I could bother and find literal translation, but why would I? The same applies to obscure English words, weird programming language keywords or math symbols. Integral and differential symbols don't really translate into anything and we use the word "integral" only because we can't type this symbol on an average keyboard.
It's also a barrier to becoming a scientific researcher, an airline pilot, or working at an international company. If you're going to communicate with people from other cultures, you need a shared language, and many international contexts have centered on varieties of English for that shared language.
We Programmers need multiple languages to avoid being affected by Snowcrash.
Considering that it is a relatively limited set of keywords and operators that make up a programming language, wouldn't it be relatively easy to translate it to a more friendly version?
Nope. You can translate instructions, but standard library and frameworks also should use local naming or it will be completely useless.
>> It is implemented as a tree-walking language interpreter in JavaScript.

I think this is probably why it is neither useful nor intended to useful other than as an "exercise".

* https://wordsandbuttons.online/fortran_is_still_a_thing.html

"Fortran is not, of course, outdated, and it’s not at all complex. In fact, it has grown into these myths exactly because it is that good at what it does."

Just wanted to share some positive FORTRAN vibes...

> Its users are scientists and engineers; not computer scientists and software engineers, but the real ones

That's an unnecessary slight

Yes, but it made me laugh.
Im not sure your analogy holds ground.

Different programming languages are created try to solve limitations in existing programming langs.

Writing it in a different ascii character set isn't solving any technical issue - it's solving an accessibility issue, but compounding the problem of compatibility tremendously.

Obviously there is a efficient middle ground between accessibility and compatibility.

It's great for more people to be able to code. It's also great to be able to read code written by someone else across the world.

There is both pain and wisdom in standardization.

I'm not sure that I accept the distinction between technical issues and accessibility issues in the case of programming languages. Any Turing-complete language, given the right tooling, can be used to solve any software problem. Ultimately, we only use languages other than FORTRAN (or even assembly, for that matter) because it's easier.
A grid of rocks in a desert is turing complete. It's not a useful concept for discussing the differences between programming languages, precisely because it's such a low bar.

"Any software problem" includes these two extremely common problems, neither of which has anything to do with Turing completeness:

* It needs to do something fast

* It needs to be written quickly

I wasn't suggesting that Turing completeness means that all languages are somehow the same. To the contrary, I was arguing that languages are differentiated primarily by how easy they are to use for a particular task—in other words, their accessibility.

Execution speed is clearly not the reason why multiple programming languages exist, because assembly is as fast or faster than high-level languages. Rather we use programming languages because they are easy to understand and reason about, allowing us to work quickly, among other things. The usability of a language is impacted by things like whether it has automatic memory management, or whether it uses functions instead of gotos, but also by the vocabulary it uses. Consequently, I see the vocabulary of a language as not particularly different from those other attributes.

While it’s a good joke, in reality it does not compute.

“Learning a new language” as in programming language, sits in the days-to-months range, while “learning a new language” as in Arabic takes months-to-years, so you’re building a much, much deeper chasm for others to cross and contribute, even though the source code remains English-based.

You can already see this happening with some open source libraries coming from China, where the documentation and all discussion being in ZH already completely blocks foreign contribution.

As you say it's already happening for project where all the documentation is not in English.

So what's wrong if the language also is not in English? Can you not imagine that some projects don't care whether you specifically can contribute or not?

It's not the first language not in English actually, WLanguage for example from WinDev can be written in English, French or Chinese.

Not only that, you can see people trying to escape the divisions on the programming language landscape, for example on the data-science field Python is miles ahead of any other language (and such homogeneity is widely seen as a good thing).
Given that one in five person on the planet speaks Chinese as their first language, lack of “foreign” contribution will probably work out okay for them. Global contribution is nice but certainly not necessary. Whoever started the communities have the right to set the rules, using Chinese for (primary) documentation and discussion being one of them. If you don’t like it you can start your own.
Pure numbers mean nothing. Neither a farmer with no internet nor an urban Chinese citizen with a mobile internet but no actual computer is liable to contribute much.

There are 800 million Chinese internet users almost all are mobile only. Those that work as professional developers are expected to work insane hours that are unlikely to leave much time for public works after 9 to 9 6 days a week.

> There are 800 million Chinese internet users almost all are mobile only.

What's that supposed to imply? Just Googled "number of software developers in China" and "number of software developers in the world". Got 5.79 mil (2017) and 23 mil (2018) as answers. Not sure how accurate but can't be that far off.

> Those that work as professional developers are expected to work insane hours that are unlikely to leave much time for public works after 9 to 9 6 days a week.

I didn't pay too much attention to that story, but having talked to a few software developer friends in China myself, I'm inclined to say it may be a widespread problem but probably not universal. Whether that's true or not, I certainly see a fair share of popular open source projects coming from China these days, not one in five of course, but given their relative isolation and my inherent U.S./Western bias the number that caught my eyes are still quite impressive.

Not to mention there are a lot of corporate open source in China as well. In fact, just like in the U.S., a good chunk of high profile open source projects are corporate-developed or corporate-backed.

Moreover, whether one in five is accurate wasn't even the point of my post.

Parent poster

>You can already see this happening with some open source libraries coming from China, where the documentation and all discussion being in ZH already completely blocks foreign contribution.

You

>Given that one in five person on the planet speaks Chinese as their first language, lack of “foreign” contribution will probably work out okay for them.

The point is you are using number of native speakers as a proxy for the population of developers being sufficient to support development.

First thing is the single most popular l1 language in China manderin is more like 1 in 8 humans, next the distribution of talent is nothing like distribution of speakers. It looks a lot more like the distribution of wealth because access to computers during formative years or indeed at all is of substantial importance.

There are of course still many Chinese developers of substance. But because highly educated developers in China are both a smaller portion of the population and likely to speak English starting a manderin only software project would mean choosing between only Chinese developers and Chinese devs and the rest of the planet as well.

> First thing is the single most popular l1 language in China manderin is more like 1 in 8 humans

Wrong in this context.

1. People who speak other dialects like Cantonese overwhelmingly use the same written language, so there's no barrier in written communication;

2. AFAIK Mandarin is the mandatory teaching language in Mainland Chinese schools, so even if you want to be pedantic I'd say 1 in 5 has native or bilingual proficiency in Mandarin.

> starting a manderin only software project would mean choosing between only Chinese developers and Chinese devs and the rest of the planet as well.

First, there's no such thing as a "mandarin-only software project", you use Chinese the written language as explained above.

Secondly, it's still a reasonable choice if the author finds the alternative mentally draining, or the primary audience does. No point in global-proofing your project if the primary audience need to spend extra time and energy to communicate worse. I don't necessarily advocate for it, but I don't pretend that every project on earth has the obligation to make it convenient for me to contribute.

> lack of “foreign” contribution will probably work out okay for them.

That’s not how it works. Programming proficiency isn’t randomly distributed across the population.

If it's completely impossible to work on something that uses a foreign language, then it must be pretty important for people to be able to program with the language they already know.
There is an obvious difference; English is still the lingua franca. If you're dealing with anything international, you use it because everyone has a decent shot of knowing it; assuming most oss isn't confined to a single nation, english is still the best choice. Plus, for this reason, other nations are usually much better than America about teaching a foreign language.
Sure, if you want to start an international project, then English is a pretty good language to use.

However, I have heard people say that all software everywhere should be written in English, including things like personal projects and internal tools for companies in non-anglophone countries. I think that's kind of ridiculous.

I guess it depends how you define, "Written in english." Standard keywords in, say, C++ are derived from english, though they have a symbolic meaning everyone has to learn. I'd understand variable names and docs being in a foreign language.

Best-case is still engligh, though; working in another language is like doing science in American units. It works fine as long as you stay localized, but if you need to hire foreign devs to supplement your team, good luck (see the infamous Mars rover crash.)

Something about non-English comments in source code is really off-putting. That, and if you generally do want people to understand, then you should use English. If that does not matter to you, or someone else, then do not.
> That, and if you generally do want people to understand, then you should use English

What if the people you want to understand aren't English speakers?

I grew up in a home that spoke another language. I'm glad there was on obvious lingua franca to learn that's allowed me to work with people all across non-English countries in Europe, Africa, South America, and India, and will probably continue to serve me well.

I'm not opposed to people developing tools in their native languages, but let's not pretend like projects that use this language aren't going to be completely isolated from most of the rest of the world.

(comment deleted)
Surprisingly (at least to me) when I had this discussion online in the past the biggest pushback I got against using another language in code was from non-native speakers. They all were highly comfortable, and preferred, that their "work language" was English.

For better or for worse, the world has settled on English as the lingua franca for business.

I imagine, however, that you don't hear much from the people who didn't become programmers because their English wasn't good enough.
Because they don’t exist? You can definitely learn programming following local language tutorials. It does not require learning English grammar or a large vocabulary. But you might need to communicate witn other people, especially if you’re doing open source.

I feel there is a point you want to make, but am not sure what it is.

> Something about non-English comments in source code is really off-putting.

https://en.wikipedia.org/wiki/Cultural_cringe

I am sorry, what? I do not dismiss my own culture as inferior to the cultures of other countries. Not at all.
(comment deleted)
Clearly you dismiss other cultures as inferior to your own, though.
No, I clearly do not dismiss other cultures as inferior to my own, though.
(comment deleted)
(comment deleted)
(comment deleted)
No customer ever objected to my code with English variable / method / function names. Some don't care, others explicitly ask for English because maybe "one day we want to sell the company to somebody outside the country".
> English is still the lingua franca

Ironic that in order to say this, you used a latin phrase that translates to "language of the Frankish people".

Ironic? I think one of the main reasons English has become such an international language is how bastardized it is and how easily words & phrases are borrowed from other languages.
The fact that the Latin translation doesn't make any sense means that it was an English phrase the whole time, despite its etymology.
Except that it doesn't mean what you imply.

> The term lingua franca derives from Mediterranean Lingua Franca, the pidgin language that people around the Levant and the eastern Mediterranean Sea used as the main language of commerce and diplomacy from late medieval times, especially during the Renaissance era, to the 18th century. At that time, Italian-speakers dominated seaborne commerce in the port cities of the Ottoman Empire and a simplified version of Italian, including many loan words from Greek, Old French, Portuguese, Occitan, and Spanish as well as Arabic and Turkish came to be widely used as the "lingua franca" (in the generic sense) of the region.

> In Lingua Franca (the specific language), lingua means a language, as in Portuguese and Italian, and franca is related to phrankoi in Greek and faranji in Arabic as well as the equivalent Italian. In all three cases, the literal sense is "Frankish", leading to the direct translation: "language of the Franks". During the late Byzantine Empire, "Franks" was a term that applied to all Western Europeans.

https://en.wikipedia.org/wiki/Lingua_franca

For centuries in the sciences, it was essential to know more than one language in order to be able to keep up with developments worldwide. As recently as our parents' generation, it was a graduation requirement for doctorates.

That English has become the lingua franca [1] of the world is a recent development. If we would like people to read our documentation, it is reasonable to expect that we should do our best to learn how to read theirs, too.

[1] https://en.wikipedia.org/wiki/Lingua_franca

Universities have only recently (past few decades) started dropping the foreign language requirement for the PhD.
Latin used to be the language of science & religion in europe too, it's not unprecedented that an industry standardizes on one language in a region.
There are 6000 languages. Even the top 5 would take a decade of your life. It would make more sense to have a miniscule fraction of people make machine translation better.
In the early days of nginx non-russian doc was a link to Google translate, and that was good enough, it worked fine for everybody.

How do you think non-english speakers read documentation in english?

We don't have to globalize everything. Yes, it's wonderful that we have the potential for people around the globe to work on and benefit from a particular project, but it is not necessary for every project to work that way.
How large is the chasm for a new programmer whose native language is Arabic?
It's pretty high. We could make it lower by helping people learn English but tools to program in their existing language so they don't have to learn English first make sense too.
You might be surprised how much Arabic you can pick up if you spend a few weeks in a place like Cairo. It helps if you make an effort to completely immerse yourself and not spend too much time in western style shopping malls.
Moving to a different continent is a bigger chasm yet.
Think about all the bad variable and function names from your ESL coworkers. This stuff matters to me enough that I know I would hate being on a project knowing I'm That Guy.

It does bring to mind that Mathematics isn't really done in 'english', it's a pidgin of latin and arabic symbols (and like most or all pidgins, has some whole-cloth inventions).

Instead of making most people learn a new language, should everyone have to learn a new language? Like they used to teach college in Latin in Europe?

The problem is that the only programming language I know of that tried to be its own language-language was APL and thoughts of coding in that give me nightmares.

UML tried to remove some of the english and fared better than APL but that's a wide chasm to cross and they too ended up at the bottom of it.

We are very, very slowly replacing some text in programming languages with more symbols, and with more parsers accepting Unicode characters for string literals we also should have access to the entire panoply of mathematical and scientific symbols (I'd really love proper multiply, not, and exponents to start, then maybe we can talk about sigma for some reduce operations) but the tipping point into "let's go ahead and remove the rest of the english" seems so far off that I'll probably never see it.

> The problem is that the only programming language I know of that tried to be its own language-language was APL and thoughts of coding in that give me nightmares.

Have you ever actually tried learning APL, or are you just trolling?

"I should be able to read code written anywhere in the world and understand what it does"

You cannot read tons of code written in the 1C language [0] unless you know Russian, but I don't think it's a loss for you or for Russians because it's a scripting language used by a suit of enterprise software dealing mostly with ever changing Russian accounting standards and tax code [1].

At the same time it's economically effective to use Russian language because it lowers the entry barrier into 1C programming and allows domain experts to understand some of the code.

P.S. Yes, I didn't bother to read the second paragraph :)

[0] https://govnokod.ru/1c

[1] https://en.wikipedia.org/wiki/1C_Company

My Russian is shitty, but not so shitty to not understand what "govnokod" means :-)
Anyone with experience in 1C/tales of 1C? I've been curious about it since discovering it existed.
Not me :) If you are interested in something specific I could try to google (or should I say 'to yandex' in this case?) that for you and hopefully you'll be able to read it with the help of Google Translate.
that's certainly funny up to the day where you have to debug a codebase where all the function names and comments are in japanese. Also, I lost so much time searching for issues in badly-localized error messages that I nowadays just set my computers in english even though it's not my main language. It's just more efficient.
Yeah I have seen that. It highlights the one weakness of text based code formats - still prevaling for a good reason.

Multiple languages for developers is kind of a fringe case for functionality seen more in importers and fantranslaters.

> It highlights the one weakness of text based code formats

This is why I program exclusively in Piet

Eh, I had to support a codebase where the comments where in inproperly encoded cryllic. But happily the code was a php app that had lots of large hand crafted if soups for handling dates, so I'm pretty sure the comments were useless anyway.
In the current status quo your nightmare scenario (having to debug a codebase with comments in a diffeeent language) is precisely the everyday reality for non-English speaking devs. A Japanese dev could easily make the same comment as you, the difference being he actually has to deal with situation in question on a daily basis.

You could make the argument that English is the "lingua franca" but the phrase itself demonstrates just how ephemeral that is. I've lived in places before where a generation ago Russian was taught as a "lingua franca". Nowadays you would be hard-pressed to find anybody with a good understanding of Russian (good enough to understand technical documentation) there, even amongst ethnic Russians.

The internet has changed what it means to be the Lingua Franca. The ubiquity of English language in the largest internet communities and high quality media content would have to have a very strange reason to change. Before, it was simply a function of your colonizer or trading partners.
I love the video on the page. I like the way RTL looks and the way the author/creator specially mentions the beauty of arabic and how the code can be made to look aesthetically pleasing (not that I know anything about arabic personally). Too much of our time is spent on functionality and terseness: so it's great to see this project.
That's exactly why all the HN'ers use JavaScript to write FORTRAN!
I think that the root issue here isn't as scary as it sounds (yes I know the OP is being ironic, but this is still a real concern that people have). One could easily write a tool that translates a foreign languages codebase into something english-readable. The plus here is that the bad google translations would probably yield descriptive names that are no worse than what we are already accustomed to.
This is valid python3, try it out.

  數字 = 23
  運行 = True
  假 = False
  整數=int
  輸入=input
  印出=print
  while 運行:
    猜測 = 整數(輸入('輸入一個數字: '))

    if 猜測 == 數字:
        印出('恭喜, 你猜對了.')
        運行 = 假 # 這會讓循環語句結束
    elif 猜測 < 數字:
        印出('錯了, 數字再大一點.')
    else:
        印出('錯了, 數字再小一點.')
  else:
    印出('循環語句結束')
  印出('結束')
See:

http://reganmian.net/blog/2008/11/21/chinese-python-translat...

I don't know any Lisp, but I wonder about doing something like this in one, since if I understand correctly, even things like conditionals are functions. I'm sure it would be possible with macros, but I wonder if you make a Chinese Lisp just by redefining functions.
Indeed!

https://elangocheran.com/2014/10/30/exploring-programming-in...

https://youtu.be/MqjMZNwnYCY

Although I started the above project around the same time as Ramsey started his project in the original link (CLisp in Arabic), they were two entirely independent things. Ramsey's project is a 100% translation, whereas my project scales to other natural languages but is not a 100% translation.

Tim and I worked on trying to make programming in other languages easier as a means to help more kids learn programming, and learn FP the Lisp way, which we explain as more natural.

https://www.youtube.com/watch?v=Y3-53JoGPE4

https://power-turtle.com/#freestyle

Conditionals are not functions in Lisp. They are 'special forms' since they have to control the evaluation of their arguments and functions always evaluate all their arguments.

So, if you want to translate a lisp into another language you have to resort to macros.

None and none, as what you need is to alias the symbols for most lisps.
Been a while since I've done Lisp seriously, but I don't believe that's possible, at least in Common Lisp (SBCL). While if responds to symbol function:

  * (symbol-function 'if)
  #<CLOSURE (:SPECIAL IF) {1000C5084B}>
SBCL refuses to set that value to an alias:

  * (setf (symbol-function 'foo) (symbol-function 'if))
  #<THREAD "main thread" RUNNING {10005205B3}>:
    #<CLOSURE (:SPECIAL IF) {1000C5084B}> is not acceptable to (SETF SYMBOL-FUNCTION)
Trying this with regular functions works as intended:

  * (setf (symbol-function 'bar) (symbol-function 'mapcar))
  #<FUNCTION MAPCAR>
  * (bar #'1+ '(1 2 3))
  (2 3 4)
Special forms are, well, special and a lot of the regular parts of lisp doesn't work with them.
hmm, I think worst case symbol-macro should work there :/

I expected specials to work in this case, but apparently not.

Yes; alias the symbols that are macro operators or special operators via macros, and alias other kinds of symbols in their respective namespaces.

Variables may also have to be done with macros, because you want an assignment to a translated variable name to appear in the original variable. Some Lisp dialects perhaps allow a variable cell to have a binding to two or more symbols which could do the same thing.

You can write Perl in Latin or Klingon:

Latin from https://metacpan.org/pod/release/DCONWAY/Lingua-Romana-Perli... :

  use Lingua::Romana::Perligata;
 
  adnota Illud Cribrum Eratothenis
 
  maximum tum val inquementum tum biguttam tum stadium egresso scribe.
  da meo maximo vestibulo perlegementum.
 
  maximum comementum tum novumversum egresso scribe.
  meis listis conscribementa II tum maximum da.
  dum damentum nexto listis decapitamentum fac
      sic
          lista sic hoc tum nextum recidementum cis vannementa listis da.
          dictum sic deinde cis tum biguttam tum stadium tum cum nextum
          comementum tum novumversum scribe egresso.
      cis


Klington from https://metacpan.org/pod/Lingua::tlhInganHol::yIghun :

  use Lingua::tlhInganHol::yIghun;
   
  <<'u' nuqneH!\n>> tIghItlh!
    
  {
          wa' yIQong!
          Dotlh 'oH yIHoH yInob 
                  qoj <mIw Sambe'> 'oH yIHegh jay'!
          <Qapla'!\n> yIghItlh!
  } jaghmey tIqel!
I don't understand Latin at all but I picture a centurion dictating this to a scribe, chiseling into stone, soon to deposit it in a Flintstone-ian rockputer.
I love the Latin one, looks like a magical incantation :)
It's too sad the latin one is not updated since 2001, I would love to use it to write random personal pieces of code!
Uses English grammar, though.
This reminds me of projects I did specifically for the Dutch market, but were coded in English because we needed to facilitate non-Dutch developers. Each new feature started with finding translations for Dutch words to be used as variables in code. Then when we created the UI, we'd have everything but the field labels in Dutch, making bug reports confusing, especially for the non-Dutch developers.

Good times!

> I should be able to read code written anywhere in the world and understand what it does.

I can't read the code written at my desk a week ago and understand what it does.

All that said I think there are benefits to confining languages principally to Latin script or making some kind of direct transliteration utility to Latin script since it's the language for ~70% of the worlds population [0]. It's very hard to learn to read and even more importantly hard to type in a different script.

[0] https://www.worldatlas.com/articles/the-world-s-most-popular...

It isn't really that hard to learn to read a different script, unless it's logographic. A solid week of study at the outside and then it is just a matter of practice to get faster.
Arabic is pretty rough because there's a lot of rules about how letters change based on the letters around them. Also it reverts me back to hunt and peck mode for a long time until I learn the new layout which will be a while if I'm just using it for programming.
> it reverts me back to hunt and peck mode for a long time

I don't see how that's a problem with Arabic specifically. The same would happen if you switched to typing English in Dvorak.

It is different... I don't have to switch to DVORAK to program in Latin script based programming languages it's a choice. I would have to switch to an Arabic layout to program in قلب.
If you can't even figure out how to switch Input Methods I don't think you're going to have good luck programming either.

I also think you're conflating ASCII with the Latin Script. ASCII is easy to type and read, but anything outside of that range probably presents just as many burdens as say Tamil or Korean. The majority of Latin script languages however, are not limited to ASCII (for example é,ü, or €, which I ironically had to switch to a CJK Input method to type) making your "~70%" closer to whatever the population of native English speakers is.

The "let's make things marginally easy for the majority at the expense robustness in a way where the benefits don't even approach the drawbacks" attitude is how we get things like NodeJS where we have people writing desktop apps in JS b/c the webdevs are more familiar with it at the expense of everyone running massive, slow, and vulnerable apps with 900 different libraries all downloaded from shady sources.

> (for example é,ü, or €, which I ironically had to switch to a CJK Input method to type) making your "~70%" closer to whatever the population of native English speakers is.

True, you got me, I should have said just ASCII. For the most part though languages use the ASCII set + additional characters rather than replacing or removing characters entirely. so it's still 70%-ish not just English.

Speaking as a Cobol programmer I find your comments deeply offensive.
(comment deleted)
Sí, tienes razón. Deberíamos extender eso y expresarnos cada uno en nuestro idioma. La experiencia va a ser enriquecedora y seguramente no vamos a encontrar pegas.
Jes! Kaj se oni ne povas kompreni , tiam ni cxiuj povas lerni la lingvo universala, Esperanto. Nun ni povas skribi malbone en du o plus lingvoj! Tio estas plejbona de el plejbona.
They had us in the first half I'm not gonna lie.
What is wrong with FORTRAN??
Nothing is wrong with (modern) Fortran (2018), although I'd argue that everything is wrong with using FORTRAN (77) for numerical computing in the new millennium. On the contrary, modern Fortran (2003,2008,2018,202X) is still truly the best and most expressive language for numerical scientific computing.
I appreciate that this is a joke but I agree with the first paragraph. We should be above this kind of language. It's completely incomprehensible for the vast majority of those that can interpret code. Regardless of where you were educated, or if you were self-educated, why would you want this?
I don't get why this is so controversial. Programming languages should absolutely be in a language that the majority of programmers can understand. Everyone is bringing up the fact that programmers can't understand each others' code; do we really think introducing more languages, whatever they may be, will help that?
(comment deleted)
Since there's a lot of effort in this thread to deconstruct the joke, I just want to add that FORTRAN is probably reference to the classic "Real Programmers Don't Use PASCAL" [1]. In fact, the whole comment would fit there nicely.

> If you can't do it in FORTRAN, do it in assembly language. If you can't do it in assembly language, it isn't worth doing.

[1] https://www.ee.ryerson.ca/~elf/hack/realmen.html

Ikr? I mean since when does having a lingua franca ever helped any kind of scientific or technical progress? All those people writing in latin and greek despite not being their native language were just sheep trying to fit in. Like that Newton guy, just your typical apple-hipster trying to be one of the "cool kids".

I think of myself as eclectic taster of the many fine cultures worldwide and since I just got python to print Hello World in the console I'm moving on to learning Swahili. It should take about a week. It's all just different languages anyway.

It seems that there are two theoretical extremes on this position:

1. All code should be written in English, and no one should ever use any other language in programming.

2. All code should be written in local languages, and no one should should ever use a common language for collaboration.

I say "theoretical" because I've never heard anyone argue anything like the latter point, which you are satirizing here. On the other hand, there are people in this thread who seem to be arguing the former, which I find nearly as ridiculous.

Another episode of hackernews is socially inept.

Good work!

(comment deleted)
I never put my finger on the trigger but then released it from the trigger so fast before. Nice meme at the end.
Kind of remarkable that when I first read this comment thread, this was the top-rated comment, but while I was posting a short agreement with someone in this reply thread who noted that HN has a collective problem with snark and satire, pgcj_poster's comment was downvoted by people who apparently have a problem with snark and satire.

I would put "/s" here, but when I say there are HN readers who really need to lighten the hell up sometimes, I am not remotely being sarcastic.

APL is, I think, the only (relatively) common programming language without English. It has lots of characters instead, most of which have a form that hints about their function.
>Code is written entirely in Arabic, highlighting cultural biases of computer science and challenging the assumptions we make about programming.

There are lots of "cultural biases in computer science" -- in UI, neural network training, encodings, terms of service, etc.

Of all of them, this is the least helpful, and the least important.

It's like doing math in local notation, or translating latin/greek terms doctors all over the world are trained and understand, with regional varieties.

There's a reason why e.g. air traffic control speaks english no matter the ethnicity (as per the ICAO standard).

(And I don't mean programming language terminology / modifiers has to be english for any special reason. It could just as well have been French or whatever. But it has to be a single one, and english is already used for that purpose).

And I'm no native english speaker, so I don't say this as one.

> There's a reason why e.g. air traffic control speaks english no matter the ethnicity (as per the ICAO standard).

Yes. The reason is that air traffic control inherently requires people from different regions and languages to communicate quickly in life or death situations. Ease of being an air-traffic controller is not a primary motivating factor, and getting more diverse input isn't really a useful feature.

On the other hand, ease of being a developer should be something we strive for. We don't generally deal with fast paced life or death communication, we instead want programming to be accessible, to get a range of people (and their input, experience, opinions) involved, and to break down unnecessary barriers. Programming in a foreign language is a pretty significant barrier.

What do you mean exactly by "programming in a foreign language is a pretty significant barrier", and why is reducing this barrier to strive for? I believe English as a common language is a good thing for communication, for understanding each other. It could have been any other languages I suppose, but today it is English. It may change. I cannot even talk about programming in my first language because I would not have gotten any use out of it. It would not have been beneficial to me to learn the terminology in my first language. English, however, was pretty much beneficial. I am not sure that division here would be beneficial to the field, but this is just my opinion. Yes, it is a barrier for people who, for some reasons, are not willing to learn the common language which, today, is English. Is it a bad thing? In my opinion, it is not. It could be a way of expressing your dedication and willingness in some cases. I wanted to understand, and I wanted to be understood, and knew that learning English was the way to do it, so I learnt it. Having many different languages would defeat the purpose of what having a common language gives us, which binds us together.
(comment deleted)
> Programming in a foreign language is a pretty significant barrier.

Not really. I learned programming when I was 14, far before learning English.

How many English constructs do you have in a programming language? Func, var, for, if, else, import, etc. You can memorize those in no time, especially if you do that as you learn programming.

Documentation and textbooks are a different thing, of course. But I learned programming in high school, from teachers speaking my language and with textbook in my language.

I started programming at age 10, with game maker. I cannot stress how useful having icons for each operation is. I remember not knowing what a loop was (I didn't even understand what a variable was), but having the "steps" icon made it clear to me that it was run on every step the player makes (which is approximate, but IIRC it was simply a while loop)
>How many English constructs do you have in a programming language? Func, var, for, if, else, import, etc.

Func and var aren't even English words. Even an English speaker would have to at least get confirmation that their guess is right. You could replace them with arbitrary symbols and it wouldn't rally really change anything.

See APL, equally horrendous for everyone: https://en.wikipedia.org/wiki/APL_(programming_language)
Not for those who professionally speak Mathematics; which is the audience APL was made to serve, after all.

Amusing so many programmers will complain how they feel horribly excluded by APL, but see no issue with every other programming language in existence speaking exclusively ASCII English. At least Math is a true lingua franca, unlike our awful Saxon bodge. I know which I'd be safer speaking when Aliens come to visit. https://youtu.be/t2TDf9XU09k?t=120

But math is also very difficult to understand. The information density on all of the symbols is too high and it's easy to misunderstand (or not understand) as a result. I've met very few people who were comfortable with reading math, even fairly simple things that they otherwise understand.
“But math is also very difficult to understand.”

Sure it is, if you’re not a professional mathematician. For those who are, it is a fabulously precise concise system of communication. The same can be said for “legalese”, “medicalese”, or any other specialist language that provides its specialist users with unrivaled efficiency and power of expression.

Whereas laypeople require lay language; which is why the best communicators are fluent in both, able to communicate complex ideas to both peers and public at a level and in a language that fits each audience.

That so many programmers resist – even belittle – attempts to understand and close the accessibility gap in their own constructed languages speaks volumes of what piss-awful communicators they really are; and how – rather than break that shortcoming down and work to improve it – they weaponize it to keep all those who are not like them out and so maintain their exclusive control at the expense of everyone else.

..

Remember, the point of software is not to encapsulate programming knowledge, it is to encapsulate business (or other expert domain) knowledge. That is where the program’s actual value is, and all that classes and types and conditionals and loops and whatnot crap is just a lot of bureaucratic bullshit that must be waded through when encoding that expert knowledge in unspecialized languages of poor expressive power.

Making programming languages accessible and useful to users operating in other domains will take far more than just some l10n sugar. Still, anything that can improve access for the 5Bn humans who don’t speak English, never mind “ASCIInerdese”, is a positive move.

So if it's not such a huge barrier for a foreign programmer to program in an English-centric computer programming language, surely the same can be said about non-Arabic speakers who might want, or have to deal with this language?
While this is true as far as it goes, there's a difference in cost/reward tradeoff in having to understand the Latin alphabet to be able to read materially all programming languages, and having to understand many different alphabets to do so.
As an English speaker with a US keyboard I would have a very hard time with قلب because I'd have to learn how to at least read Arabic and how to type it. In any other language, using say Spanish, using Latin script I at least only have to learn that importar in this Spanish language means include the library. In an Arabic language it'd maybe be استيراد which I'd have to memorize the whole word AND how to type it, which on my keyboard would be changing the layout and buying a sticker set. [1]

[0] Disclaimer all the Spanish/Arabic/etc words were pulled directly from google translate.

[1] Though Arabic is particularly rough because the shape of the letters change based on the letters around it so you have to learn that too! See: http://www.arabion.net/lesson2.html

I understand as an native English speaker I'm in a fortunate position that by a combination of history and random chance computer development happened largely in my language. But given about 70% of the world uses Latin script keeping languages largely based in the English language the majority of the world is able to use their native script at least which is one less hurdle to learning to program.

What I think may be more useful for bringing more people into programming in their native language would be thinking about providing transliterations where, for example, the Python keywords are translated into Arabic. Doing that Arabic speakers could write in their own language and English speakers could run a utility that maps from the Arabic keywords to the current standard English keywords. Stuff like variable names gets a little tricky there I'll admit, not sure how to handle them, maybe Romanize them too?

The problem is not so much non-Arabic speakers having difficulty dealing with the language, since they're not really the target audience. But if an Arabic speaker tries to use this language to write a program for some specific use case they have, they'll have to work around the complete lack of ecosystem that comes with a novel language in a tiny niche.

It's the same reason why Chinese developers haven't banded together to create a Chinese-based language. They still code in Chinese, but the languages and libraries they use are mainstream: C++, Java, Python, ... All of these languages support arbitrary Unicode in comments and Java and Python also support Unicode identifiers. As a result, Chinese documentation is available even for software that's otherwise in English. However, if you tried to convince Chinese developers to abandon their battle-tested languages with a rich ecosystem for some other language just so they can use different keywords, you'd get laughed out of the room. It's not solving a problem they have.

That doesn't mean that localized programming languages can't be useful e.g. in education. But translating documentation and libraries is useful for many more people than translating the syntax of a language.

As mentioned in the top comment on this article, this is why the software community avoids fractures by programming entirely in FORTRAN. /s

Your comment is an argument against any new programming language.

Yes. Any new programming language needs to offer something more than just different syntax if it wants to be used by more than just a handful of people.
It's much harder to understand an existing source code if you don't understand its function and variable names.
This language is slightly more interesting for being Arabic than (say) German or Greek.

You're got three barriers between the learner and the language: unknown keywords, unfamiliar letters, and the wrong LTR/RTL order.

It all adds up to where, boy, it would be intimidating for me to learn this language, as someone who already knows how to program. Doesn't that imply it would be equally intimidating for someone who only speaks Arabic to learn C?

Perhaps we should try asking someone who actually speaks, reads, and writes Arabic how big of a barrier this is before we jump to conclusions...
Would be good, trouble is, where would we ask such a thing? Nobody would be on HN unless they were fluent enough in English to find it interesting to browse English comments and discussions. Presumably there are some Arabic-only tech forums out there somewhere for people who want to talk about technical things but don't feel comfortable enough with English. But then I suppose there's probably a few of those, all with different cultures, and the result would depend on the culture of that board.
I mean, the existence of the article implies that at least one person who speaks, reads and writes Arabic thought there was a problem (even if they also knew both English and English-based programming languages).

But again, while I can't speak from the Arabic speaker -> "English" PL direction, I'm perfectly capable of speaking for the English speaker -> "Arabic" PL direction.

> On the other hand, ease of being a developer should be something we strive for.

Yeah, no.

I want to strive for a field of professionals who know what they're doing instead of every second 'engineer' being a script kiddie with a MOOC or two of Python under their belt and nothing else. The barriers need to come way up from where they are today, not be lowered even further.

Should we introduce a license to publish math papers? This should supposedly raise the overall level of mathematicians.
There is a license if you want to hit a nonzero audience. It's called peer review. It's merit based. You might have heard about it.
I'm not talking about lowering standards, I'm talking about lowering barriers. The difference is that barriers are things that aren't necessary.

It is not necessary to be male, white, or English speaking, to be an excellent engineer, and yet those groups are significantly over represented.

> I'm not talking about lowering standards, I'm talking about lowering barriers.

One and the same. Making it easier to join a group necessarily lowers the barrier for joining said group which necessarily lowers the standard of said group. There are entire books written about this problem which leads to it being impossible to build large above-average skilled teams.

No need to bring identity politics into engineering practice. They have as much place here as they do in getting a pilot license.

There is a minimum bar to pass, and part of that bar is speaking a common parlance with members of your professional body from the rest of the world. I'm sorry you feel upset that English happened to be the language of choice for that, I personally just invested the time to learn it. I get paid more than doctors or pilots with the same amount of experience as me, so I'm not going to start complaining about satisfying the same language requirements that they deal with.

Sure, you can require someone to be fluent in English before you're willing to hire them for your team of programmers (a standard). That doesn't mean people who don't want to work for you should be required to learn English before they can start to learn programming (a barrier).
I think if you are programming in a native language programming language, there is a problem, that you can not find enough help and you don't have things like stackoverflow. You don't immediately see useful patterns and answers to questions and the effectiveness of the language and of your understanding is reduced. Unless you have a personal teacher, I think, learning a native programming language is not a good idea, because you will be limiting yourself, you will learn wrong patterns. You will not be standing on the shoulders of (many)others before you and the quality of your understanding will be not as good. I also think a lot of skill comes from cross language disciplines, and limiting yourself to one native langue is not a good idea. Better to invest time and learn english subset used in programming. Then you can read interesting code of others, which was reviewed by more eyes than your native programming language.
> Programming in a foreign language is a pretty significant barrier.

There are only a handful of English words you have to memorize. Music students have to memorize a handful of Italian words to follow written music. It hasn't been a problem.

Standard libraries are large and named in English. It's a lot more than a few English words.
You don't really have to learn the language to program in it though you can just know "import" means include this library, that's a harder task than just being able to read for sure. I think the biggest issue is when you have to use a different script than your native language (and keyboard). To code in Arabic, Chinese, or Russian I'd have to completely relearn how to type.
> There's a reason why e.g. air traffic control speaks english no matter the ethnicity (as per the ICAO standard).

...which is not respected at many smaller airports/airfields. If you plan to land your machine at a local French airport, you better be prepared to speak French !

Others have already commented that air traffic controllers use the same languages for reasons not applicable to programming.

> I'm no native english speaker

Does your native language use the latin alphabet? Are you familiar with the arabic alphabet? If not, why do you think you are qualified to judge that "this is the least helpful, and the least important"?

The value of this language is as a tool to expose those biases. Some of them may be stupid and holding us all back.

As for the ATC analogy, software normally works by interfacing with systems written in other languages. Python to C-based glibc to the asm trampolines in the kernel.

I am a native English speaker in the US and to me it seems palpably unfair. People much smarter than me have to spend a lot of time struggling with a foreign language, and are still unfairly perceived as less intelligent than native speakers.

I could imagine it might be less unfair in a situation, like in much of Europe, where nobody is a native English speaker but many speak it (sort of like Latin at one time). And there are of course huge benefits from a standard language. But it still bugs me.

Well the question is why you'd want to allow it to become your problem, too, though. Having to debug libraries written in Elder Futhark or, case in point, Arabic, seems much more impossible than it may already seem sometimes, and that's why I'm not going to write a programming language in Swiss German, and keep my comments in English too, for that matter.
I think it comes from a good place in the heart, but people really shouldn't look for ways to drag themselves into other people's problems out of "fairness". Many societies have a nominal interest in teaching English to their people, but fail in practice. Fixing English education (or really language teaching in general) is a far more useful thing than torturing yourself with a language not suited to typewriter keyboards, such as APL or Arabic.
> Code is written entirely in Arabic, highlighting cultural biases of computer science and challenging the assumptions we make about programming.

And using the Imperial system of units is highlighting the cultural imperialism of the metric system, the so-called SI ("International" System) and its Modernist desire to fit man to the unit, as opposed to fitting the unit to man. As long as humans walk on feet, and not meters, or metres, we shall persist! Ich kann nicht anders! (... primarily because I lost my metric socket wrenches)

Air traffic control at domestic airports in many regions do communicate with pilots in the local language (even if they're are all able to switch to English at a moment's notice).

It's all just jargon, for those of us working in the field it's really not difficult to both know the international Latin medical terms and the local terms to use with patients or colleagues.

This language has the potential to attract native Arabic speakers to programming who may not otherwise take any interest. And who knows what insights or new paradigms they could bring. Lowering the barrier to entry to programming is a good thing.
Many of them might well have wound up programming anyway. And so this language has the potential to shunt them off into a likely dead-end language.

Although, yes, it might be a “gateway drug” kind of thing where they wind up learning more mainstream languages as well. I’m just saying it’s not an obvious and unalloyed win.

Is scratch a dead-end language? It's not used for anything production grade, and it can't be modified in vi because it requires a gui of all things!

Yet millions of children (and adults) learn about programming through scratch and create amazing things. It is not a dead-end language.

Since air traffic can be global, it makes sense to have global air traffic control conventions. However, not every technology has to be global. If a region wants to develop a technology that is optimized for their region, they trade global access for local optimization. There are cases where this may make sense.
> or translating latin/greek terms doctors all over the world are trained and understand

A cursory glance at a glossary of Japanese medical terms suggests otherwise[0]. The thing about biases is that usually you don't notice them.

Language is completely othogonal to most tasks. If you live in Japan you would probably prefer your GP focus on studying medicine in school instead of Greek/Latin on the off hand chance a foreigner asks them "why his primaris longus hurts". The same with programming, I'm pretty sure most programmers are interested in computers first and foremost, not learning about English subject verb agreement so they can read documentation.

[0] https://www.mlcjapanese.co.jp/n5_04_10.html

> It's like doing math in local notation

Math is taught in Arabic, using Arabic notation and written from right to left in many Arabic countries. That is basically the only form of math I’m personally familiar with.

We already have like 100 hundred programming languages, adding localization to the tokens of each one would grow that to say least 1000; the human race doesn't need more excuses to create divisions among us, it actually needs the opposite. I already hate with a passion the Stackoverflow version on my native language (Spanish), the answers are always subpar (or just missing) to their English counterpart due being such a small website.
Or, we use content-addressable and immutable code like in Unison. It doesn't matter what you call the function or what I call it. It's the same code.

https://www.unisonweb.org/

Imagine thinking cultural hegemony is good.
...said someone in English because saying it on any other language would have stopped him from being understood at all.
And your point is?
Yeah, you seem to be just trolling at this point if you pretend to not understand the huge irony in saying homogeneity is bad in plain English in order from someone from Colombia to understand what your are saying.
Why do they keep making me post the Bors comic?

https://i.imgur.com/SPyfuNz.png

I don't see the connection with this comic, are you suggesting the person walking is you therefore should complain in the universal language to make society stop using such universal language so we can no longer understand you next time you complain?
I will leave the interpretation of the comic as an exercise to the reader.

(Partially because I'm unable to parse what it is you are trying to say in your last comment.)

For science and technology yes - not that long ago you had to learn German in some scientific fields as that was where a lot of the useful work was being done.
Imagine the horror of having to learn another language to access valuable intellectual ressources. I just can't relate.
Now imagine you didn't had to learn one language but 2 or 3 or 40, that's pretty much what your are advocating, regardless if you do it for the sake of cultural variety or for the sake of making it harder for programmers to communicate with each other.
Imagine if every useful domain was dominated by a different language for international discussion, such that one had to learn dozens of languages to be able to even read about them all.

What a glorious paradise that would be!

Yeah, the most culturally diverse society possible would be one where each person talks a completely different language than everyone else, just think about how culturally rich would that be, no other society would compare.
Pre ww2 that's what you did in Chemistry and to a lesser extent Physics
Still true today in certain fields. E.g. if you’re an algebraic geometer (algebraic geometry is an important branch of mathematics), you pretty much have to learn French in order to study the foundational work of Grothendieck. To be fair, only a small subset of French is necessary.
First time I've seen non-ASCII language around 7-10 years ago. It was 1C language, it's very alike to Visual Basic but all in Russian. I think it was very good idea to use Russian for that, it's embed language for platform developed for local market. So to start you don't need to know English, which is probably the main barrier in former USSR to become a programmer.
Assuming there is merit to the idea that the Latin charset gives unfair disadvantage for people from other cultures (I think not(1)), then a language should be formed from a culture neutral alphabet - say, klingon. It better have a number of glyphs in the vicinity or 30 or so (for typing ease) no funky char combining rules (for reading ease) etc. And it would still need guidelines for naming functions, variables, not to mention pronouncing them (these could of course be localized rules) etc. My guess is that it would be a Latin like script, only with different glyphs. And of course, all var and function names would be hopeless gibberish, unless we all decide to become klingon/whatever fluent.

(1) At the very least, someone should explain why the rise of - say - the russian and indian programmers, given the unfair barrier.

Maybe one shouldn't take the "unfairness" aspect too far.

This project seems to be more about recognizing cultural differences in thought patterns and how they permeate today's computing world.

It doesn't seem to be geared towards teaching programming to students who only know Arabic so far.

And English is being taught and used extensively in the Indian education system and society in general.

That (cultural differences in thought patterns) is indeed an interesting take (I'd like to hear what Larry Wall has to say about it). I do think it would be best addressed at the background level (say predicate logic or somesuch) than at a programming language level (which is more of a consequence).

Unfortunately, the "unfairness" thing has hijacked many subthreads and it takes the proposal at face value (as in "Wouldn't it be cool if any programming language was available in localized form, charset, keywords and kaboodle?" - no it wouldn't) .

I'd say predicate logic and much of the theory behind computer programming would stay the same, regardless of the language.

And yes, I think it would be good for speakers of non-latin based languages to be able to write programs (or notebooks) in their own language. Some stuff, like business logic, NLP, or "Low Code" like in Excel, could benefit from staying in one cultural frame of mind instead of switching between multiple frames.

Especially for different writing directions, like with Arabic. At the very least, Mandarin in Mainland China is now written almost exclusively left to right, so it's not as painful to use latin letters in a Chinese text when appropriate.

If your Arabic-only programming language has an English web page (actually a blog post) it means it's an art project, not a bona fide tool for programmers who want to use Arabic input and/or who prefer Arabic names and keywords.
The way I see it, if its creator made software with it, then it's a bona fide tool for programming. The fact it hasn't yet spread to more developers than those involved in the project doesn't negate its "fide"s or "tool"-ness.

If you made a parser for a scripting language for content for your application, or a DSL for your colleagues to use, would you claim they weren't "bona fide"?

It's a somewhat better art project than Brainf*ck or Piet because linguistic barriers are more culturally significant than "just because I can" exhibitionism, but it has the same practical usefulness. Arbitrary obstacles make sense in conceptual art, not in tools.
Ah, another fan of the arrays-start-at-whatever you decide!
First: That is culturally a very important project I really like. As a German, English was a barrier for me as well (imagine a 15 yo with little English proficiency). But it was just the language, not the letters and symbols.

I think the interesting question would be if you could build an IDE replacing keywords, interpunctation, writing order etc on the fly while emitting in the end "standardized" output (aka. English).

If we do not like English for whatever reasons (let us say: bias to the western world), I think the only real deal are Emojis. Replacing all keywords with Emojis is pretty universal (until it comes to color ... red/green has very different meaning around the world) and using some standardized/auto-translatable naming of variables and functions. Could be tons of IDE support.

Anyway. Nice inspiration.

I think what you want is something similar to Scratch or Snap!, but with keyboard input support[0][1]. Because the programming structure of these languages is not based on text input, that makes it independent of the language it is presented in.The result is that can change the language it is presented in on the fly:

> Scratch, albeit visual, is still a language built around sentence fragments. Instead of using punctuation and assorted ascii art to enchant text into code, the structure and action of a Scratch program is almost as clear as prose. By using natural language fragments instead of magic identifiers in text, Scratch is unique in another aspect — Internationalization — Scratch programs can be built up out of German, French, Chinese, Japanese fragments too.[2]

The main downside to Scratch as a language is having to drag our mouse for many kilometers for complex programs. It is a... well, drag (also more complex data types and such, but Snap! addresses that fairly well).

[0] https://scratch.mit.edu/

[1] https://snap.berkeley.edu/

[2] https://programmingisterrible.com/post/76953953784/programmi...

I did what you mention 22 years ago when I was 16, to create an “Italian version” of BASIC. I just chose suitable analogues in Italian for all the various keywords and fed it through a glorified Find/Replace script before handing off to the QBASIC interpreter. Of course Italian’s pretty strict word order helped a bit.