Deprecated Languages Earlier Used For Writing Ethereum Smart Contracts
In the previous articles, we have examined Bitcoin smart contracts and discussed the Ethereum Virtual Machine (EVM). Now it’s time to talk about programming languages used for creating smart contracts on the Ethereum blockchain.
The majority of Ethereum-based smart contracts were written with the help of the Solidity language, which is the most popular one among smart contracts developers. It constantly evolves and grows under the supervision of the Ethereum team. However, there are several languages suitable for writing Ethereum blockchain smart contracts. Some of them are hardly supported or even deprecated, while others still work. But compared to Solidity, they are not so widespread. Let’s talk about them in detail (all data presented in the article is checked as of October 18, 2018).
Mutan is a programming language created by the Ethereum co-founder Jeffrey Wilcke who stopped supporting the development in 2015. Mutan was supposed to unite high readability and compiling efficiency. Today, it is replaced by Solidity.
In terms of architecture, Mutan was a C-like programing language. It was a high-level language compiled to the native Ethereum Assembly language while processing. It was updated up to the version 0.6, and after that the developers stopped supporting it. Ethereum’s GitHub website still stores some data on the project.
As a means of programing, Mutan possessed a developed command-line interface and command system. From its C-parent, Mutan has inherited several features, such as:
- Libraries support
- Standard arithmetic, logic and bitwise operators
- Arrays and functions
- Conditional and cyclic statements
- The Assembly code insert option.
Nowadays, Mutan is not supported by any of developers, and is not considered effective for writing Ethereum blockchain smart contracts. However, it is an interesting part of blockchain history in general and Ethereum history in particular.
LLL is a language based on Lisp implementation. Its name stands for “Low-level Lisp-like Language”. Sources concerning information on its development were actively updated in 2014-2017, and the latest data was published in March 2018.
Despite its name, the LLL language seems to inherit Lisp’s syntax rather than its logic. It was designed to write programs in the EVM code, and they were automatically compiled into Ethereum PoC up to the version 3.
Each contract in LLL may be presented as a single expression of different types. These types include:
- Strings without spaces and symbols (or in quotation marks)
- Integers (whole numbers);
- Executed expressions.
Moreover, LLL supports different control statements (if, when, unless, for, seq, raw), memory and storage access tools, arithmetic and logical operations, literals, macroses, inline assembler. The language seems to be partially active and can probably be used for creating workable smart contracts, taking into account a series of articles dedicated to its implementation that was published in 2017.
Another interesting feature is that it is used in the Serpent language.
Serpent is a high-level language weakly supported at the time of writing. It was based on Python features and intended to be clear and simple. The authors wanted to combine low-level preferrable solutions with a simple programming style. Its compiler written in C++ possessed special domain-specific features for creating smart contracts.
As one of high-level languages, Serpent had many of their beneficial features, namely: arrays of several kinds, hexadecimal numeric support, data storage treatment, inline calls, etc. It could also call other contracts, include files, define functions, macroses and own data structure.
Some information about Serpent can be found on GitHub but it is outdated.
Before Solidity was developed enough to head all Ethereum languages, there were several attempts to create a simple yet efficient instrument for developing smart contracts. We have viewed three of them, but there is one more that deserves special attention. In our next article, we will discuss the Vyper language based on the Python concept. It is under active development at the moment and can also be used to write Ethereum blockchain smart contracts.