
Ramsey Nasser's Arabic programming language artwork - ChrisArchitect
http://animalnewyork.com/2014/artists-notebook-ramsey-nasser/
======
rjzzleep
I applaud efforts like this. zmguy writes that we should work to defragment
the world. But who are english speakers to expect everyone to speak english? I
think we need more fragmentation. We've defragmented enough already.

Diversity is a great thing. The more diverse we are, the more diverse our
worldviews are and the more creative we become. Maybe there is more conflict,
but who is to say that more conflict is a bad thing? As I recall there were
studies on different personalities in multilingual people. (Although I believe
it's true observing myself, you know how every study can have a study
disproving it).

When I started learning programming there were a few resources available only
in russian on russian forums(RE related) same with chinese. At the same time
people who didn't know any better think russians are technologically behind
and still do.

I recently had a discussion with someone in the University who was blaming
them(them including russians, chinese speakers and others) for not making
information more readily available to him. China, Japan, Russia, Iran,
probably a bunch of Arab countries, Germany(although this one is argueably
moving to english as scientific language) have vibrant scientific communities,
that you can only understand if you speak the respective language.

If the numbers are right [1] (which i doubt, i assume both the chinese and the
english l2 speakers to be much more) then maybe it is us who should make more
available in chinese. Also keep in mind that for a very long time Arab was the
defacto scientific language of south east asia.

[1]
[https://en.wikipedia.org/wiki/List_of_languages_by_total_num...](https://en.wikipedia.org/wiki/List_of_languages_by_total_number_of_speakers)

edit: i don't normally ask for explanations, but if you downvote i'd
appreciate an explanation in this context.

~~~
zmguy
While I do want defragmentation of technical and scientific research (imagine
the duplication that occurs given that lack of a unified scientific research
dependency tree), I specifically qualified myself with "...as a second
language." A world where everyone speaks one language would be boring as fuck,
not to mention probably a dozen generations in the future before it would
happen. But realistically the future global language of Earth is probably
going to be Arabic, Arabic speakers are reproducing at a rate that virtually
guarantees it. I can't remember to attribute this quote/sentiment accurately
but here it goes... "The war against the West will not be won on a battlefield
but in the wombs of our mothers..." I also can't speak to the accuracy of the
claims in the following link, but they are thought provoking and worth a
watch/read. [http://religionresearch.org/martijn/2009/05/05/islamizing-
eu...](http://religionresearch.org/martijn/2009/05/05/islamizing-europe-
muslim-demographics/)

~~~
throwaway344
I'm curious why you think that Arabic is so predestined to be "the" language
of the future. I'm saying that, as the number of people who speak English (840
million) is four times as many as the number who speak Arabic (221 million).
That's not even including the lack of mutual intelligibility between different
flavors of Arabic.

~~~
justinmk
Because s/he is extrapolating a curve based on the current birth rate.

> Arabic speakers are reproducing at a rate that virtually guarantees it.

That's ridiculous. In the 1970s, Chinese birth rate was ~5/woman [1]. It turns
out that dynamic systems change with time.

Anyways, to get back on topic: more accessibility will only improve things.

[1] [http://en.m.wikipedia.org/wiki/One-
child_policy](http://en.m.wikipedia.org/wiki/One-child_policy)

~~~
unhammer
Some other HN comment I can't remember mentioned this: A logistic curve looks
a lot like an exponential curve if you can only see the "start" of it ;-)

------
oostevo
"The current name قلب means Heart, but is actually a recursive acronym for
قلب: لغة برمجة pronounced ‘alb: lughat barmajeh meaning Heart: A Programming
Language"

My Arabic ability has degraded badly, but I'm fairly sure the name of the
language (قلب) can also mean things like 'inversion' or 'reverse.' That's
fitting, of course, given the right-to-left character set.

~~~
nayefc
Depending on the harakat (حركات).

Heart: قلّب Inversion: قَلَبَ.

Different words, same root. One is a noun, and the other a verb in its basic
conjugation will have the same set of letters.

~~~
jdeisenberg
And therein lies a possible problem with using Arabic as a programming
language: it is normally written without explicit voweling, which can lead to
ambiguity of meaning. That might not be desirable in a programming language.

~~~
CountHackulus
Which happens all the time already with english programming languages. "or"
does not mean the same thing in most programming languages that it does in
English.

------
guard-of-terra
Bash and most of shell tools are UTF-8 aware if you use right locale.
Shouldn't have problems. But I doubt those are bidi aware.

