Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
قلب: a non-ASCII programming language written in Arabic (nas.sr)
556 points by kick on Oct 25, 2019 | hide | past | favorite | 623 comments


I was interested in hearing what using Arabic as a scripting language might do to change how code might be written -- not just a translation of words, but are there features of a language that are distinct from English that it would actually change our assumptions about a scripting language?

The video mentioned how the ligatures of Arabic can stretch, to allow fixed-width justification, which was neat, although it doesn't actually change our notions of scripting.

Consider, for instance, if English didn't have any imperative form, and instead everything were a request. Would declarative languages like Prolog have been the default?

Perhaps the most interesting thought experiments along this vein could be for conlangs. Can we write a conlang that is more elegant, meaningful, even beautiful for scripting?

Here's an quote from a New Yorker article on conlangs:

> Ithkuil has two seemingly incompatible ambitions: to be maximally precise but also maximally concise, capable of capturing nearly every thought that a human being could have while doing so in as few sounds as possible. Ideas that could be expressed only as a clunky circumlocution in English can be collapsed into a single word in Ithkuil. A sentence like “On the contrary, I think it may turn out that this rugged mountain range trails off at some point” becomes simply “Tram-mļöi hhâsmařpţuktôx.”

https://www.newyorker.com/magazine/2012/12/24/utopian-for-be...


>Consider, for instance, if English didn't have any imperative form, and instead everything were a request. Would declarative languages like Prolog have been the default?

You realize that this is the foundation of classic OOP, right?

http://lists.squeakfoundation.org/pipermail/squeak-dev/1998-...

Alan Kay: "The big idea is "messaging" -- that is what the kernal of Smalltalk/Squeak is all about (and it's something that was never quite completed in our Xerox PARC phase). The Japanese have a small word -- ma -- for "that which is in between" -- perhaps the nearest English equivalent is "interstitial". The key in making great and growable systems is much more to design how its modules communicate rather than what their internal properties and behaviors should be."


> if English didn't have any imperative form, and instead everything were a request

INTERCAL statements all start with a "statement identifier"; in INTERCAL-72, this can be DO, PLEASE, or PLEASE DO, all of which mean the same to the program, but using one of these too heavily causes the program to be rejected


While originally created for a very different purpose, I think https://en.wikipedia.org/wiki/Loglan and other logical languages would be a great basis for computer code.


Visual Basic for Applications has localized Versions. Here is an Example in german, so why not in arabic?

  Funktion VorherigerGeschaeftstag(dt Als Datum) Als Datum
    Dim wd as integer

    wd = Wochentag(dt) ' Wochentag liefert 1 für Sonntag, 2 für Montag usw.
    Prüfe Fall wd
        Fall 1
            ' Auf Sonntag wird Datum vom letzten Freitag zurückgegeben
            VorherigerGeschaeftstag = dt - 2
        Fall 2
            ' Auf Montag wird Datum vom letzten Freitag zurückgegeben
            VorherigerGeschaeftstag = dt - 3
        Fall Sonst
            ' Andere Tage: vorheriges Datum wird zurückgegeben
            VorherigerGeschaeftstag = dt - 1
    Ende Prüfe
Ende Funktion

https://de.wikipedia.org/wiki/Visual_Basic_for_Applications


Thanks, I hate it!

It's like how every function in Excel is translated as well. `=SUMMEWENNS(…`

Complete nonsense, it makes my eyes bleed.


For some reason I've always found programming language keywords translated to my native language extremely cringeworthy. I wonder if native English speakers get the same experience for mainstream programming languages or it is just a consequence of novelty.


The words aren’t cringeworthy but having to decide them leads to arguments over what precisely to name something.


Keyword translation poses MAJOR problems when you open the Excel file on another computer, indeed.

Unfortunately, Excel files were more often opened on other computers than Java files...

To be inclusive is hard. Even if we imagine one Excel version per continent, all Latin-based people would be ok, it would also suit countries that can be globalized under the Chinese or Arabic areas. But the offshore situations with 2 different continents wouldn’t work well.

And sooner or later you end up with one Excel version per alphabet. Russian, Tamil, Farsi, etc.


Seems extra weird to use German VBA yet not use umlauts.


Feels close enough that I was able to read it. By context, I think I could learn a few German words this way.


