قلب: a non-ASCII programming language written in Arabic
nas.sr
nas.sr
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...
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."
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
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 FunktionAusgelöst
It's like how every function in Excel is translated as well. `=SUMMEWENNS(…`
Complete nonsense, it makes my eyes bleed.
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.
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.
Little dismissive don't you think. I get your point, but don't undervalue this project.
#define pour for #define ent int etc...
I think these don't really capture the whole idea around creating a programming language in another language, though...
`SELECTIONNER * DE clients TRIER PAR ...`
(sorry for the bad joke, I'm just kind of fond of French acronym mangling. The vocabulary is similar enough to English to to keep the letters the same in many cases, only the order is off. It's bit like verlan for the rest of the world)
[1] https://en.wikipedia.org/wiki/Coordinated_Universal_Time#Ety...
Here is a piece of code in German VBA for Excel 95: https://de.wikipedia.org/wiki/Visual_Basic_for_Applications?...
Changing some accented characters in a well known brand name into strange ones used in "obscure Serb Croat religious documents
then save the worksheet and re-open it with the Italian Excel, since the functions are actually saved internally as an "ordinal" (or whatever) and interpreted by Excel in its "local" language.
An asinine idea indeed.
It's part of the dev environment windev which is totally closed and (at least last time i had to use it) doesn't allow to use any tools like git (sources are encrypted). This and the fact that the whole environment was extremelly bugy (and even the language itself) makes it a real nightmare to work with. That's the only other example of non english programing language I can think of though
Edit: just found this article on wikipedia after writing this. There's quite a few languages:
https://en.m.wikipedia.org/wiki/Non-English-based_programmin...
Easily the single most diabolical thing I've heard all week.
> diabolical
You have no idea.
I've worked with devs using it (and had to debug their code more often than not): the thing is hell, through and through, from the stdlib itself (buggy as fsck[0], terribly leaky abstractions[1], ridiculously contrived[2]) to the IDE to the concepts (worse than VB, you store procedures in windows so changing the UI ever so slightly has dramatic effect on your whole codebase and since it's half static half dynamic you catch that only at runtime) to the source control (worse than VSS, and that's telling[3]) to the database (worse than your random toy-weekend-project database[4]) to the devious marketing ploys[5].
(some links in FR but you can toggle to English)
[0]: JSON parsing and generation is non-conformant, e.g translates null to empty strings. There is basically no memory management and the thing leaks like a sieve. This one can only do GET and POST "automatically", adds a topmost "Accept: * ", and actually only sends credentials on non-HTTPS: on HTTPS they're outright dropped because of a bug, so you have to implement HTTP basic yourself with the hack below! https://doc.pcsoft.fr/fr-FR/?3043007&name=HTTPRequete
[1]: Same proc as above, the overall thing and additional header field is actually a string concat, so if you want multiple ones you pass a string with those separated by \r\n, but god forbid you omit the last CRLF as the headers and body won't have the required CRLF and be right next to each other.
[2]: dict-like stuff (mem leaks included): https://doc.pcsoft.fr/fr-FR/?1514057&name=Tableaux_dynamique...
[3]: http://www.highprogrammer.com/alan/windev/sourcesafe.html
[4]: For network access they actually recommended you share a database via SMB shares before they had a "server mode", and still do for "small loads". The indexes get borked once in a while for random reasons so you have to rebuild them regularly. Their main API is something resembling low-level ISAM but with shared global state, and while they introduced a SQL implementation atop of that, it's downright terrible, severely lacking, and has zero query optimisation plan, throw in a HAVING and you can lock a 10000 records table for minutes.
[5]: Car seller tactics like "Buy a license, get a top of the line iphone/ipad for 1€", goodies strategy dialled to 11, heavily sexualised material (down to the IDE splash screen), with scantily clothed women in luscious poses, high heels, leather, you name it, full of bullet-point buzzwords, actual tagline is "develop 10 times faster" and literally "1000+ new features" for each version, dev conventions are cult-like, Stockholm syndrome is pervasive. License for a given version is lifetime (controlled by a hardware dongle labeled with legal threats) but any support is dropped the minute the next release is out (which is every year). Not that it matters, as bugs stay largely unfixed. Wikipedia page is heavily edited by their marketing team (from their own IPs to boot), forums are heavily moderated against any critical post, who get censored, to the point that one of the devs I mentioned was threatened (on the phone, they called him) of legal action for libel because he publicly reported and discussed a bug.
It's so bad that to fix bugs I implemented drop-in replacements for part of that stdlib and software code in C# (they have a .Net bridge which, quite surprisingly, works well, even dynamically generating WinDev proxy stubs from the C# classes) in well under half a day of work (which also had the benefit of moving some things to git and have actual unit testing), and had plans to port wlanguage to the CLR to help people get out of this hole. Guess what, the plan was rejected (even for bug fixing) because of purely irrational cultish reasons and I had to put intricate workarounds in my Ruby code to massage my way out of the endless brokenness, costing me overall months of work and terrible customer impact.
If it feels like I was on some sort of mission, then it's partly true, as the people I worked with were really nice folks I had real bonds with, and witnessing the brainwashing they were victim of, destroying the very real potential they had, was truly disheartening.
The "software" was MS Excel workbooks. C-level execs love Excel, and they love interactive worksheets even more. The workbooks my friend made were huge, and had immense amounts of functionality. And this was all done without using VBA. It all had to be done in pure Excel functions. This guy had obvious programming talent as he rose through the ranks very quickly, but he never was allowed to program in anything outside of Excel, anything that resembled an actual programming language. He eventually left that career (and the very good money he made in it) for an entirely different calling. He's now finally experimenting with more normal languages, like Java, in his free time.
More on-topic, I feel so sorry for the French developer scene that you've got a monster like windev holding down an entire generation of what could be promising devs.
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.
I started programming at least 4 years before I started learning English. In my experience, not knowing what "if" means doesn't change anything because I never thought of code as prose. Whether it's called "if", "si", or "wenn", all that changes in my head is "what's the magic word that I have to insert before I can branch my code?".
This, I believe, it's why localized programming languages never catch on: because it solves a problem I don't have while bringing a new problem I do have, namely, not being able to find support for my niche programming language.
Variable names and comments? Sure, those are definitely prose. But I doubt anyone suffered too much when Python chose "elif" instead of "else if" (other than developers trying to remember whether a particular script should use "else if", "elsif", "elif", or "|").
Hm, even today, I have not idea why "for" is used for loops (?) and I'm using it without any problems.
Or more straightforwardly, in a way that can be applied to other English constructs, "do that for this group"
It's the same "for" in my head in both those versions.
$$ Σ_(i=0)^(20) x² $$
you'd actually pronounce that as "summe für i = 0 bis 20 von x²", which is a good argument for where it might be from.
I don't think it's much more intuitive in German than in English, probably goes back to the "for each" quantor.
I always read it as inspired by "for values of" which at least in German is a common phrase heard in mathematical courses.
In python is pretty direct: “for x in a” translates for for every x in the collection a, do this code...
In C it’s a bit more abstract: “for (i=0; i<10; ++i)” for every i in the range starting at i=0, while it’s less than 10, incrementing... Basically the body establishes a set or collection and the for loop executed the loop body “for” every item in the collection.
Modern languages often use foreach or some other slightly more descriptive name.
A class mate said his father said they were both pronounced as in English.
We had a fight over this in the playground, and I beat him. So I was right. "input" on the Commodore 64 is pronounced like in Dutch.
(edit: long live the Internet, it's on page 135 of the manual here: https://docplayer.nl/11208014-Gebruikershandleiding-nederlan... . Nostalgia).
I wish people who come up with all these inscrutable icons would realize that.
Unless the script is so foreign to you (ex. Latin vs Arabic) that the keywords look like inscrutable symbols anyway.
2. cannot google an icon
3. icons are not standardized - companies copyright their icons and sue anyone else who uses them
4. icons do not have a sort order
5. cannot type an icon into a text editor /word processor
6. fonts don't support icons
In PHP 5.4, they helped the situation somewhat by changing the error message to "unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM)" - I suspect national pride was involved in their refusal to completely remove the internal token name from the error message.
It is not like using non English languages would change paradigm programming itself.
EDIT: Of course there is!
https://en.wikipedia.org/wiki/Dolittle_(programming_language...
So ooo calc vba equivalent is translated in various languages ;p
Not as stupid as translating low level error messages.
While I understand localization can be useful for a subset of users, at least they could have made the English function names also work, or have a suggestion mechanism to suggest the Spanish translation if you type an English function name. I don't understand why they don't do this.
Anyway, the problems of name localization are nothing compared to the problems of using commas as decimal separator. People from English-speaking countries will never know how many extra hours of life they have from not fiddling with decimal separators, text encoding programming issues, etc.
If memory serves me right, back when MS Office macro viruses were the threat du jour, there was already a bit of a remedy in place for those formats that would translate the formulas and macros of incoming files from a different language version of the same software. This caused secondary waves of "mutated" viruses that had crossed multiple language barriers and came back slightly different but still working, foiling the efforts of checksum based virus scanners.
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)
But nobody cared. Programmers program in English.
I once traveled to Finland to visit a customer. Everyone in the office spoke in English. I asked if they were just being polite because I was there. They said nope, their staff was from all over Europe and the only language they had in common was English.
There are, to this day, people who get in trouble when their computers reply to them in English, including coding folks. I bet they were (and are) thankful for initiatives like yours, but they won't have the vocabulary to tell you.
Maybe we see that in a few years, with everything moving to Chinese.
> Imagine if everyone posted on StackExchange using their native tongue.
Imagine users going to forums in their own language. People actually do that.
Once they get there, I'm not sure they have a lot of motivation left to do high-tech on foreigners' terms and in foreign languages.
While it doesn't follow that "we" need to learn Chinese then, whatever they'll use instead of StackExchange will simply outnumber the English version.
The definition of useful varies though. Many people starting out don't have the ability to understand some error messages, so being able to search for the error message is most useful. If everyone in the world has the same error message, finding an explanation for the error is a lot easier.
Two options:
1. LC_ALL=C $command to get the universal version of the error to search/report
2. Add a numerical error code that remains stable across locales
Of course if you turn on localized error messages you might actually prefer results in your own language.
We're still struggling with this in english. Think about how often the default reaction still is to google a compiler error, unless it's one of a handful of common ones you see often. Compiler errors are often opaque, even to the best programmers that speak english natively. A significant base of software emits error numbers with thin descriptions at best, which then have to be looked up in a manual anyway.
(Europe is only a special case "to some extent" because English also competes for lingua franca status with Hindi in India; in Japan it's taught (badly) as a result of connections with the US; and in countries as varied as Israel and Singapore it has a foothold.)
If you're starting from first principles, and are willing to go with that common-second-language threshold instead of insisting on people's first languages, English is still definitely a clear first choice - it barely edges out Chinese for total L1 + L2 speakers, and those speakers are concentrated in the centers of software development.
After that you have Chinese and Hindi (both fairly restricted in geographical reach, but involving lots of people), then Spanish (most of Latin America) and French (spoken in a dizzying array of cultures as L2, because of colonial history in Africa and the Middle East).
And then you finally get to Arabic :-P
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.
Who is "we"?
1C is a Russian-based domain-specific language that dominates accounting in Russia and neighboring ex-USSR countries[1]. It competes with SAP, and made its founder a billionaire[2].
[1]https://ru.wikipedia.org/wiki/1С:Предприятие
[2]https://www.bloomberg.com/news/articles/2017-06-15/a-russian...
I'll try to find some, but in the meantime check out these code samples:
https://gist.github.com/alexaandrov/739e16e1786ab2b3d6bc
https://guesto.ru/1c-razrabotka-konfiguratsii-menedzher-zada...
Etc
Сообщить("Hello Wold");
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, if the natural language has some influence on the semantics of the programming language, it might be useful enough. Doubt it, as most natural languages' grammar is way harder than either English or your average programming language. The only attempt that comes to mind right now would be Lingua::Romana::Perligata[1] and that's just an esolang layer.
Now, for political or philosophical reasons an artificial language might be considered. Like Esperanto or Lojban, but I haven't seen something like this, either (I'm not counting Klingon).
[1]: http://users.monash.edu/~damian/papers/HTML/Perligata.html
We already know that powerful programming languages can be built with non-ASCII characters in mind -- see APL, for example.
However, we also know that the difficulties of typing these languages without special keyboard support have led to a variety of more English in ASCII language successors such as J/K/L.
The input language has nothing to do with the keyboard. How do you think people type foreign natural languages? This comes up again and again in programming-related online discussions - why is it so hard for people who program software every day to imagine that keyboard input is also mapped by software?
The real reason Iverson used ASCII for J is that in the early 1980s, you had to get an APL character video ROM (code page 907) for your terminal or PC (exactly the same case as for foreign languages). Obviously not a problem at the time for Macs or other computers that use bit-mapped fonts, and has not been a problem for PCs for the past 30 years.
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.
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.
No idea if this counts as "serious", but it was used in schools back then.
... and forcing everyone to put up signs in French [1]. Compelled speech, if you will.
[1] https://en.wikipedia.org/wiki/Office_qu%C3%A9b%C3%A9cois_de_...
As for French not being used in keywords, I found that state of affair somewhat liberating. I learned some LOGO with French keywords in primary school, then moved on to BASIC with English keywords long before I learned English. The fact that the keywords are in a foreign language somehow helped. I was not randomly trying French words hoping that it would do something. Either I knew the "computer" word (aka English) or I did not.
I find programming using French keywords somewhat distasteful. French does feel ill suited for this kind of endeavor with its complex grammar rules and conjugation. It's also very verbose. When I was in college my friends used to name things in a mixture of French and English. Yes, even native speakers that wanted to use French for variables would invariably use English keywords.
For example, an accessor would be named `getUtilisateur()` instead of `getUser()`, simply because all the equivalents for `get` and `set` are super long and fastidious to type. Also everyone would be super confused if a different convention than `get` or `set` was being used in this context. But often enough the reason was that the English word was so much shorter, and as easily understood.
If that's Java, there's more to it than simply being "short". Since Java (unlike C#) doesn't have native properties, methods following that JavaBeans naming convention are treated as property getters and setters (often using reflection). That is, the methods "String getUtilisateur()" and "void setUtilisateur(String value)" are treated as if the object had a property named "utilisateur". Any other naming convention won't work, since everything that wants to access an object's "properties" will be looking for them only with the JavaBeans naming convention.
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.
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.
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.
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.
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
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.
[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
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?
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.
Your comment is an argument against any new programming language.
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?
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.
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.
It is not necessary to be male, white, or English speaking, to be an excellent engineer, and yet those groups are significantly over represented.
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.
https://image.slidesharecdn.com/tceacsimperative-15072621371...
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.
...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 !
> 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"?
As for the ATC analogy, software normally works by interfacing with systems written in other languages. Python to C-based glibc to the asm trampolines in the kernel.
I 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.
https://www.chronicle.com/blogs/linguafranca/2014/04/30/ther...
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)
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.
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.
Yet millions of children (and adults) learn about programming through scratch and create amazing things. It is not a dead-end language.
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.
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.
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 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.
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.
But think about standard libs. All of those functions and types are named with English words.
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.
> 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).
[1] https://snap.berkeley.edu/
[2] https://programmingisterrible.com/post/76953953784/programmi...
[1] If we allow esolangs I would proudly present Aheui (https://esolangs.org/wiki/Aheui) as a good example.
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.
언어를 배운다.
[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.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.
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.
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"?
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.
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...
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.
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.
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.)
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'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.
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.
They’re not really at that great of a disadvantage.
It's not about English speakers tolerance, it is all about the reader's ability to grok a complex written text.
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.
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.
That book was so much about the importance of the martian language and how language shapes perception.
Absolutely. Using it wasn't an accident either. The word is used illustratively only in the text, it is never explained.
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.
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.
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.
“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.
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.
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.
I suggest pretending to be a foreigner and ask for directions, next time you have 10 minutes to waste.
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_...
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.
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.
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.
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.
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.
>>> π = 3.14159
>>> jalapeño = "a hot pepper"
>>> ラーメン = "delicious"
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!
[1] https://gist.github.com/XVilka/a0e49e1c65370ba11c17
[2] https://terminal-wg.pages.freedesktop.org/bidi/recommendatio...
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"?
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).
Alternatively, you pick a programming language that doesn't have any reserved words, such as FORTRAN. (Are there any other well known ones?)
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.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...
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.
(1) At the very least, someone should explain why the rise of - say - the russian and indian programmers, given the unfair barrier.
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.
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) .
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.
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.
As far as I can tell, this is a LISP, and I can remember having read about it ages ago.
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
For example quicksort in J:
qs =: (($:@(<#[), (=#[), $:@(>#[)) ({~ ?@#)) ^: (1<#)
"APL: a non-ASCII programming language written entirely in APL"
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
For example:
ls -1 | grep backup » rm
I don't even know if what I'm asking makes any sense... Need more coffed
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.
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
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 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.
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?
`string.toUppercase()` is super intuitive for an english speaker, but is nonsense that needs to be memorized for someone that can't speak english.
Community > Individual
I disagree, and to my mind programming is no different than linguistics in this regard.
That's my point: everyone has to learn a bit of english, and that's good.
is "good" then.English has become the basis for the symbols of programming. You should not think of code as prose, it is simply code.
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".
Bring back the Þorn! :D
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.
There was also a Hebrew version of basic taught to children (בסיסית - בייסיק בעברית).
Completely pointless.
Non-English based programming languages. https://en.wikipedia.org/wiki/Non-English-based_programming_...
I'm almost sure there was a more recent big thread though. Anyone?
This way there might not be a need to invent a new programming language per human language.
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
I am sure many small projects attempted to innovate similar solutions but never really took off.
If such a thing got popular, would be interesting to see if it would affect international collaboration. Whether it would speed things up.
The 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,
But there are already (joke) projects that do this:
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.
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.And a similar feature made CSV even worse.
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....
Framework goes up in flames quite fast.
So programmers in China and Russia also using only English programming language?
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.
Comment-wise, many companies use Chinese comments in code while many use English as well.
And yes, most of the time, Chinese and Russian programmers use the same languages as the rest of the world...
I am interested to know what are the pros and cons of creating a language syntax in Unicode?
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.
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.
For non-speakers, it's a bunch of scribbly lines.
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.
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...
That's way internationalization is a lot harder than just applying a dictionary.
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.
For anyone who does not know what Lojban is: https://en.wikipedia.org/wiki/Lojban#Applications would be a great starting point. :)
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).
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.
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 :)
The person you are responding to is not being serious. it is a joke.
And the original, first high level programming language plankalkül also had nothing to do with english.
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.
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 :-)
(also, hey skrebbel! :)
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/
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).
> ...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
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…
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?
That zinger didn't tip it off to you?
shivers
Obviously we would translate the name of the command itself, and the language would be implied
riesenschlange main.py10 drucken 'Hallo, Welt!" 20 gehe zu 10
-o3
Release date is 1st of april though
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...
And, most annoyingly, their thousands and decimal separators. That has tripped me up countless times.
100,991 vs 100.991.
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...
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.
I'd rather move on to the next comment.
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.
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. 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.
Whoops, proved my own point.
The only way to have as little bugs as possible is to have as little software as possible.
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
https://aviation.stackexchange.com/questions/2566/what-is-th...
I think this is probably why it is neither useful nor intended to useful other than as an "exercise".
"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...
http://fortranwiki.org/fortran/show/HomePage is worth a check!
That's an unnecessary slight
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.
"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
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.
“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.
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.
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.
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.
>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.
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.
That’s not how it works. Programming proficiency isn’t randomly distributed across the population.
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.
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.)
Ironic that in order to say this, you used a latin phrase that translates to "language of the Frankish people".
> 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.
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.
How do you think non-english speakers read documentation in english?
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.
Have you ever actually tried learning APL, or are you just trolling?
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 :)
Multiple languages for developers is kind of a fringe case for functionality seen more in importers and fantranslaters.
This is why I program exclusively in Piet
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.
數字 = 23
運行 = True
假 = False
整數=int
輸入=input
印出=print
while 運行:
猜測 = 整數(輸入('輸入一個數字: '))
if 猜測 == 數字:
印出('恭喜, 你猜對了.')
運行 = 假 # 這會讓循環語句結束
elif 猜測 < 數字:
印出('錯了, 數字再大一點.')
else:
印出('錯了, 數字再小一點.')
else:
印出('循環語句結束')
印出('結束')
See:http://reganmian.net/blog/2008/11/21/chinese-python-translat...
https://elangocheran.com/2014/10/30/exploring-programming-in...
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.
So, if you want to translate a lisp into another language you have to resort to macros.
* (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.I expected specials to work in this case, but apparently not.
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.
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!Good times!
I can't read the code written at my desk a week ago and understand what it does.
[0] https://www.worldatlas.com/articles/the-world-s-most-popular...
I don't see how that's a problem with Arabic specifically. The same would happen if you switched to typing English in Dvorak.
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.
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.
> 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.
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.
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.
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.
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.
(sarcasm may occur)