JVM is unicode-ready. So is Haskell, which benefits from having less text and
more punctuation. I've been there with some code in Clojure where every
identifier was named in cyrillic. All library and syntax are still in english
so that doesn't look right.

~~~
616c
Yes, most shells are UTF-8 aware, but terminals are largely not Bidi-encoding
aware. Bidi, short for birectional, is what allows you to use left-to-right
and right-to-left (Arabic, Farsi, Hebrew, Pashto, Urdu, etc.) and read/write
both variants in harmony.

There are very, very few terminals that do this at all. I read and write
Arabic, so I use mlterm. It is quite good, but unlike other emulators, it
requires setup and learning configuration, but is very flexible. I use Mutt to
read for emails and mailing lists in Arabic, Farsi, and Urdu, and I rarely
have problems.

In the Linux console, the situation is abysmal. There was a project that works
there, bicon from Arabeyes project, but does not understand SIGWINCH signals.
This is problematic when I share a tmux session through the Linux console and
X.org with my preferred WM, for example. But to run small, mostly console
programs with Arabic, bicon is old and can do some jobs for value of jobs.

A big problem is that Arabic input, and RTL input in general, is a problem
where most devs in this space respond "each application must address it in its
own way." This is why few console or GUI applications handle Arabic well.

FYI, Firefox was the only browser I could view Arabic language news in until
like two or three years ago, on any computer for a while. The others were
terrible. And this is coming from a linguistics guy; this was long before I
wanted to dig deeper in the machine. Linux guys in the Arab world fight an
uphill battle, since much software will not work them and is ignored.

Come join arabeyes.org and help some of them out if you interested in
translating documentation, applications, or building tools to help the
process.

