Localized Programming Language
Citrine is one of the first* embeddable**, general purpose, localized programming language, designed to allow every man to write code in his mother tongue. Hopefully, by doing so, Citrine will make coding accessible to a wider audience. * Development started in 2009 ** Citrine can be used as serverless/FAAS language
0.9.1 Van Leydenhof
Changelog & Roadmap
☞ greeting := ' Hello country! '. greeting country: 'England'. ✎ write: greeting.
☞ groet := 'Hallo land!'. groet land: 'Nederland'. ✎ schrijf: groet.
☞ salut := 'Bună țară!'. salut țară: 'România'. ✎ scrie: salut.
☞ sveikinimas: = 'Sveika šalis!'. sveikinimo šalis: 'Lietuva'. ✎ atspausdinti: sveikinimas.
Allows everyone to code in their native language. Making code more accessible and expressive.
True, Smalltalkish, Object Oriented Programming: the way it was meant to be.
Very simple, minimalistic grammar. Easy to learn and remember.
Extremely powerful dynamic scoping, just like good old BASIC and some LISPs.
International teams? Automatically Translate code from one language into another.
Languages & Manuals
Learn more about the Citrine Programming Language. Read the general introduction (English only) or open the new learn-by-example manual (available in all languages).INTRODUCTION (ENG.) MANUAL (ALL LANGUAGES)
The Citrine community is working hard to provide better
translations for the language itself as well as for the
manual - but this takes a lot of time and effort.
We appreciate any help to improve language support!
Are all languages welcome? - All natural languages* are welcome and will be included immediately. Human languages with EGIDS-status 6 or higher are appreciated and very welcome. * Artificial languages, fantasy languages, private languages and other non-natural languages will not be included but you are free to fork the project of course.
Citrine is being tested continously using Travis/CI, read the latest test reports.
If you don't like to compile the source yourself, I can
create a binary for your platform and language of choice for
a small fee (Citrine translators get it for free, of course).
ORDER CUSTOM BUILD
Do you want development support for Citrine? Do you want to
integrate the Citrine Programming Language into your cloud service,
online platform or business application?
Why localized programming?
Citrine allows you to write code in your native language. Thus leaving more brain capacity to deal with your actual work. Coding in a localized language has been proved to have a positive impact on learning outcomes1 and quality2. 1. Learning to Code in Localized Programming Languages (MIT) 2. Effects of localization on Exceptions in Java
Because of its simple yet flexible grammar, Citrine plays well with any human language. Citrine can also translate code from one human language into another, similar to approaches conducted by Stanford University3. 3. Human Languages in Source Code: Auto-Translation for Localized Instruction (Stanford University)
What are the other features?
Citrine is a pure object oriented programming language, attempting to follow the Kayan philosophy4. It uses Smalltalkish object messaging. Other features include: classless, prototypal inheritance, dynamic scoping, extremely late binding, fully malleable objects and mark and sweep garbage collection. Citrine does not support comments, forcing authors to write self-documenting code. 4. After the Philosophy of American Computer Scientist Dr. Alan Kay (regarded as inventor of Object Oriented Programming)
Can I contribute?
Sure, Citrine is open source and we can share code using e-mail or Github. See the plug-in wishlist for a start! Citrine is written in C.
Why is this page in English?
As a developer, you have to know some English. Nobody is going to change that anytime soon. Writing complex logic in a foreign language is something different though. Citrine allows you to put your thoughts into the words of the language you know best: your mother tongue. That being said, if you want to translate a manual page, feel free to help!
Why icons in the language?
Abstract, yet frequently used concepts are represented as icons in Citrine. For example, to declare a new variable in a Citrine program you use a pointing finger (☞). The inspiration for this approach comes from Smalltalk-705. Apart from pictograms, Citrine also allows the use of thin space to separate words in object names and message parts to avoid CaMelCase and snake_case. 5. Smalltalk-72 Manual
What are the use cases?
Citrine can be embedded into serverless cloud or FAAS* platforms as a localized scripting language or localized DSL for end users, to lower adoption barriers and reach new audiences. Citrine can also be used to teach programming in a language agnostic way. * Function as a service
Who are the customers?
Aside from researchers and hobbyists, potential customers include providers of FAAS-services, cloud computing services and serverless infrastructure. For education purposes, potential Citrine customers include governments, schools and possibly universities.
Consult the Full FAQ >.
About the authors
Gabor de Mooĳ
Core language design & Linux/BSD implementations.
Software developer from the Netherlands.
Windows, Android/ARM platform support.
Software developer from India. The creator of Dragon (programming language) and Suasive (search engine).
Special thanks to:
Tirifto, Twiggler, MadcapJake, DennisCGc, Takano32, LeoTindall, Janus, Shinriyo, Sean Eshbaugh, Georgel Preput, Lina Dapkute & Marianne.
contact: gabordemooij at gaborsoftware dot nl