Prolog Interpreter Based on Concurrent Programming

This paper describes how Prolog was used for the development of a new concurrent realtime symbolic programming language called Erlang. Erlang was developed by rst building a prototype in Prolog the prototype was used by a user group to test their reactions to the language. As time passed many features were added (and removed) from the interpreter and eventually the language reached a level of maturity where it was decided to try it out on a signi cant problem. About 3 years and some 20,000 lines of Erlang later, performance became an issue we wrote Prolog cross compilers from Erlang to various concurrent logic programing languages followed by a direct implementation of Erlang itself. The direct implementation of Erlang was loosely based on the WAM and made by writing a Prolog compiler from Erlang to a new abstract machine and an emulator for the abstract machine in 'C'. The instruction set for the abstract machine was rst prototyped in Prolog nally the compiler was re-written in Erlang, thus totally removing any dependency on Prolog. This paper describes some of the key events which lay between the simple prototype and the current version of the language.