~~~
unhammer
tmux (and screen) don't even let you search the history for non-ASCII
characters :-(

That said, the git and shell mentions in the article made things look worse
than they are – e.g. in Xubuntu I didn't have to do anything special to at
least display the characters, though in the wrong order:
[http://bildr.no/view/dFN0elo4](http://bildr.no/view/dFN0elo4)

Emacs has had bidi support since 24.1, works great, and most importantly,
those of us who get totally confused by it can turn it off (I still haven't
gotten the hang of movement commands suddenly going the opposite direction,
very confusing when RTL and LTR scripts are in the same file).

------
jobu
Amazing bit of work, and I really like the tile calligraphy piece he made.
I've known other programmers that put poetry or haikus in code comments, and
even some of the output can be beautiful (fractals), but I've never seen the
code itself as art. Very cool!

------
zmguy
I don't think this is a solution. We should work to defragment the technology
world. A better option is for Arabic speakers to learn English as a second
Language. And for English speakers to learn Arabic as a second language but
ultimately program in English. There is a similar problem with Chinese and the
Chinese web, they might have some great resources tutorials and libraries but
we don't know about them. I'll trade someone English and Ruby if you teach me
Arabic.

~~~
TylerE
Would not it be better to latinize Arabic, as the Taiwanese and Phillipines
have done with their languages. For computer input a LTR language built around
a relatively small alphabet is simply superior.

~~~
GFK_of_xmaspast
If you care to look, you'll notice that Arabic only has 28 letters in its
alphabet, plus a few more vowel marks.

~~~
TylerE
It's much more complex than that with all the various ligatures, combining
forms, diacriticals, etc, not to mention another 50 or so characters that are
used in other lanaguges that use the arabic script, but aren't arabic-the-
language.

~~~
GFK_of_xmaspast
Latin has 26 lowercase AND 26 uppercase letters!

------
the_af
I don't know about using it to actually write code, but as a work of art, it's
beautiful. Arabic script looks artful to me (maybe because it's unintelligible
to me, like Elvish?). So I must applaud this.

As for actually coding in this, I don't know. I'm a native Spanish speaker,
and I avoid Spanish-translated programming languages like the plague. Memories
of awful Spanish versions of Basic still give me nightmares. The lingua franca
of programming is English anyway.

------
maz-dev
Ah! In France we got windev.

They switched the philosophical approach to a more down to earth "ladies in
underwear are selling this stuff for us". See
[http://www.techartgeek.com/tech/troll-windev-
marketing/](http://www.techartgeek.com/tech/troll-windev-marketing/) .

All keywords and operators are in french, so that's something!

~~~
camus2
windev lol,still have my windev edu CDROM somewhere in my mess... well, at
least it can help learn algorithms in french,since algorithms are actually
taught in plain french,not english here ... but i dont know any concrete peace
of software build with it.

------
rdl
The programming calligraphy is amazing. I wish there were a service which
could produce beautiful Arabic calligraphy out of code, although I guess it's
not a mechanical process.

~~~
theoh
Why not? It's just Unicode. At the risk of being downvoted for negativity, the
calligraphy is nothing out of the ordinary. See
[http://www.bbc.co.uk/arabic](http://www.bbc.co.uk/arabic) for example.

~~~
rdl
I didn't mean Arabic script (which is pretty normal; there are about 4 letter
forms per character, but it's only a small factor more complex than latin). I
meant the actual practice of Arabic calligraphy, where they use it to make
pictures which are usually specific to the text. e.g.
[https://www.google.com/search?q=arabic+calligraphy&tbm=isch](https://www.google.com/search?q=arabic+calligraphy&tbm=isch)

This has about as much to do with normal Arabic script as the best illuminated
manuscripts do with latin script.

~~~
theoh
Oh, OK. The images from that search do look like they would be difficult to
automate, a lot of artistic judgement and creativity involved.

------
ahmelsayed
print in Arabic should be اطبع not إتبع

إتبع means "to follow" while اطبع means "to print"

~~~
azth
I came here to say just this :) It didn't read right as "follow".

------
sickbang
I like the idea and creativity of the project and find it ridiculous that
people debate whether it is ok or not to have programming in another language.
That is kind a arrogant...let it be guys. It will happen with or without your
consensus. It is like saying pizza is ok but not kebab..come on come on...I
like both ;)

------
Too
Reminds me of this april fools on stackoverflow
[http://stackoverflow.com/questions/22780466/why-cant-my-
prog...](http://stackoverflow.com/questions/22780466/why-cant-my-program-
compile-under-windows-7-in-french)

------
pointernil
I like this idea very much.

Every language bears an philosophy of the world in it. It is the metaphors and
relations of language constructs to each other that is defining.

Using a different font is just painting the surface in different color. This
could have some practical benefits for those willing to deep dive, though.
Imagine what pearl could look like in an iconographic system and how that
would change the perception of the code. ;)

For non coders (yes, they still exist! probably always will) looking at your
code be it C, Ruby or LaTex is already like looking at character salad
sprinkled with recognizable words and THEN they need to translate it into a
model of what the computer/system will actually do, what the result will be.
Magic.

So, why not use our own "typography"? What could be the symbols for IF and
LOOP be? MAP? REDUCE? How would a truly iconographic code representation look
like? What symbol "variants"/"adaptations" (like in Arabic or Chinese) would
make it helpful? ("IF NOT"?) How about color, which usually is not used in
human languages...

It's fascinating to see how concise a mathematical expression can be stated
yet what it usually has to be translated into when implemented (verbosity of
prog.languages is just one issue, i know). Our "syntax highlighting" is nice
and helpful but I wonder if there really is no other way to represent code
(NOOO Node-Tree-Editors are not it ;)

And then there is the conceptual influence of languages: input-processing-
output with processing essentially defined by orders, commands... that's soooo
western thinking ;)

How would programming look like, feel like if it was defined/driven by eastern
philosophy? More holistic? Less brittle? Less certain? Less precise?

Basically when thinking about programming languages in-confined by
technical/mathematical issues and theories I think exchanging some ideas with
the field of linguistic would be very fruitful...

Now back to your 9-5 C/Java/Ruby/Js coding ... with syntax highlighting ;)

~~~
alxndr
> "Every language bears an philosophy of the world in it."

