1. 61

  2. 18

    Does it use an RL parser? ;)

      1. 6

        https://github.com/nasser/---#name has the one thing that was missing for me in the article - how to pronounce the name (even badly mangled I suppose).

        1. 4

          This is super neat! That said, I think that ASCII/English has been really handy for giving all programmers a lingua franca for working together–I’m not sure throwing that away in the name of local identity is an unalloyed good.

          1. 7

            The author addresses this in their talk at Deconstruct this year (not published yet, but will be eventually), and, in a less compelling way in http://ojs.decolonising.digital/index.php/decolonising_digital/article/view/PersonalComputer/3

            Basically - yes, privelaging one language over another is not good, but that goes whether the language is English or Arabic. This is an art project, but a programming language that embodies these ideals would not have any canonical “name” for a given function, and instead would allow the programmer to map a human friendly name in any language onto the computer-friendly identifier (possibly a content-addressable system like unison). This also fixes lots of real problems with linking, etc (you don’t have to do name mangling, for instance).

            1. 5

              I guess I can see both sides. On the one hand, it’s nice to have as many people using the same programming language as possible, so that there are many libraries for those languages, and many users for them to find and fix bugs. In that point of view, non-English speakers having to learn a little bit of english to find docs and keywords and such is just a cost of doing business.

              On the other hand, it’s nice to have a way for non-English speakers to get into programming without having to learn a foreign language. In that point of view, the cost of doing business is that they may get siloed into a small-time language without as much presence for libraries, docs, error message help, etc. But it might help people become interested enough in programming to explore other languages, when they might never bother without a taste from this.

              What does all that come down to though? I wouldn’t want to actively suppress it or anything. Maybe just let users know that what the legitimate concerns are, and let them make their own choice on that to learn I guess.

              1. 3

                The Arabic script is not particularly well suited for use as a symbolic alphabet because of its highly cursive nature and the way that letter forms change based on location within a word. This is relevant to the script’s use as an ASCII-equivalent (and makes font layout rules for Arabic more complicated than for some other scripts), but also means that older technologies like the printing press were harder to adapt to Arabic-script languages.

                It’s interesting to think about how an equivalent of ASCII (and precursor technologies like teletypewriters and telegraphs) would’ve been developed with respect to a non-Latin script. That said, I’m not personally particularly fond of the aesthetics of the Arabic script. There’s other alphabets I would be more inclined to see an alternate-world ASCII of - the Mxedruli script used by Georgian and a few other Caucasian languages, for instance, is really pretty and less well known than it should be.

                1. 4

                  The story of typewriter for Hangul (Korean alphabet) is truly fascinating, but unfortunately mostly unavailable in languages other than Korean. For example, typewriters had two keys for “w” because of technical limitation of typewriters (they had difference advance). Modern computer keyboard layout inherited this even if technical limitation no longer applies.

                  1. 1

                    Or cunieform!

                  2. 2

                    it was a happy accident that the lingua franca for programming is also very well suited. the highly irregular spelling means more short strings are words, so short names can be more expressive.

                  3. 3

                    Some help for those of us who don’t know Arabic but would like to learn would be nice.

                    1. 4

                      Here’s an entertaining account about trying to learn the language:


                      1. 2


                        I’ve been learning Farsi (as a native English speaker) for the past ~8 months or so and ق is a real pain, even in Farsi which is less harsh than Arabic.

                      2. 3

                        I envy those fluent enough in a second language to have unlocked access to complex ideas that don’t translate directly because of cultural or linguistic context implicit to an entire mental model.

                        I only had one semester of Arabic, and my only other secondary language (French) mostly translates complex ideas into English without lossiness.

                        1. 3

                          There have been other programming languages in non-Roman scripts, even early ones. The 1982 Tomy Tutor has an incredibly constrained dialect of BASIC called GBASIC, which originated as an incredibly constrained Japanese G-BASIC (sic) on the Tomy Pyuuta (ぴゅ太). Although in katakana, they are legitimate words, such as カケ “kake” for PRNT “print”.

                          The Japanese G-BASIC page seems to have disappeared, but here’s the English variant https://www.floodgap.com/retrobits/tomy/gbkeyw.html and a Wayback copy to compare to: http://web.archive.org/web/20060412212628/http://www3.wind.ne.jp/toragiku/kopa/pyuta4.htm

                          1. 5

                            There is a reason our entire foundation of our profession is based off the work of people using this script. From the numerals being called ‘Arabic’ to using ‘Al-gebra’ (from Arabic word الْجَبْر‎ (al-jabr, “reunion, resetting of broken parts”)) and ‘Al-gorithms’ (transliteration of the Arabic form of the name of the Persian mathematician al-Khwārizmī (الخَوَارِزْمِيّ‎ (al-ḵawārizmiyy, “native of Khwarezm”)). My gravatar is the name of the person who helped us learn about many of those things in the same Kufic script the art of the algorithms are done in. (Stolen from http://jeffe.cs.illinois.edu/teaching/algorithms/)

                            I do wish I could perspective take a bit better with how people with different scripts and grammars understand our “bicycles for thought”.

                            1. 6

                              There is a reason our entire foundation of our profession is based off the work of people using this script.

                              I hope I don’t sound rude, but I didn’t quite understand the reason? The origin of digits and the names of disciplines doesn’t really look like an argument…

                              1. 1

                                I suspect their point was that the reason those disciplines have those names is because they originated with speakers of Arabic.

                              2. 2

                                I see what the creator did here, and it makes sense as a tiny demo. I wonder though if it wouldn’t have been a similar amount of effort to translate the names of primitives in e.g. racket or lua and have a full programming language.

                                1. 8

                                  Would the result have been idiomatic in arabic? This seems to be part art project to explore what pops out when we start from a non-European language with different sentence structure, so from that context it makes sense to not just translate the primitives of an existing language.

                                  1. 4

                                    The starting point appears to be Peter Norvig’s 90 line lisp, with Unicode in rtl mode.

                                    Given that, I’d be surprised if the base language looks more like idiomatic (literary?) Arabic than standard racket/scheme looks like idiomatic English.

                                  2. 5

                                    I started translating subsets of Racket into Thai when I was learning; Racket worked really well for this: https://github.com/technomancy/thai-type (My favorite translation was curry -> แกง) Edit: I never had it reviewed by a native speaker so it’s probably full of basic mistakes.

                                  3. 0

                                    This is pretty cool, but at the same time I don’t want it in my work :)