6.3 Distributed Resource Controller
The DRC is written in distributed Erlang and runs on a network of Windows-NT machines. The DRC has a robust scalable architecture and runs on low cost hardware. The resource which are controlled are a collection of various audio devices, human operators together with various database systems.
The allocation of resources is achieved using a dedicated scripting language - the meta-interpreter for the scripting language is written in Erlang.
Erlang systems is a company owned by Ericsson which was set up to and to market Erlang and to provide consulting and training in Erlang.
The fist functioning system is currently in use on two sites in Denmark where it is used by 638 operators and controls 400 audio ports.
This project was delivered to the end-user and had completed its acceptance tests in less than a year after the requirements had been agreed upon.
Programming took 9,000 man hours and testing 2,000 man hours with seven programmers and two testers. The resulting program has 40 Erlang modules, two external C programs and 12,800 lines of Erlang code.
7. Comments
7.1 Time to market
Although the actual programming phase of the software development process is only a very small part of the total design work the choice of programming language and tools has a profound effect on the total life cycle costs. Use of Erlang in a number of different projects has dramatically shortened time to market and greatly improved the quality of delivered software.
7.2 Performance
Erlang is sufficiently fast for delivering real telecommunication products.
Interestingly Erlang rarely does well in small benchmark comparisons with C. C programs are usually faster than the equivalent Erlang programs.
However, when talking about large systems the opposite seems to be true - usually the Erlang programs are faster than the C. The reasons for this are not well understood.
7.3 Real-Time garbage collection
It seems to be a widely accepted myth that garbage collected languages are unsuitable for programming real-time control systems.
In our experience the opposite appears to be true. In implementing large control systems in conventional languages problems of memory leakage and fragmentation are extremely difficult to eliminate. The cost of ad hoc solutions seems to outweigh that of using a purpose-built garbage collector.
One thing that is clear is that the run-time dynamic memory requirements of a really-time system programmed in Erlang are surprisingly small.