A history of Erlang

  title={A history of Erlang},
  author={Joe L. Armstrong},
  journal={Proceedings of the third ACM SIGPLAN conference on History of programming languages},
  • J. Armstrong
  • Published 9 June 2007
  • Computer Science
  • Proceedings of the third ACM SIGPLAN conference on History of programming languages
Erlang was designed for writing concurrent programs that "run forever." Erlang uses concurrent processes to structure the program. These processes have no shared memory and communicate by asynchronous message passing. Erlang processes are lightweight and belong to the language, not the operating system. Erlang has mechanisms to allow programs to change code "on the fly" so that programs can evolve and change as they run. These mechanisms simplify the construction of software for implementing… 

Figures and Tables from this paper

contributed articles Erlang

The key design criteria behind the Erlang language are outlined, showing how they are reflected in the language itself, as well as in programming language technology used since 1985.

Computational REST Meets Erlang

A very promising architectural style - Computational REST - with a language (and run-time environment) designed with dynamic, distributed applications in mind - Erlang are put together by developing a new framework, which eases development of highly distributed Web applications capable of operating in dynamic environments.

A Concurrency System for Idris & Erlang

This paper proposes a system combining dependent types, in the form of the Idris programming language and the Actor model, and the Erlang runtime system, to create a system which allows me to produce statically verified concurrent programs.

JErlang: Erlang with Joins

JErlang, a Join-Calculus inspired extension to Erlang, is designed and implemented and provides a rich set of language features with the authors' joins, and optimisations provide JErlang with good performance.

Correctness of a Concurrent Object Collector for Actor Languages

This work presents a model of ORCA which is parametric to the host language and its type system, and gives invariants preserved by ORCA, and proves its soundness and completeness.

Design and Implementation of a Distributed Software Platform Based on Asynchronous Messages

This thesis presents a programming model that follows the paradigm ”everything is an object” to the utmost in order to build a software platform upon it that provides this possibility.

A Concurrency Oriented Real-Time Language

An implementation that enables real-time application to utilize the power of multiprocessor systems and how scheduling based on dependency analysis is able to reach deadlines, which the pure EDF scheduler does not reach is presented.

Back to the futures: incremental parallelization of existing sequential runtime systems

It is found that incremental parallelization can provide useful, scalable parallelism on commodity multicore processors at a fraction of the effort required to implement conventional parallel threads.

Soundness of a Concurrent Collector for Actors (Extended Version)

This work presents a model of ORCA which is parametric to the host language and its type system, and gives invariants preserved by ORCA, and proves its soundness and completeness.

Automatic refactoring of Erlang programs

Tidier is a software tool that tidies Erlang source code, making it cleaner, simpler, and often also more efficient, and a set of refactorings which are general enough to be applied to the source code of programs written in Haskell or Clean and possibly even in non-functional languages.



Turbo Erlang: Approaching the Speed of C

  • B. Hausman
  • Computer Science
    ICLP-Workshops on Implementation of Logic Programming Systems
  • 1993
A very efficient and portable sequential implementation of Erlang where Erlang programs are compiled into the C language and the preliminary evaluation results show that the performance is not far from the performance of highly optimized C code.

Implementing a functional language for highly parallel real time applications

Projects in which Erlang has been used have demonstrated an order of magnitude reduction in the work load of the specification programming testing compared to projects using conventional programming testing methods.

Distributed programming in Erlang

This paper addresses the question of how to simplify the construction of large concurrent distributed systems by augmented the functional concurrent programming language Erlang with constructs for distributed programming.

Use of Prolog for developing a new programming language

This paper describes how Prolog was used for the development of a new concurrent real-time symbolic programming language called Erlang, and some of the key events which l a y b e t ween the simple prototype and the currentersion of the language.

Making reliable distributed systems in the presence of software errors

It is argued how certain of the requirements necessary to build a fault-tolerant system are solved in the language, and others are solve in the standard libraries, which form a basis for building fault-Tolerant software systems.

A Portable Prolog Compiler

This paper describes the basis of the design of a Prolog implementation which is currently being built, intended to conbine a high degree of portability with speed and efficient utilisation of memory.

Proceedings of the 2002 ACM SIGPLAN Workshop on Erlang, Pittsburgh, Pennsylvania, USA, October 7, 2002

These talks show how a functional language with a strong focus on multitasking can serve a variety of applications, and how tools, methodologies, and language features can improve the effectiveness of Erlang software developers.

A practical subtyping system for Erlang

The techniques for type inference, type simplification, and checking when an inferred type conforms to a user-supplied type signature are covered, and early experience with the prototype of the type system is reported.

Concurrent Functional Programming for Telecommunications : A Case Study of Technology Introduction

This thesis deals with two important topics: The use of the best possible technology in the development of telecommunications systems in a world of rapid change and increasing competition and the introduction and exploitation of functional programming in industry.

BrouHaHa- A portable Smalltalk interpreter

This paper presents the major design changes and optimization techniques used in the BrouHaHa interpreter, a portable implementation of the Smalltalk-80 virtual machine interpreter.