German manuals can be weird enough. I still remember one that explains the DEC(x) function as "erniedrigt eine Variable" (It's true that "erniedrigen" can sort of mean "decrement", but it mainly means "degrade").


It's the correct mathematical term for that operation in german though


> Dim wd as integer

Ausgelöst


Triggered?


well I expected `Dim wt als GanzeZahl`


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.


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


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?


That's how I pronounced it. English input sounds more like Dutch "inpoet", the manual said input# was pronounced "inpoet-nummer".

(edit: long live the Internet, it's on page 135 of the manual here: https://docplayer.nl/11208014-Gebruikershandleiding-nederlan... . Nostalgia).


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.


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.


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


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.


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


Fortran has «do» loops, no «for» loops (to my knowledge). do i = 1, N ...


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.


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.


The same in Polish.


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.


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.


I would guess it comes from calling the universal quantifier ”for all” in logic


You have high hopes!


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.


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.


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?


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


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.


For a perfect example, try learning APL without having any background or reference names for its symbols: http://xahlee.info/comp/unicode_APL_symbols.html


Because they are tiny and can be unreadable at perfectly normal font sizes.


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.


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.


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


There's also yoptascript: https://yopta.space


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?


I don't know of good English reference off the bat of my head, for obvious reasons.

I'll try to find some, but in the meantime check out these code samples:

https://gist.github.com/alexaandrov/739e16e1786ab2b3d6bc

https://guesto.ru/1c-razrabotka-konfiguratsii-menedzher-zada...

Etc


Thanks. I like this comment in the gist:

Сообщить("Hello Wold");


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.


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


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.


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


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.

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.


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.


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.


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.


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


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.


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.


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 from the C# classes) in well under half a day of work (which also had the benefit of moving some things to git and have actual unit testing), and had plans to port wlanguage to the CLR to help people get out of this hole. Guess what, the plan was rejected (even for bug fixing) because of purely irrational cultish reasons and I had to put intricate workarounds in my Ruby code to massage my way out of the endless brokenness, costing me overall months of work and terrible customer impact.

If it feels like I was on some sort of mission, then it's partly true, as the people I worked with were really nice folks I had real bonds with, and witnessing the brainwashing they were victim of, destroying the very real potential they had, was truly disheartening.


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.


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.


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


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


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


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.


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.


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


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.


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



They exist, but it seems the vast majority of japanese programmers are using english-based languages.


As far as I know, Ruby seems like a favorite for the Japanese. [Ruby](https://en.wikipedia.org/wiki/Ruby_(programming_language)), which is of Japanese origin and is English based.


We have 1C here in Russia. It is not very advanced language-wise, but if you list COBOL as serious, well, it is.


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


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.


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)


Yeah it's amazing. My favorite is maybe "UTC" [1] in which case the French and English versions clashed so hard that they formed a full new acronym that makes no sense in either language. :D

[1] https://en.wikipedia.org/wiki/Coordinated_Universal_Time#Ety...


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


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.


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


Not sure if can be considered "serious", but one example could be ЭЛЬ-76 (https://en.wikipedia.org/wiki/Эль-76). Sample code: https://ramlamyammambam.livejournal.com/211315.html, and some lecture notes: https://drive.google.com/file/d/0B2e6QHbfGLLMZ094QTZwVmJxMlE... (Russian)


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


>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


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.


I’m working on a language for Japanese but it’s not quite in a useful state yet. https://github.com/kayleemann/pinpon


1C is popular programming language in Russian.


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.


For Japanese, I hear about Nadeshiko (なでしこ) a lot. It has a thriving user base, apparently. [1]

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


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.


IDK if Excel functions can be called a "serious programming language", but their local names are driving me nuts.


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


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



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


I have seen schemas written in Japanese but yet to see anything in Chinese (apart from comments) despite living in a Chinese speaking region.


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.


> the institution who defines the institutionnal use of the official language in the state

... and forcing everyone to put up signs in French [1]. Compelled speech, if you will.

[1] https://en.wikipedia.org/wiki/Office_qu%C3%A9b%C3%A9cois_de_...


Heard of 'pastagate' ?


With the power of c preprocessor, you can program in any natural languages. /s


maybe not serious, but excel functions are translated I think ?


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.


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


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


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.


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?


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.


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?


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.


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.


It's much harder to understand an existing source code if you don't understand its function and variable names.


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.


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


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.


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


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



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


"There was no Committee," by Geoffrey Pullam really captures my feelings as a mostly monolingual native English speaker:

https://www.chronicle.com/blogs/linguafranca/2014/04/30/ther...


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.


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


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.


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.


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


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


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.


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"?


I'm so surprised so many people think localized programming languages are useless.

Let's not forget there are still a lot of people don't speak English. I live in China, and I have seen a lot of kids with great talent in mathematical thinking -- needless to say, they have a great chance to have great computational thinking if they have proper environment. However, there are a lot of kids either having no multilinguistic talent or living in average developed zones that they can't access good English education[0], can miss the opportunity of being great programmers. As a comparison, mathematics symbols are decoupled with specific languages (like APL[1]), and the textbooks are well translated. English should not be a hard dependency to programming.

A lot of people believe in the future everyone should code more or less. I suppose if that's true, there must be nice localized programming languages to achieve that goal, which helps people scripting their day to day life, instead of just being pure GUI users. Or programming languages would still be only designed for minorities as least for non-English-speaking countries.

[0] For Chinese people, English could be not extremely hard (as English people learn Chinese) but still very hard to learn, it takes years of systematic training, just because the two languages are way too different.

[1] PS: I have some trouble for a very long time to understand what does Alan Perlis was referring to in his famous quote: "Though the Chinese should adore APL, it's FORTRAN they put their money on.", I guess it might refer to the symbols decoupled to natural languages.


I think you are expressing the actual disconnect: "Everybody should program" means we need localized languages, "Programming is a Difficult Profession" means programmers really want to learn English to have access to StackOverflow and many other English only resources anyway so localized languages are not necessary.


It is, of course, a persistent myth among programmers that the majority of language keywords we use are in English.

I will grant that some of the words share a spelling with English words that have different meanings, but most of the core words we use are not ever used with the same meaning in non-programming contexts. I would submit that the following keywords common to a number of languages are not meaningfully ‘English’ (indeed, one of them is Greek):

String, float, double, long, byte, void, lambda, var, func...

I’ll grant that for, if, public, private, import, extends, let, etc are real English words and there is definitely a hidden privilege native English speakers have when learning to code, but when considering how hard a programming language must be for a non-English speaker to learn because it has English keywords, consider how hard it was for you to learn a new and unfamiliar meaning for the word ‘string’ and recognize that it’s maybe not that insurmountable barrier.

This project is interesting though because it particularly deals with a different script, which is much more dissonant with conventional keywords.


Also, the more barriers you overcome to get to the basics (that one's Greek too, btw), the less you'll struggle moving on, getting used to a certain confusion towards foreign concepts.

I really liked your angle, not over-ascribing meaningfulness, yet making an effort not to step too many toes by focusing on context, questioning the stereotypical basis.


If you only consider keywords then sure.

But think about standard libs. All of those functions and types are named with English words.


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.


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.


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


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'


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


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.


If suddenly all countries had the same language i bet overtime, they will change and gradually evolve into multiple language.


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


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


As an addition to the question about where you are from that was already asked, how many languages do you speak?


Where are you from?


All countries in the world speaking the same language is like asking for an organism without immune system


If there is one thing this will achieve then it should be this: it should help to show those born in the world of English what a privileged position they have. For every other person in the world not born into English that is the first hurdle they have to cross in order to get to the next one: programming itself. Anybody that is born in an English speaking region has a huge head start in this respect.

Note that it goes much deeper than just the programming languages keywords: there are the books, the courses, the documentation, the bulk of all the open source projects out there one could use to study and so on.


FWIW, most non-English countries teach children English in their version of middle school. And most English speakers aren’t like the stereotypical French; English speakers are quite tolerant of both sentence structure mistakes and extreme dialects.

They’re not really at that great of a disadvantage.


That's a cascade of unsupported assumptions: have you really never heard someone complaining about non-native speaker's use of English, using it to say they aren't qualified for a job, etc.?

“most non-English countries teach children English in their version of middle school” in particular is really dubious unless you're cherry-picking a handful of small, affluent countries. I've known a number of people who moved to the U.S. from non-English speaking countries and the general trend is that the average is closer to, say, how well most Americans speak Spanish than fluency. It's easy to get this wrong if your experience is predominantly in high-level academic or professional contexts where there's been a strong selection bias filtering out people without strong English proficiency.


> have you really never heard someone complaining about non-native speaker's use of English, using it to say they aren't qualified for a job, etc.?

Yes, that's true, but I think it's important to make a distinction.

What you are referring to is, more often than not, just plain racism. It's sad, and unfortunately (at least in the US) more people are feeling emboldened to spout their racist views.

However, that shouldn't cloud the fact that in general English speakers are much more able to understand sentences with tons of grammatical or structural errors if the gist is right. I contrast that with French - when I was in France and would make a small error in verb conjugation or intonation people would just respond with blank stares. And they weren't looking down on me, they just really didn't understand what I was saying.


> have you really never heard someone complaining about non-native speaker's use of English

Similar to the sibling response, only in the case where someone is being racist.

> I've known a number of people who moved to the U.S. from non-English speaking countries and the general trend is that the average is closer to, say, how well most Americans speak Spanish than fluency.

The availability of classes and the fluency learned from those classes are not related metrics. For example, I was able to take German language classes in middle school, but can't speak a lick of German today. It's not because the class was unavailable, but because I didn't apply myself to learning German.


Yes, they are. There is a huge difference between having a language as you mother tongue versus having it as a secondary one. My English is reasonably good, I started young (at age 10) and yet, by the time I was 14 or so the programming books I had access to were way over my head. If English had been my first language I would have had a much easier time.

It's not about English speakers tolerance, it is all about the reader's ability to grok a complex written text.


Depends on the language, I suppose, but isn't the text of the book the bigger problem than the language? sprintf, uint64_t, #ifndef may as well be foreign languages to English speakers too. There's a benefit if the mnemonics are native to you, but your comment sounds like it's the book that's the key obstacle, and less the language.


> sprintf, uint64_t, #ifndef may as well be foreign languages to English speakers too.

Is the problem those symbols or the fact that the documentation, tutorials, and a significant fraction of the useful discussions around those are in English? That seems like the real concern to me: imagine how much harder it would be to learn something without being able to easily understand the man pages, Stack Overflow, the source code and associated issue trackers or forums, etc.


Oh I'm 100% supportive of having good translations of documentation, tutorials, better ways for people to communicate online if they speak different languages, etc. But that's not what بونج is at all. Quite the opposite - the computer language is derived from another language, but their documentation as checked into Github is still in English.

Translatable comments would also be awesome, and figuring out how to deal with identifiers that appear in both comments / docs and code would be awesome. As it is, I think this language / art project is aimed at what is literally the smallest obstacle for people who have the problem it's discussing.


Semi related question: Did you pick up the word "grok" from reading Stranger in a Strange Land or from somewhere else?

That book was so much about the importance of the martian language and how language shapes perception.


For me, I learned the word from the Jargon file first where it explains it was from the book, I then read the book later on in life. http://catb.org/jargon/html/G/grok.html


> Did you pick up the word "grok" from reading Stranger in a Strange Land or from somewhere else?

Absolutely. Using it wasn't an accident either. The word is used illustratively only in the text, it is never explained.


Given that the average reading level of a US resident (a vast majority of whom speak English as their primary language) is around a 7th grade level, yes, you are still on par with most (US) native English speakers.

Even I, a native English speaker, have had issues getting through a number of textbooks. Mostly because it's not English that you have to be proficient with, but the industy-specific jargon and idioms.


As a foreigner you are not competing with the average US resident, you are competing worldwide with all the people that are aiming to learn something about computers.

I can't see what is so hard about recognizing that someone who had a 12 year or so head start (and in some cases more) in the lingua franca of that trade is an advantage.


Most of the world doesn't speak English as a primary language. So, I can't imagine it's that big of an advantage in the worldwide market. Instead, there's a certain bar that can be reached by someone without even a 20 year head start.

For example, if I tried to get a programming job in the Ukraine without being able to speak a lick of Russian, I'd be laughed out of the office regardless of how good my English is.

The only time I can see it really mattering is perhaps in the US and UK, due to racist assholes who judge you by your accent instead of your capability.


English speakers being tolerant?

I suggest pretending to be a foreigner and ask for directions, next time you have 10 minutes to waste.


This is far from the first non-ASCII programming language[1].

Some folks have brought up balkanization as a bad thing, but there are some reasons to believe that balkanization could be a good thing. By putting up barriers (like language) between silo-ed groups, you allow each group to develop their own ideas under different selective pressures, which leads to different results. Then, at some point, someone with vision and skill breaks through the barrier and their ideas from one silo revolutionize the other. It's unclear whether these ideas would ever develop and mature in a more homogeneous programming environment.

Looking at a different field: climbing. The industrial rope access, arborism, and recreational rock climbing communities have developed fairly independently, despite having a lot of the same base equipment and needs. The results are some fairly different solutions to the same problems. As a rock climber, I've learned a lot by cross-pollinating ideas with the other two groups. Sometimes the rock climbers do things better (dynamic ropes are a much better way to prevent spinal compression than full-body harnesses and screamers) and sometimes the other groups do things better (rope walking is far superior to hand ascenders). And these come from the independent selective pressures of each field (rock climbers fall more because they're pushing their limits of skill, so their fall protection is better, while arborists ascend the rope constantly so their rope ascension is better). It's not entirely clear to me that these very different techniques would have developed if the fields had not been able to grow their own communities fairly separately.

[1] https://en.wikipedia.org/wiki/Non-English-based_programming_...


The negative reactions here claiming that everyone should use English are really disappointing, on hacker news of all places. Nobody is saying we need to rewrite the Linux kernel in Arabic. But a language such as this could be a great tool to introduce programming to people who would otherwise be turned away by the language barrier. What is important is not the keywords for, if else, etc but the concepts of logic and computing. The more humans that can grasp these concepts, the better for all of us. Also who knows what genius lies untapped. Perhaps the next Linus or Knuth will come the streets of Baghdad, as a result of having been introduced into programming by an effort such as this one.


English unite. Finally, after failed attempts with Esperanto and others, lots of educated people understand this single common language. Life is much easier. I am Czech and there are so little info in Czech on any technical subject so I rather search info straight in English. What I hate about Europe are these language barriers. There are so many countries with different languages, it is annoying that one is expected to talk differently after driving just 100 km. German, Polish, Slovak, Italian, Spanish, ...argh. This single language is a big advantage of USA! They will understand you in Miami, as they will in North Dakota or California. Very cool!


I agree with you. But I would phrase it differently: "A common language unites". We should not forget that at different times in different areas we had and to some extent still have different common languages (Greek, Latin, French, Arabic, Spanish). It seems that humans have such a strong desire to communicate across borders (cultural, inherited, political, etc.) that they will invent the necessary tools. English language is such a tool now. I wouldn't be surprised if in future it will be some other language. In the end, there will maybe one such common language accepted by all.


I totally agree. Let me say this. Europe has had at least three chances for a united language. 1) Latin when Caesar conquered europe. Italy, France, Spain, Portugal, Romania, adopted that language but later diverged, 2) frensh when Napoleon conquered europe and 3) german when Hitler conquered europe. I hope the EU will implement english a an official language even if the only english country (UK) will leave.