If you haven't come across Lojban before, check it out:
[http://wikipedia.org/wiki/Lojban](http://wikipedia.org/wiki/Lojban)

------
thenicepostr
Does anyone know what font he uses in his terminal here:
[http://content.animalnewyork.com/wp-
content/uploads/git.png](http://content.animalnewyork.com/wp-
content/uploads/git.png)

~~~
aaronem
Pretty sure it's Apple Menlo, which IIRC from my OS X experience is the
default font for Terminal.app. (Or is it? Might have been Monaco. I'm sure
it's one of the two, and the other is the one I ended up preferring for
reasons I've since forgotten; they are very similar overall.)

~~~
duskwuff
Monaco is a vectorization of a bitmap font that dates back to the original Mac
OS (possibly even older). Menlo is an entirely separate font -- it's a version
of Lucida Sans Mono with some minor tweaks by Apple.

This one is clearly Menlo. Monaco had some peculiar letterforms, including an
odd "asymmetric" loop in lowercase letters like "b", "g", and "p". The LSM /
Monaco shapes for those letters are much rounder, and that's what I see in
that image.

Here's a sample of what I mean:
[http://i.imgur.com/I5pSZeQ.png](http://i.imgur.com/I5pSZeQ.png)

------
chakkop
A nice effort, but it is jarring to see a simple word misspelled (twice) in
the Arabic text in the headline image, a result of which is that instead of
'Print' the text says 'Follow' (specifically: instead of "Ittba'", with a hard
't' sound, which means 'Print', the text says "Itba'", with a soft 't' sound,
which means 'Follow'; these two different 't' sounds are represented by two
different letters in the Arabic language).

This type of oversight makes the work instantly less relatable (and credible)
to Arabs.

~~~
entropy_
You're right, I actually didn't notice that at first. It is weird that Ramsey
made a mistake like that, I happen to know the guy(we met when he used to live
here) and he does speak Arabic pretty well. He's not like someone with Arab
roots who just decided to do a project like that, it's actually a language he
speaks.

So yeah, weird.

------
NAFV_P
The modern language of mathematics is composed of lexicons from several
different written languages:

Greek, Roman, Arabic, Hebrew and possibly a few others.

There is one point often overlooked regarding comparisons of programming and
human languages - I think that programming languages should be much simpler
than human languages, since the target is a dumb computer as opposed to an
articulate human.

------
ragsagar
Can't access link. It is blocked in UAE :-\

------
hammadfauz
This link is blocked in UAE. I am confused.

------
peterkelly
This reminds me of the CSS localization spec (published by Adobe on April 1,
2013)

[http://blogs.adobe.com/webplatform/2013/04/01/css-
localizati...](http://blogs.adobe.com/webplatform/2013/04/01/css-
localization/)

------
Yardlink
"Naming an Arabic programming language after a non-Arab ruler was something of
a joke, my good friend and artist Haitham Ennasr let me know that it wasn’t
that funny." No suprise it didn't work if they let petty nationalism get in
the way.

------
ldite
As pointed out here;

[http://www.metafilter.com/138858/Artists-Notebook-Ramsey-
Nas...](http://www.metafilter.com/138858/Artists-Notebook-Ramsey-
Nasser#5531489)

He's probably using the wrong value for LANG in his terminal.

~~~
scott_karana
Of course, but shouldn't we have gotten to the point where _xx_.UTF8 should be
the default locale on modern operating systems?

~~~
Crito
Well, except for Windows (which insists on UTF-16/UCS2), as far as I can see
we are at that point. Modern Linux distros have come configured with
everything set up with UTF-8 for years. Fedora has been that way since Fedora
Core 1.

I don't know what OSX is doing.. I would assume that normally it is pre-
configured with UTF-8, but somehow that was lost in his setup. I don't have an
OSX machine to confirm this though.

~~~
acdha
It is, but all POSIX operating systems are brain-damaged when it comes to
things other than interactive terminal windows – they default to LANG=C so
e.g. the same script which runs interactively crashes when you run it in cron
or some other launcher.

~~~
Crito
Hmm, is OXS still actually POSIX compliant? I thought they haven't bothered
with certification for the past few versions.

Anyway, if a changed LANG breaks your script, I'd primarily place the blame on
the script. You should be able to shuffle around UTF-8 bytes non-interactively
without paying much mind to that.

~~~
acdha
The reason the Linux distributions don't set UTF-8 in the default environment
is for backwards (bugwards?) compatibility with legacy code where e.g.
something like Python/Perl/etc. might start actually throwing exceptions if it
thinks you want UTF-8 and you gave it either a different encoding or just
unvalidated garbage.

There's no solution to this which will make everyone happy. I prefer to set
UTF-8 for everything so I can find things which break and fix them but a lot
of legacy shops choose not to spend the time fixing things which are
“working”.

------
alxndr
I think the tile piece is a great idea as well as a beautiful piece of art.

Liked this quote a lot too:

> "After a point, it felt like engineering performance art"

This makes me want a Lojban programming language/OS/etc.

------
pnathan
This is really gorgeous visually.

------
comrade1
seeing "loop do" joining brings bad really bad memories of working on the NSA
metaphor project, pulling metaphors out of text. Farsi (yes, I know not the
same as arabic) was multitudes more challenging than working in russian.

