days
-4
0
hours
-1
-8
minutes
-1
-6
seconds
-4
-7
search
JAX Developers Puzzle deadline approaching: Play for a chance to win a complimentary JAX London 2018 ticket!
New programming language

Citrine: A new all-purpose programming language for UNIXoid systems

Michael Thomas

Citrine, a new all-purpose programming language for UNIX-like operating systems has seen the light of day. The special feature of the language consists in the combination of messages similar to Smalltalk and Prototypes.

Citrine was designed by application developer and software architect Gabor de Mooij, who had already made an appearance in the past with the MechaniQue esoteric programming language, as well as RedBeanPHP, an open source ORM library for PHP.

Citrine is an all-purpose programming language for UNIX-like operating systems which above all aims for readability and maintainability. Readability would be achieved here through syntactic and conceptual minimalism. Citrine is heavily inspired by object-oriented programming languages Smalltalk and Self, but according to de Mooij, it offers a few special features which make it visibly stand apart from both.

Citrine Basics

Therefore Citrine, as well as Smalltalk treats everything as objects to which messages are sent. The language offers five literals: null, the Boolean variables true and false, numbers, strings (e. g. ‘Hello’) and code blocks (according to the format { …parameters… | …code… }). Unlike Smalltalk, Citrine does not use a semicolon to link several messages together; a comma is used here instead. Developers can therefore write UNIX-like pipelines. In contrast to Smalltalk, Citrine does not have the concept of class, but rather resembles Self and JavaScript in this regard through the use of prototypes (inheritance).

Further features of the language include UTF-8 conformity (meaning that objects as well as messages can be made up of Unicode symbols) and automatic garbage collection, among others. Moreover, Citrine’s core can be expanded with plug-ins. Instead of lexical scoping, Citrine falls back on dynamic scoping – readable according to de Mooij – global variables and dependency injection are therefore unnecessary.

Citrine is completely open source and is under the BSD license. You can find additional information (including small code examples) on the official website. A lively discussion about the language had already taken place on Reddit.

Author
Michael Thomas
Michael Thomas studied Educational Science at the Johannes Gutenberg University in Mainz and has been working as a freelance author at JAXenter.de since 2013.

Leave a Reply

Be the First to Comment!

avatar
400
  Subscribe  
Notify of