Thank you. Exactly.

A world of seven billion people, many opportunities for genius.

I have been surprised that non-English programming languages have not become even more common.

In my father's time, a university student of engineering or chemistry was strongly encouraged to learn basic German, in order to keep up with the state of art as published in leading professional journals.

Maths students would still do well to learn to read Russian.

English need not be forever.


I'm wondering how many people would be outright afraid of installing and running a program in a language that they have no chance of reading. This is the rough equivalent that all non-programmers have to deal with everyday.


At least not those people who install proprietary software on their systems.

Also, non-ASCII or non-Latin is just a step on a continuum: obfuscated code, machine language, spaghetti code, non-documented code... Actually, it may be perfectly workable to run the Arabic code through Google Translate and understand the result.


[flagged]


Not sure what this is supposed to mean but please keep flamebait off HN. Antisemitic provocation certainly is that.


I think any argument taken to an extreme loses rationality.

On one hand, if more people can understand programming, then we increase the pool of programmers, and that's great. On the other hand, if more people can understand each other's programming, that's also great.

At the end of the day, what matters is that we have the largest possible ecosystem that also allows developers to transcend their geographical / ethnic background.

...and if that's the goal, then maybe it makes most sense for us to favor a unified ascii char set? A few language keywords aren't that big of a price for us all to stay on the same page.


