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.”
>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?
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
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").
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 "|").
>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].
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.
>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.
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'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.
> 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.
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.
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.
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.
#!/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.
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 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.
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.
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.
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.
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?
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.
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.
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.
[+] [-] SamBam|6 years ago|reply
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...
[+] [-] gambler|6 years ago|reply
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."
[+] [-] fanf2|6 years ago|reply
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
[+] [-] codesforhugs|6 years ago|reply
[+] [-] fxj|6 years ago|reply
https://de.wikipedia.org/wiki/Visual_Basic_for_Applications
[+] [-] runxel|6 years ago|reply
It's like how every function in Excel is translated as well. `=SUMMEWENNS(…`
Complete nonsense, it makes my eyes bleed.
[+] [-] Tepix|6 years ago|reply
[+] [-] bdcravens|6 years ago|reply
[+] [-] microtherion|6 years ago|reply
[+] [-] VMG|6 years ago|reply
Ausgelöst
[+] [-] Animats|6 years ago|reply
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.
[+] [-] probably_wrong|6 years ago|reply
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 "|").
[+] [-] romwell|6 years ago|reply
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...
[+] [-] WalterBright|6 years ago|reply
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.
[+] [-] coldtea|6 years ago|reply
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.
[+] [-] danpalmer|6 years ago|reply
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.
[+] [-] currymj|6 years ago|reply
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.
[+] [-] blauditore|6 years ago|reply
...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 !
[+] [-] lallysingh|6 years ago|reply
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.
[+] [-] gkfasdfasdf|6 years ago|reply
[+] [-] msla|6 years ago|reply
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)
[+] [-] Geimfari|6 years ago|reply
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.
[+] [-] knolax|6 years ago|reply
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
[+] [-] khaled|6 years ago|reply
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.
[+] [-] cicero|6 years ago|reply
[+] [-] Tepix|6 years ago|reply
> 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"?
[+] [-] namelosw|6 years ago|reply
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.
[+] [-] Ensorceled|6 years ago|reply
[+] [-] jameshart|6 years ago|reply
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.
[+] [-] mar77i|6 years ago|reply
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.
[+] [-] UncleMeat|6 years ago|reply
But think about standard libs. All of those functions and types are named with English words.
[+] [-] oaiey|6 years ago|reply
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.
[+] [-] lifthrasiir|6 years ago|reply
[1] If we allow esolangs I would proudly present Aheui (https://esolangs.org/wiki/Aheui) as a good example.
[+] [-] throwaway_bad|6 years ago|reply
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...
[+] [-] fxj|6 years ago|reply
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:
[+] [-] filleokus|6 years ago|reply
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
[+] [-] nightnight|6 years ago|reply
[+] [-] tsanummy|6 years ago|reply
[+] [-] jacquesm|6 years ago|reply
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.
[+] [-] kerkeslager|6 years ago|reply
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_...
[+] [-] gkfasdfasdf|6 years ago|reply
[+] [-] mattigames|6 years ago|reply
[+] [-] fxj|6 years ago|reply
>>> π = 3.14159
>>> jalapeño = "a hot pepper"
>>> ラーメン = "delicious"
[+] [-] varelaz|6 years ago|reply
[+] [-] gwbas1c|6 years ago|reply
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!
[+] [-] xvilka|6 years ago|reply
[1] https://gist.github.com/XVilka/a0e49e1c65370ba11c17
[2] https://terminal-wg.pages.freedesktop.org/bidi/recommendatio...
[+] [-] HelloNurse|6 years ago|reply
[+] [-] gumby|6 years ago|reply
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).
[+] [-] bloak|6 years ago|reply
Alternatively, you pick a programming language that doesn't have any reserved words, such as FORTRAN. (Are there any other well known ones?)
[+] [-] Someone|6 years ago|reply