My biggest obstacle has so far been language itself: I think I'm too much of an Arabic snob to settle for simple, dictionary translation of some technical terms. I also hate transliterating, so I got distracted by months long process of compiling a dictionary.
To give you an example, Qlb replies with "letter is unexpected" when it really means "symbol". حرف vs رمز. A Lisp evaluator operates on expressions, of which symbols are a subset.
Even within technical English, words like letter and character do NOT mean the same thing, though they are similar.
Most of computational concepts one wants to expound either exist or have strong counterparts in the classical Arabic linguistic, rhetoric and logical traditions. Though not a strict requirement, the Arabic PL designer would benefit greatly from familiarity with the Classical, very abstract and deductive, byt often non-secular, works.
One of my favorite games is to read a passage out, say, a type-theoretic paper and try to translate it to Arabic :-)
[Edit:
It is an excellent hack this, but Arabic side of things could use more polishing. قول is not a verb, but قُل is. قول or مقولة means "utterance", not the very "say" as you might intend. لقوله، قم الليل الا قليلا
]
COBOL attempts this (the syntax is even written out in "sentences") and it suffers for it. Even if it wasn't a futile effort, is it worthwhile?
edit This post is not intended to suggest the language in the topic article in not worthwhile..
The REPL complains about 'letter unexpected' because the first thing it encounters is the ASCII 'Q', which is invalid outside of a string, and barfs.
I completely agree that Arabic linguistics aren't being utilized to their fullest. My Arabic is certainly not as strong as my English, unfortunately. This is a very preliminary release, and I'm excited to collaborate with others stronger in written Arabic for better word choice and semantics.
This probably doesn't have a bassis in any established linguistic theory, it's just my own "hunch", but I think this community specialziation (DSL-ization?) of languages is real enough (see the persistent myth that Inuits have tens of words for snow. We expect them to, because snow is their "thing".)
We don't need to "adapt" programming languages theory to Arabic, as the foundations are meta-linguistic and presentable in any human language. What we need is a native Arabic programming languages community that puts already codified technical terms into currency.
We do not programme in English either.
This looks very neat but I'm afraid I don't entirely understand it.
The writeup could be more clear about how the mosaics are made, though. I'll update it.
Since this script has existed since a long while, nearly a millennia, there should be existing algorithms in place used by artists and calligraphists.
I don't think the calligraphy is rendered automatically at the moment. Looks like the author is doing it manually. I'm guessing automatic rendering is planned, but not sure of that.
Everyone knows about algorithm, right?
From Wikipedia:
> The word "Algorithm", or "Algorism" in some other writing versions, comes from the name al-Khwārizmī, pronounced in classical Arabic as Al-Khwarithmi. Al-Khwārizmī (Persian: الخوارزمي, c. 780-850) was a Persian mathematician, astronomer, geographer and a scholar in the House of Wisdom in Baghdad, whose name means "the native of Khwarezm", a city that was part of the Greater Iran during his era and now is in modern day Uzbekistan. He wrote a treatise in the Arabic language during the 9th century, which was translated into Latin in the 12th century under the title Algoritmi de numero Indorum. This title means "Algoritmi on the numbers of the Indians", where "Algoritmi" was the translator's Latinization of Al-Khwarizmi's name.
We have a lot to thank the Arabic world for.
I think with a large and less subtle font (perhaps the sort that would be used in an Arabic child's book?) I could learn to read code written like this without necessarily having knowledge of Arabic beyond some fundamentals and the vocab needed for the few keywords. The best bet in the long run, if my career depended on it, would undoubtedly be to buckle down and learn Arabic though, and being mono-lingual that seems like an absolutely insurmountable task.
Input would be a whole other story, I wouldn't even know where to start.
(I was somewhat disgusted to see vast quantities of US military domain based visitors as the wars scaled up)
Arabic is kind of like the Roman family of scripts or the Abugidas of India/Southeast Asia in that there are actually many related scripts with mostly common symbols and a common heritage.
Case in point: (Chagatai) Uighur. http://www.omniglot.com/writing/uyghur.htm ... or Farsi ... ie. definitely worth investing some time in to this script family, or teaching children a little about, certainly if you travel, or study history or art at all.
Kalimat كلمات –meaning Words translated from Arabic– was designed and built as a programming language that teaches children programming in Arabic as a part of facilitating the process of bringing Computational Thinking to schools in Egypt and allowing children to practice what the've learnt using a powerful programming language.
With children on the mind of the language designer, he made sure that every feature to be added won't add complexity to learning the language but rather empower children to explore more about programming languages.
Kalimat is written in C++ using the QT Framework, and it runs on a virtual machine written by the author of this programming language called SmallVM (proving names can be deceiving :D). Both Kalimat and SmallVM are open source, you can checkout the code repository here: https://code.google.com/p/kalimat/source/checkout
Although Kalimat is written for children, that doesn't mean that it is weak or to be considered as a toy language, it's quite the contrary actually. Under this seemingly cuddly language, there's a small beast growing as the author packs the language with features that appear in professional languages.
I am not the author of the language, so I am not familiar with all features of this language, for more details you can:
1. Checkout the language's website http://www.kalimat-lang.com.
2. Usage guide http://www.kalimat-lang.com/wiki/%D8%AF%D9%84%D9%8A%D9%84_%D...
3. The author's blog under label Kalimat http://iamsamy.blogspot.com/search/label/kalimat
4. To begin learning the language, you can check Kalimat By Example tutorial here: http://www.kalimat-lang.com/wiki/%D9%83%D9%84%D9%85%D8%A7%D8...
Side Note: Unfortunately the language website, usage guide and the blog are written in Arabic.
However, these are some of the features I'm aware of:
- Destructuring
- Tail Call Elimination
- Lambda Expression
- Parallel Procedures
- Green Threads
- CSP Channels
- Callbacks in FFI (similar to Java's JNI, Python's ctypes and C#'s P/Invoke') which enables using external libraries and frameworks like OpenGL http://iamsamy.blogspot.com/2012/12/opengl-in-kalimat.html
Along with primitive features like
- Events
- Defining classes with fields, Signals and Slots
- Defining Modules
I myself learnt about كلمات because the guy behind it was a TA in our university. He's a real inspiration and some of his ideas are really innovational.
Judging by your name, I think you are an Arabic speaker, if so you could check his blog to see for yourself http://iamsamy.blogspot.com/.
About a year ago he started another blog titled Computational Thinking in Egypt if you're interested: http://ctegypt.blogspot.com/.
one nit in the description: "The name قلب is pronounced 'alb "
in standard arabic, it is actually "qalb", some dialects happen to drop the q sound
Just in case you want to tell your partner "my dog is bursting with love for you"!
Depends on the origin.
https://github.com/nasser/---/blob/master/public/lib/amthila...
(قول "مرحبا يا عالم!")
قول = say
مرحبا = hello/welcome
يا = oh
عالم = world(قول "مرحبا يا عالم!"))
You need to put a 0x200F (Unicode's right-to-left-mark) both before and after the text, so the neutrally-directed characters ( ) and " will inherit the directionality of the Arabic text, instead of the top-level left-to-right context.
Unfortunately, I understand that Diwali takes sufficient liberties with the forms of written Arabic that it's often very hard to comprehend even for those highly literate in Arabic.
[1] http://islamic-arts.org/2012/arabic-calligraphy-and-type-des... [2] http://www.typotheque.com/images/articles/thuraya/02.jpg
Here's Conway's Game of Life: http://twitpic.com/bv2cra
It has multiple levels of authentication - highest is:
user: elohim pass: melk
It is essentially a port of a toy lisp (soy) I wrote a while back so deseret keys map straight to their ascii equivalent (as that is what deseret itself really did).
QLB is much cooler in that it seems to be make semantic sense.