It's possible but all the tools, the author of the language notes, have a 50 year head start in English with English language assumptions baked in, e.g. reading left to right vs right to left. What Qlb shows me is how hardcoded ASCII is in hardware and software.


I agree,that being said I think everyone agrees languages with good internationalization support (as in built to support translation of source code to a different language without affecting the logic and machine/byte code generated). Power to anyone making a language in their native tongue. I wonder if dying languages can be kept alive longer this way.


For a long-term perspective, all world should converge on one medium of exchange and everyone must learn that. I'm not suggesting an English hegemony here. We need to avoid balkanization.

Arabic language has subsumed many local languages to be dominant in that part of world. A Bedouin feels a cultural bias towards Arabia if he starts coding in this language.

I'm from India and non-Hindi speaker; if coding is done in Hindi it's cultural bias towards Northern India as opposed to where I'm from.


Is there a programming language that uses Esperanto?


No, but programming languages exist in English, which is used by more than 15 people.

Esperanto is a very interesting language but it will never be more than a plaything, a linguistic experiment, or a framework for people to learn a language that actually gets spoken by people.


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/


In Python 3 you can now use localized variable names. Something like this is valid python code:

>>> π = 3.14159

>>> jalapeño = "a hot pepper"

>>> ラーメン = "delicious"


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.


