Germanys Long Lost Programming Language

Averest

Website Developer
6 min readAug 22, 2021

Introduction

Assuming you do not know much about programming, I will tell you some interesting facts about computer programming that may keep you interested. Did you know that the first programming language to be developed was made in 1954? Something that might blow your mind even more, is that in a span of fewer than a hundred years, people from all over the globe have created over seven hundred different programming languages. That includes the language I will be informing you about in this paper, Averest.

http://www.averest.org/

Historical Background

To start, we will be discussing the historical background and purpose of the programming language of Averest. According to CodeLani, a comprehensive database of computer programming languages, they state, “Averest is a programming language created in 2005,” It is an asynchronous programming language with a “set of tools to specify, verify, and implement reactive systems.” In other words, this language has been around for over fifteen years and has many practical applications. Moreover, Averest’s official website says that the Embedded System Group developed the language at a Technical University in Kaiserslautern, Germany. On the topic of embedded systems, they say, “Their use in safety-critical applications and the use of non-standard hardware and software makes the development of embedded systems much more difficult than desktop computer software.”

Since there are many challenges to developing embedded systems, the Embedded System Group started developing a programming language “for the model-based design of software and hardware, based on the synchronous programming language Quartz at its center.” As mentioned, Quartz was used as a foundation for their new programming language. Its purpose is to compile its own byte code that a Quartz VM can only execute. Quartz was originally developed in C#, a prominent programming language a lot of people use today. Averest’s website also states that the language “can be used to build various tools targeting software in embedded systems, concurrent programs in general, and hardware design.” This is highly notable because it means electronic systems and devices inside our phones and desktop computers can potentially use this programming language for the functionality of their system.

However, you might wonder what it means for a programming language to be synchronous or to implement reactive systems. Synchronous programming language means that the program performs tasks one at a time. As each task fulfills its purpose, the next task will be activated only if the previous task has completed its purpose. Long story short, the program waits for one function to complete before moving on to the next. The opposite of synchronous programming language is an asynchronous programming language oppositely defined as a program moving on to different tasks before the current one even completes, which helps tasks be completed more efficiently.

Moving on to what a reactive system is, according to a software engineer, Monssef El Faghloumi, he states, “Reactive systems are an architectural style that allows multiple individual applications to blend into one unit, reacting to their environment, while staying aware of each other.” In simplest terms, reactive systems come together with other programs where they work as a team and help each other solve a problem. Furthermore, it means that reactive systems are capable of flexibility when it is under immense stress such as when met with failure, it is quick to respond to solve the problem.

Averest was created as a project, and it aims to “providing a complete set of tools for the development of reactive systems.” In terms of what components the programming language possesses, it has “a compiler for translating synchronous programs to [its] intermediate format, a set of transformations, a symbolic model checker, and a tool for hardware/software synthesis.” This might be hard to comprehend if you are new to programming, but the main idea is that these components cover a “design flow of reactive systems,” which is the main purpose of this language.

This concludes the historical background of the programming language Averest. One problem to note as a disclaimer while researching Averest’s history is that it is a fairly old language, and it is a language that was not very popular at all since the year it was released. Thus, finding solid information on this language was a challenge.

Benefits

Next, we will now talk about the benefits and downsides of using Averest as a programming language. In general, programming languages all have a purpose for existing and being created, but their purposes make up for their advantages and disadvantages. Averest was developed, as we mentioned earlier, for the sole purpose of surpassing some of the software challenges when it comes to the development of embedded systems, concurrent programs, and hardware design. In other words, a benefit to using this language is that it can help programmers efficiently develop software programs targeting embedded systems and hardware systems. Additionally, the goal of this language is to also help in the development of reactive systems, which is also a beneficial reason for using this language.

Some of the advantages of Averest being a synchronous programming language are that it does not require that much knowledge to use the language besides the fundamentals of coding. Furthermore, it is better for efficient searching through a search engine, and it is effortless to make a straightforward request.

Downsides

On the contrary, the downsides to using this language are unknown because it was created years ago, and there is not enough information about it on the internet. However, we can make some inferences based on its age and programming type.

Averest is undoubtedly a young programming language created fifteen years ago, but it never came close to the big languages out there like JavaScript and Python. Averest never became a prominent programming language a normal programmer would use daily. It never became popular because it was inconspicuous and developed from a foreign country outside the United States. Thus, an obscure language like Averest will have the disadvantage of not being up to date with some of the current technologies, which can cause incompatibility issues. The last official update developed for Averest was back in 2018, which means it has been about four years since anything new about it came out.

The disadvantages of being synchronous programming language are that the load time of the program can be slow, threads can be locked, preventing other threads from getting blocked, if the program fails to operate, the program may be unresponsive. Programs can become easily overwhelmed in which there are also no callback methods.

Benefits & Downsides

The upshot of all this is that Averest is beneficial when operating for its exact goal and purpose. A programming language that has many advantages. However, Averest is not currently up to date and has not been consistently releasing newer versions like other programming languages; thus, it could be possible for more bugs and errors when using Averest.

Who Used To Use It? And Who Uses It Today?

We now know the historical background and advantages/disadvantages of the programming language, Averest, but the big question is: Who used it and who still uses it today? Unfortunately, there is not enough information regarding this. However, we can make some inferences and assumptions to answer this question.

We know that this language was developed by the Embedded Systems Group formed by the Technical University of Kaiserslautern in Germany; Thus, we can safely assume that the group used this language and possibly is still using this language for developing software for embedded and reactive systems till this day. We can also assume that programmers who need a programming language that helps develop software for embedded systems will be using this and whether this language is still being used. Conversely, it would not be wise to say that this language is widely used today by programmers since it is an obscure programming language not many people know about. It is a language that could be considered out of date.

Examples of Code

You would be surprised to see how similar the code is to a typical code from JavaScript or Python.

The code above is an example of an embedded system like a vending machine with loops and if statements.

The code above shows an example of code for program synthesis with some loops and if-else statements.

Trends

Averest might have code that other programming languages do not have. Still, prominent programming languages like C, C++, or Java can do the same thing, but differently. Since there are programming languages that have a similar execution as Averest, it goes without saying that Averest has declined and may also be a long-lost language.

--

--

Website Developer
Website Developer

Responses (3)