Why Citrine?

Whenever I write code in a high level language, something feels wrong. First of all, English is not my native language, yet all keywords of most well known programming languages are in English. So I have a choice, either write everything in suboptimal English or write in Dutch but have my code littered with English keywords.

Secondly, most programming languages force me to use a lot of weird character combinations instead of the proper symbols, like it's still 1970! For instance, I have to use '>=' instead of '≥' to compare numbers. There are also a lot of words and symbols that do not make any sense at all, like the word 'var' or the symbol '++'. Even words that could be considered 'normal', are written in a weird way, like: 'camelCase' or 'snake_case'.

Thirdly, most programming languages have a lot of grammar rules and the differences across the languages are subtle. There are rules for writing conditions, loops and so on. In some languages the grammar allows you to write quite 'elegant' code, however, chances are, nobody but you is able to read it.

The fourth problem is structure. Imperative code works fine for small scripts but tends to become chaotic as your code grows. Object oriented programming fits our mental model of how the world works better (our world is full of objects). Unfortunately, most OO code is rife with unnecessary concepts like: 'classes', 'interfaces' and 'factories', adding to the cognitive load. Functional programming, having its roots in calculus, can be even more daunting.

The fifth problem is that most languages are not really designed to be a good language anyway. Most of them have been created in quite a hurry to solve a particular problem. That's fine, but it would be a relief to write something in a language that tries to be a little more human-friendly.

The Citrine Project aims to create such a language. Citrine allows you to write code in your native language. Most people can express themselves best in their native language, resulting in more readable code. All keywords in Citrine have symbolic counterparts, so your code will not be littered with English keywords. Writing in your native language also widens the audience: it becomes possible to teach coding at primary schools or discuss code snippets with non-technical people that were previously scared away by all those strange looking walls of text.

Citrine leverages the power of UTF-8. This means you can use proper symbols like '≥', use your native characters (Chinese, Russian and so on) or even pictograms if you like. You can also use thin spaces to separate words instead of having to use camelCase. This allows for much more natural-looking text. Furthermore, Citrine uses '=' for comparison and ':=' for assignment: finally back to sanity! You can use 'Citrine Translate' to translate programs from one language to another.

Another advantage of Citrine is its simple, minimalistic grammar. Depending on how you count, there are about 6-8 basic 'rules' you need to remember to get started. This means you can learn to write Citrine code in just a couple of minutes.

One reason why Citrine can have such a simple grammar is because of its pure and simple object model: a Citrine program is nothing more than a conversation among objects. You create programs by making objects talk to each other. This way, every program reads like a little story. You only need to learn how objects 'talk', there is no separate grammar for loops or if-else conditions. Everything you need is just a 'message away'. Citrine objects are also quite flexible: You can reuse previously created ones as blueprints for your new ones and you can adapt all of them on-the-fly.

So, to summarize, Citrine allows you to use your own symbols, your own words, your own sentences. Citrine uses a very minimalistic grammar that even fits in short term memory! Citrine uses a very pure and simple form of object oriented programming without all the cumbersome abstractions (not even classes). This makes programming accessible to a wider audience and improves readability and maintainability, thereby hopefully reducing the number of bugs and vulnerability issues.

Unlike other programming languages, Citrine is not tied to a specific platform or technology. Citrine is a language for the sake of the language itself. You may call it a 'next generation' language. Its primary focus is to offer a better coding experience.

Back to homepage

back to top.