I think this really misses the point about where "english" comes from in a programming language:

When we look at modern languages like C, C++, Java, C#, ect, the amount of English keywords are very minimal: "if", "for", "while", "do"... Most of a program is user-defined variables, classes, methods, ect. All of these can be in whatever language the programmer wants.

The bigger complication comes from major APIs: Mac, Windows, Linux, ect, have APIs written in English. Even if you were to write a program in a C-like language where "if" was replaced with a non-english keyword, and you defined your variables, methods, ect, with non-English names, you'd still need English APIs as soon as you interoperate with anything.

Furthermore: Names in APIs tend to be so cryptic, and require so much domain expertise, that I wonder how much value comes in translating them? Will training a non-English beginning programmer in a language with keywords from their natural language be helpful?

Seems like a good experiment, IMO!


In fact, support for languages like Arabic, Farsi, or Hebrew is still pretty bad in many computer programs. This is why we started an initiative to improve the support of any bidirectional language in terminal emulators and terminal programs, e.g. vim, emacs, mutt, ncurses-based programs, etc. I maintain a list[1] of the supported programs. The specification[2] of a new standard is also available, moreover GNOME Terminal supports it since GNOME 3.34 version.

[1] https://gist.github.com/XVilka/a0e49e1c65370ba11c17

[2] https://terminal-wg.pages.freedesktop.org/bidi/recommendatio...


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!


This is very exciting, especially given the Lisp-like notation.

high level (non-assembly/machine code) programming has been stuck in an indo-european rut -- a productive one of course, but like so many things one that has a particular world view.

If programming had started in Arabic would we have developed generic functions sooner? Perhaps with different views of type systems? The fundamental structure of Arabic is quite different from the IE languages.

