>Code is written entirely in Arabic, highlighting cultural biases of computer science and challenging the assumptions we make about programming.
There are lots of "cultural biases in computer science" -- in UI, neural network training, encodings, terms of service, etc.
Of all of them, this is the least helpful, and the least important.
It's like doing math in local notation, or translating latin/greek terms doctors all over the world are trained and understand, with regional varieties.
There's a reason why e.g. air traffic control speaks english no matter the ethnicity (as per the ICAO standard).
(And I don't mean programming language terminology / modifiers has to be english for any special reason. It could just as well have been French or whatever. But it has to be a single one, and english is already used for that purpose).
And I'm no native english speaker, so I don't say this as one.
> There's a reason why e.g. air traffic control speaks english no matter the ethnicity (as per the ICAO standard).
Yes. The reason is that air traffic control inherently requires people from different regions and languages to communicate quickly in life or death situations. Ease of being an air-traffic controller is not a primary motivating factor, and getting more diverse input isn't really a useful feature.
On the other hand, ease of being a developer should be something we strive for. We don't generally deal with fast paced life or death communication, we instead want programming to be accessible, to get a range of people (and their input, experience, opinions) involved, and to break down unnecessary barriers. Programming in a foreign language is a pretty significant barrier.
> Programming in a foreign language is a pretty significant barrier.
Not really. I learned programming when I was 14, far before learning English.
How many English constructs do you have in a programming language? Func, var, for, if, else, import, etc. You can memorize those in no time, especially if you do that as you learn programming.
Documentation and textbooks are a different thing, of course. But I learned programming in high school, from teachers speaking my language and with textbook in my language.
This language is slightly more interesting for being Arabic than (say) German or Greek.
You're got three barriers between the learner and the language: unknown keywords, unfamiliar letters, and the wrong LTR/RTL order.
It all adds up to where, boy, it would be intimidating for me to learn this language, as someone who already knows how to program. Doesn't that imply it would be equally intimidating for someone who only speaks Arabic to learn C?
Would be good, trouble is, where would we ask such a thing? Nobody would be on HN unless they were fluent enough in English to find it interesting to browse English comments and discussions. Presumably there are some Arabic-only tech forums out there somewhere for people who want to talk about technical things but don't feel comfortable enough with English. But then I suppose there's probably a few of those, all with different cultures, and the result would depend on the culture of that board.
I mean, the existence of the article implies that at least one person who speaks, reads and writes Arabic thought there was a problem (even if they also knew both English and English-based programming languages).
But again, while I can't speak from the Arabic speaker -> "English" PL direction, I'm perfectly capable of speaking for the English speaker -> "Arabic" PL direction.
So if it's not such a huge barrier for a foreign programmer to program in an English-centric computer programming language, surely the same can be said about non-Arabic speakers who might want, or have to deal with this language?
The problem is not so much non-Arabic speakers having difficulty dealing with the language, since they're not really the target audience. But if an Arabic speaker tries to use this language to write a program for some specific use case they have, they'll have to work around the complete lack of ecosystem that comes with a novel language in a tiny niche.
It's the same reason why Chinese developers haven't banded together to create a Chinese-based language. They still code in Chinese, but the languages and libraries they use are mainstream: C++, Java, Python, ... All of these languages support arbitrary Unicode in comments and Java and Python also support Unicode identifiers. As a result, Chinese documentation is available even for software that's otherwise in English. However, if you tried to convince Chinese developers to abandon their battle-tested languages with a rich ecosystem for some other language just so they can use different keywords, you'd get laughed out of the room. It's not solving a problem they have.
That doesn't mean that localized programming languages can't be useful e.g. in education. But translating documentation and libraries is useful for many more people than translating the syntax of a language.
Yes. Any new programming language needs to offer something more than just different syntax if it wants to be used by more than just a handful of people.
As an English speaker with a US keyboard I would have a very hard time with قلب because I'd have to learn how to at least read Arabic and how to type it. In any other language, using say Spanish, using Latin script I at least only have to learn that importar in this Spanish language means include the library. In an Arabic language it'd maybe be استيراد which I'd have to memorize the whole word AND how to type it, which on my keyboard would be changing the layout and buying a sticker set. [1]
[0] Disclaimer all the Spanish/Arabic/etc words were pulled directly from google translate.
[1] Though Arabic is particularly rough because the shape of the letters change based on the letters around it so you have to learn that too! See: http://www.arabion.net/lesson2.html
I understand as an native English speaker I'm in a fortunate position that by a combination of history and random chance computer development happened largely in my language. But given about 70% of the world uses Latin script keeping languages largely based in the English language the majority of the world is able to use their native script at least which is one less hurdle to learning to program.
What I think may be more useful for bringing more people into programming in their native language would be thinking about providing transliterations where, for example, the Python keywords are translated into Arabic. Doing that Arabic speakers could write in their own language and English speakers could run a utility that maps from the Arabic keywords to the current standard English keywords. Stuff like variable names gets a little tricky there I'll admit, not sure how to handle them, maybe Romanize them too?
While this is true as far as it goes, there's a difference in cost/reward tradeoff in having to understand the Latin alphabet to be able to read materially all programming languages, and having to understand many different alphabets to do so.
I started programming at age 10, with game maker. I cannot stress how useful having icons for each operation is. I remember not knowing what a loop was (I didn't even understand what a variable was), but having the "steps" icon made it clear to me that it was run on every step the player makes (which is approximate, but IIRC it was simply a while loop)
>How many English constructs do you have in a programming language? Func, var, for, if, else, import, etc.
Func and var aren't even English words. Even an English speaker would have to at least get confirmation that their guess is right. You could replace them with arbitrary symbols and it wouldn't rally really change anything.
Not for those who professionally speak Mathematics; which is the audience APL was made to serve, after all.
Amusing so many programmers will complain how they feel horribly excluded by APL, but see no issue with every other programming language in existence speaking exclusively ASCII English. At least Math is a true lingua franca, unlike our awful Saxon bodge. I know which I'd be safer speaking when Aliens come to visit. https://youtu.be/t2TDf9XU09k?t=120
But math is also very difficult to understand. The information density on all of the symbols is too high and it's easy to misunderstand (or not understand) as a result. I've met very few people who were comfortable with reading math, even fairly simple things that they otherwise understand.
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.
What do you mean exactly by "programming in a foreign language is a pretty significant barrier", and why is reducing this barrier to strive for? I believe English as a common language is a good thing for communication, for understanding each other. It could have been any other languages I suppose, but today it is English. It may change. I cannot even talk about programming in my first language because I would not have gotten any use out of it. It would not have been beneficial to me to learn the terminology in my first language. English, however, was pretty much beneficial. I am not sure that division here would be beneficial to the field, but this is just my opinion. Yes, it is a barrier for people who, for some reasons, are not willing to learn the common language which, today, is English. Is it a bad thing? In my opinion, it is not. It could be a way of expressing your dedication and willingness in some cases. I wanted to understand, and I wanted to be understood, and knew that learning English was the way to do it, so I learnt it. Having many different languages would defeat the purpose of what having a common language gives us, which binds us together.
> Programming in a foreign language is a pretty significant barrier.
There are only a handful of English words you have to memorize. Music students have to memorize a handful of Italian words to follow written music. It hasn't been a problem.
You don't really have to learn the language to program in it though you can just know "import" means include this library, that's a harder task than just being able to read for sure. I think the biggest issue is when you have to use a different script than your native language (and keyboard). To code in Arabic, Chinese, or Russian I'd have to completely relearn how to type.
I think if you are programming in a native language programming language, there is a problem, that you can not find enough help and you don't have things like stackoverflow. You don't immediately see useful patterns and answers to questions and the effectiveness of the language and of your understanding is reduced.
Unless you have a personal teacher, I think, learning a native programming language is not a good idea, because you will be limiting yourself, you will learn wrong patterns. You will not be standing on the shoulders of (many)others before you and the quality of your understanding will be not as good.
I also think a lot of skill comes from cross language disciplines, and limiting yourself to one native langue is not a good idea. Better to invest time and learn english subset used in programming. Then you can read interesting code of others, which was reviewed by more eyes than your native programming language.
> On the other hand, ease of being a developer should be something we strive for.
Yeah, no.
I want to strive for a field of professionals who know what they're doing instead of every second 'engineer' being a script kiddie with a MOOC or two of Python under their belt and nothing else. The barriers need to come way up from where they are today, not be lowered even further.
> I'm not talking about lowering standards, I'm talking about lowering barriers.
One and the same. Making it easier to join a group necessarily lowers the barrier for joining said group which necessarily lowers the standard of said group. There are entire books written about this problem which leads to it being impossible to build large above-average skilled teams.
No need to bring identity politics into engineering practice. They have as much place here as they do in getting a pilot license.
There is a minimum bar to pass, and part of that bar is speaking a common parlance with members of your professional body from the rest of the world. I'm sorry you feel upset that English happened to be the language of choice for that, I personally just invested the time to learn it. I get paid more than doctors or pilots with the same amount of experience as me, so I'm not going to start complaining about satisfying the same language requirements that they deal with.
Sure, you can require someone to be fluent in English before you're willing to hire them for your team of programmers (a standard). That doesn't mean people who don't want to work for you should be required to learn English before they can start to learn programming (a barrier).
I am a native English speaker in the US and to me it seems palpably unfair. People much smarter than me have to spend a lot of time struggling with a foreign language, and are still unfairly perceived as less intelligent than native speakers.
I could imagine it might be less unfair in a situation, like in much of Europe, where nobody is a native English speaker but many speak it (sort of like Latin at one time). And there are of course huge benefits from a standard language. But it still bugs me.
Well the question is why you'd want to allow it to become your problem, too, though. Having to debug libraries written in Elder Futhark or, case in point, Arabic, seems much more impossible than it may already seem sometimes, and that's why I'm not going to write a programming language in Swiss German, and keep my comments in English too, for that matter.
I think it comes from a good place in the heart, but people really shouldn't look for ways to drag themselves into other people's problems out of "fairness". Many societies have a nominal interest in teaching English to their people, but fail in practice. Fixing English education (or really language teaching in general) is a far more useful thing than torturing yourself with a language not suited to typewriter keyboards, such as APL or Arabic.
> There's a reason why e.g. air traffic control speaks english no matter the ethnicity (as per the ICAO standard).
...which is not respected at many smaller airports/airfields. If you plan to land your machine at a local French airport, you better be prepared to speak French !
The value of this language is as a tool to expose those biases. Some of them may be stupid and holding us all back.
As for the ATC analogy, software normally works by interfacing with systems written in other languages. Python to C-based glibc to the asm trampolines in the kernel.
This language has the potential to attract native Arabic speakers to programming who may not otherwise take any interest. And who knows what insights or new paradigms they could bring. Lowering the barrier to entry to programming is a good thing.
Many of them might well have wound up programming anyway. And so this language has the potential to shunt them off into a likely dead-end language.
Although, yes, it might be a “gateway drug” kind of thing where they wind up learning more mainstream languages as well. I’m just saying it’s not an obvious and unalloyed win.
> 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"?
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.