(I'm a native speaker of English from childhood but used to speak Arabic, and do use other languages on a daily basis).


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.


This was fascinating for me. I had an experience early in my career where I was given some code written by a Spanish engineer to port, and the Spanish comments and variable names kept interfering with my ability to see the code structure. I ended up converting all the variables to simple letter/number sequences and removing all the comments in order to get past that.

Years later I read papers by linguists which described concepts in one language that were no expressible in another language. That too seemed pretty amazing to me since something like snow is snow right? But English typically has adjectives doing the heavy lifting to distinguish different kinds, but the Inuit people had even more words[1].

The idea that it might be possible to express computation differently in different languages, or perhaps even more effectively, seems really intriguing.

[1] "Yet Igor Krupnik, an anthropologist at the Smithsonian Arctic Studies Center in Washington, believes that Boas was careful to include only words representing meaningful distinctions. Taking the same care with their own work, Krupnik and others charted the vocabulary of about 10 Inuit and Yupik dialects and concluded that they indeed have many more words for snow than English does." -- https://www.washingtonpost.com/national/health-science/there...


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.


One thing that surprised me about non-English programming was that they didn't use some style subsitution of keywords with programming languages for their compilers. It seems like it would be a simpler solution even with tokenization potentially forcing some awkward word choices. Even considering the annoying bugs which could crop up with that I would have thought it would have been a thing. Apparently most just work with "the magic strings" or know enough English already.

That would be far more helpful than pretentious finger waggling at wide masses of people for not taking vastly unreasonable steps from the start. All from someone privledged enough to be paid or spend unpaid time for an ostentatious show project like this - in sharp contrast to how the actual non-English progammers act - adapting or rolling their own for their purposes.

The toxic attitude on the website negates any outreach of even a "interesting to see parralel evolved approaches" sense.

The 'not even trying to solve any problems just blame' is a personal pet peeve of mine.


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.


So APL?


That was what came to my mind, actually.


As an intellectual exercise, this is clever. I imagine it wouldn't take long to learn how to use it to write a basic application.

I'm also willing to bet that the time I spend learning the Arabic writing system in order to use this would be of general value, too. I'm fascinated by writing systems.


Might be an interesting problem to have a localizable programming language. As someone else mentioned, there are localized version of VB. And having worked with code from other languages, I know those developers are not using english for their variable names (or database schema names)


Any programming language can be made “foreign” by choosing appropriate terms in a non-English language (perhaps written in a non-ASCII character set) and then writing a front-end script that goes through the “foreign” code and does the required substitutions before feeding it into a standard for-that-English-based-programming-language compiler (or interpreter, or whatever). The English words are, after all, only tokens that are then translated into the Abstract Syntax Tree (AST) for that language. The problem with this particular rendition is that it doesn’t in the abstract define a particularly interesting, or novel, or even useful for specific situations new language.

As far as I can tell, this is a LISP, and I can remember having read about it ages ago.


I remember when I was about 13 or 14 we would have this little program in Windows that allowed us to move a turtle around and draw shapes with the turtle. You were able to write little programs in code to move the turtle around and draw more complicated shapes in a shorter amount of time. We were doing all this in pure Greek, and writing the programs in Greek. In retrospect, I believe this was one of the worst things we did. Sure, it lowered the bar for students struggling with English to start programming. But given how there is nearly 0 useful documentation on programming or on programming languages in Greek, you were essentially tied to this little program with the turtle. You had absolutely no ability to progress your computing knowledge.


That sounds a lot like Logo


I've also been puzzled for a long time about the seeming shortage of computer languages that don't use English/ASCII keywords, though probably there are more of them than I am familiar with.

Lisp has some strange keywords (CAR, CDR) that are ASCII but not exactly English. APL relies more on non-ASCII symbols.

AppleScript is one programming language that at one point had at least 3 customized dialects (English, French, Japanese.) For example:

"the first character of every word whose style is bold" "le premier caractère de tous les mots dont style est gras"[1]

Sadly modern macOS AppleScript seems to omit the non-English dialects (although the "professional" computer language-like syntax is now available via OSA, JavaScript, etc..)

[1] Cook et al., Applescript, HOPL III, 2006


The truely universal language is math. There are however languages that do not use english words at all. e.g. APL or J. In these languages also localized programs in any language would be possible.

For example quicksort in J:

qs =: (($:@(<#[), (=#[), $:@(>#[)) ({~ ?@#)) ^: (1<#)


Came here to find the APL comment, and I agree.

"APL: a non-ASCII programming language written entirely in APL"


I thought love was the universal language.


This reminds me of Yid++[0], a tongue-in-cheek C++ compiler with a bunch of keywords translated into Yeshivish[1]. (I apologize in advance if the humor is wasted on those unfamiliar with the Yeshivish / Talmudic world.) It's still in ASCII though :)

If nothing else, these things remind me how lucky I was to not have had to learn English while I simultaneously learned to program.

[0] https://schorrm.github.io/ypp/ [1] https://en.wikipedia.org/wiki/Yeshivish


It would be more ironic if integer constants had to be written as Roman numerals.


Brilliant.


hi everyone, author here. i am glad this project is still starting conversations six years after it came out! if youre interested in a longer read on the subject of the cultural assumptions of programming and computing systems i wrote an essay for Technology as Cultural Practice last year: http://ojs.decolonising.digital/index.php/decolonising_digit...


As a side note I am a big fan of non-asci command line aliases. I have my keyboard set with the no dead keys layout, so pressing AltGr + [shift?] + letter will lead to weird stuff like ÐıØΩ~˛. The great part of it its being able to have single letter commands that won't collide with anything installed on the machine. For example I have » as an alias to: [ | xargs -n1 -d "\n" ] and I have a zsh function called Ð that let's me run commands inside a docker-compose(d) container.

For example:

ls -1 | grep backup » rm


I wonder how difficult it would be to systematically "translate" something like Java or C from "English" to any other language, especially non-latin ones like Arabic or Japanese...an "if" statement makes sense how it written from an English perspective but I have no idea how you express something like that in said alternative languages without having to change structure and "meaning".

I don't even know if what I'm asking makes any sense... Need more coffed


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


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


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.


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.


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.


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.


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


Missing the point... Everyone has to jump that barrier so that there's no barrier between us, which is much more important.


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.


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 think this point is vital, and yet completely lost in the current zeitgeist. Shared foundations matter. Without them, we can't communicate effectively.


Native English speakers don’t


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?


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.


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


I think PLs should have localization features for comments, doc-strings, variable names and function names, etc.

Nothing should link in the actual computer from human readable text. I always wanted a language like that.

You'd create a new function or variable and it'll get assigned a unique ID. And the name is a doc-name same as the doc-string, only for human documentation.

If you had that, you could localize the language pretty easily.


It hurts because English-centric people feels excluded by their non-understanding of a thing written in another language, suddenly realising other cultures in the world can exist independently, and it's a history fate if English is the de facto language of IT. « Algorithm » is originally an arabic word and first algorithms come from babylonians, they were written in cuneiform.


I appreciate the idea behind this project. I assume that there is a potential in the subject of cognitive biases about programming.


In my Israeli highschool, we were taught Hebrew Prolog.

There was also a Hebrew version of basic taught to children (בסיסית - בייסיק בעברית).

Completely pointless.


Really cool !! Kinda off topic, but it reminds that there is a mathematical arabic notation which i always thought was pretty cool: https://en.m.wikipedia.org/wiki/Modern_Arabic_mathematical_n...


There’s nothing stopping us writing software that reversibly transforms code so that the keywords are expressed in a different language, with the transformation being reversed before the compiler/interpreter sees it, right? What’s stopping us from treating language as a superficial “view level” property of code?


From earlier this year, an article about programming in languages other than English: https://www.wired.com/story/coding-is-for-everyoneas-long-as...


So does having the programming language be in your native tongue affect the actual structure of the code as well? Beyond maybe just lots of yoda conditions, say, would data schemas radically differ from other programming languages because they can be better articulated when spoken aloud?


Interesting topic.

Non-English based programming languages. https://en.wikipedia.org/wiki/Non-English-based_programming_...


This was discussed in 2014: https://news.ycombinator.com/item?id=7700691.

I'm almost sure there was a more recent big thread though. Anyone?


I like the idea of this project. Its main goal is to highlight the bias towards English in programming languages and computer science and I think that's a great goal. I also think another great use would be to provide a stepping stone to those who are native Arabic speakers to get into programming. There will still be the English barrier to move on to other languages (and likely more professional or "serious" work) but if you can convince people that programming is interesting in the first place, this could encourage them to keep going further. As it stands now, if you don't speak English you would need to a certain amount of English AND programming languages. Languages like this means you just get to learn programming first while we figure out how to remove English as a barrier to entry.


There is even a coined story about languages: Babylon. People there made great progress building things together while they spoke the same language, but everything fell apart when they started speaking different languages. Countries create their own languages and cultures sometimes artificially, to silo its citizens: when you've been taught since childhood to speak some odd language, it's hard to jump the ship later, so you have to restrict yourself to this little playground or make an immense effort and learn the international language. Luckily, such language still exist, although we take that as given. Software today is that Babylon from the story: everyone speaks the same language, everyone can can join and contribute with minimal efforts. No taxes, fees, licenses and permissions needed to join. As software rapidly gets bigger, people that have power start realising that this kind of freedom is unheard of. They are used to the world of borders where they take a toll for a permission to cross. So they pull the trick as old as humanity: introduce artificial fragmentation of languages and cultures and make people in their country use a language they control. And the more obscure and counterintuitive this language is , the harder it is for people to cross the barrier and the more profits they gain. If I were an evil and powerful dictator of a big chunk of the world, I'd force everyone there to switch to an artificial and very complex language, make it the only allowed language in the country, and do the same with software. From now on all these people would naturally have to live in this little artificial playground.


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.


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,


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.


Actually a Forth written in a language apart from English would be a cool idea. The 'words' model maps directly to natural languages and would be straightforward to apply to other languages.


One of the great things of tech is that it brings different people together to relize amazing new things. The initiative described here does not celebrate the differences, it creates barriers instead.


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?


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.


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.


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.


I hate that too soooo much. You never know the function names in your native language and need to google them. :)


Yeah, the pain whenever I have to remember what HLOOKUP is in German.

And a similar feature made CSV even worse.


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


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.


Microsoft tried it for VBA in Office 95. It turned out to be a horrible idea. See my other comment here: https://news.ycombinator.com/item?id=21352796


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.


Damn can you imagine versioning issues? Popular plugin creator decides english is too imperial for his tastes, switches to swahili(his native tongue :) )

Framework goes up in flames quite fast.


Why hasn't anyone pointed out that, except for function and variable names, almost all of computer code is symbols which were pilfered from . . . arabic???


We're too busy feeling good about ourselves for pointing out English privilege


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?


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.


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.


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


There are multiple such languages: https://en.wikipedia.org/wiki/Non-English-based_programming_...

And yes, most of the time, Chinese and Russian programmers use the same languages as the rest of the world...


He is very right about how many tools and sites have problems with RTL (right-to-left) text. And don't get me started on mixing LTR and RTL text.


Do not know about use cases other than the creator learned a few things.

I am interested to know what are the pros and cons of creating a language syntax in Unicode?


Uncertain about whether such programming languages will be worthy enough, I think that DSLs in localized languages will have better use cases.


Is there something like ASCII for Arabic? In other words small set of single-byte Arabic characters so that cranks can complain about unicode.


Does a sub-routine starts with : salam aleykoum ?


This isn't the first non-ascii language most modern languages are utf-8, look at any Chinese code for an example.

This isn't the first non-english language, when I was learning basic 20 years ago it had support for german keywords.

This is clearly just a dumb political statement, that being said I don't get why every one is so upset. I guess you could argue that it's cultural appropriation but let's face it anyone who argues that is just petty.


This is making my head explore. I love it.


I suspect this is a typo, but it reads well anyway. :)


Not a typo :) BTW, wanna go for a ride in my new Ford Exploder?


Reminds me of the Latin front-end for Perl.


It would be nice to include a pronunciation for English speakers. I just read it in my head as ‘scribble’



This language is called 'Kelb' which translates to 'Dog'. Why is it called that?


Is that any less appropriate a name than "Python"?


from what I understand, the name of the language is Klub - which translates to Dog.

And the example showcases implementation of fibonacci sequence and calling it with 10 as parameter.

A nice, straightforward syntax indeed!

Although I don’t speak Arabic, I find it a fascinating and beautiful language.


Wait until they find out LISP has no left-to-right bias and can be in any natural language


Why? What's the motivation?


The comments here are just absolutely insane, STOP MAKING EVERYTHING POLITICAL. Fake Intellectuals are trying to destroy STEAM by making everything boring and everything about "This people are evil". WTF, it's COMPUTER SCIENCE NOT POLITICAL SCIENCE.


قلب / heart is simply a wonderful name for a programming language.


So its basically JavaScript but with the syntax translated to Arabic.


How do you pronounce it? Kalb?


'Kalb' sounds more like the word dog, 9alb is the correct way.


Nine Elby?

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


qalb and I think it means 'heart' or 'core'


This is from 2012/2013.


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.


Mostly insecure. Everybody is violating the Unicode security considerations.

Only known to be secure are java and cperl. rust followed my advise then for better unicode identifier security, but I haven't checked if they really promise some General Security Profile.

http://perl11.org/blog/unicode-identifiers.html

http://www.unicode.org/reports/tr39/ http://www.unicode.org/reports/tr36/#Security_Levels_and_Ale... http://www.unicode.org/reports/tr31/#Table_Candidate_Charact...


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.


so, like APL


The language is a Lisp with different identifiers and lists printed right to left.


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.


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.


Yeah, thanks for saying that in English, I wouldn't have been able to understand you in any other language.


da nicht für


syntax error


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.


python --lang=german main.py

shivers


Basic would be fun though...

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


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

-o3


Think it would be --lang=deutsch. Gotta internationalize the command-line flags too!


I think you mean, --sprache=deutsch


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


Absolutely. If we do localization of UI texts, the command line options should be included :)


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


Scala has a german version: https://www.scala-lang.org/blog/2017/04/01/announcing-skala....

Release date is 1st of april though


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


TBH, I didn't get the joke until I read your comment. A small "/s" at the end wouldn't hurt.


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


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! :)


small world!


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


[flagged]


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!


I was using autism colloquially. :3 (The irony)


...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]. :)


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


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


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


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


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.


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.


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


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


[flagged]


Please do not post flamebait to HN.

https://news.ycombinator.com/newsguidelines.html


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


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.


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.


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


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


The fact that the Latin translation doesn't make any sense means that it was an English phrase the whole time, despite its etymology.


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.


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.


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?


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


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.


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.


Universities have only recently (past few decades) started dropping the foreign language requirement for the PhD.


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


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?


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.


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.


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.


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


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!


Congratulations! You have discovered the absolute nerdiest activity on the planet. Writing Perl in Klingon.


Writing Perl is enough.


Qapla!


I had completely forgotten about this and honestly laughed out loud. Learn some more at:

https://www.youtube.com/watch?v=auqS6FR_RDE


We must inform the Klingons immediately.


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!


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.


Uses English grammar, though.


"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 :-)


I hoped that someone would notice :)


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.


This comment is a good way to see all the HN users who go off of a comment without reading it fully.


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.


In fairness, lots of people talk over their friends.


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!


Please take this seriously.


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.


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.


Doesn't everyone do that?


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!


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


But well-deserved :)


Yes, of course, in my opinion modern Fortran is awesome.

http://fortranwiki.org/fortran/show/HomePage is worth a check!


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.


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.


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


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.


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.


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.


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


A lot of people don't speak English and I think it's main barrier to become a programmer or QA engineer.


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


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?


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.


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?


Or at least just a few words I guess - if, for, while etc.


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


You don't really need to know what these words mean in English. You just have to know what they do in the 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.


gatekeeper much


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.


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.


Interesting thing: Airline pilots use imperial units instead of metric. They're an odd outlier where the argument used for metric works for imperial. Airlines in all but a few countries use it.

https://aviation.stackexchange.com/questions/2566/what-is-th...


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


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.


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 قلب.


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.


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.


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


Very funny, but no, it's the reason we have one hundred languages instead of a thousand


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


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.


That's exactly why all the HN'ers use JavaScript to write FORTRAN!


Truly a Galaxy-brain move


We Programmers need multiple languages to avoid being affected by Snowcrash.


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.


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.


They had us in the first half I'm not gonna lie.


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.


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?


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.


Speaking as a Cobol programmer I find your comments deeply offensive.


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.


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


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.


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.


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


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.


beautiful :)


Fun little note, the programming language's name means 'Heart' in Arabic.

This makes me wonder if perhaps a abandoning language entirely and relying on symbols for syntax might be the way forward, I have found that the more a language tries to emulate writing the more ambiguous it becomes, maybe the opposite will yield better results, perhaps we could choose to make the language resemble a diagram. Very interesting and thought provoking project.


[flagged]


Please don't take HN threads into flamewar.

We detached this subthread from https://news.ycombinator.com/item?id=21353569 and marked it off-topic.


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


Oh, you were unable to understand me, I can relate, it sure is inconvenient when someone uses words one doesn't understand.


Please do not take HN threads further into flamewar.

https://news.ycombinator.com/newsguidelines.html


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.


Excellent - What we need is less cooperation across borders.

(sarcasm may occur)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: