ABSTRACT
In this paper, we discuss some experiences from a large, industrial software project using a functional programming language. In particular, we will focus on programming errors.The software studied is the AXD 301 (a multi-service switch from Ericsson AB [1]) control system. It is implemented in a functional language Erlang [2 ]. We will discuss ho this affects programmer productivity.There are now well over 1,000 AXD 301's deployed. Even though a properly handled AXD 301 is quite reliable, there exists a great deal of knowledge about problems that do occur in production code. We will analyze what kinds of programming errors cause these problems, and suggest some methods for preventing and, when that fails, finding the errors. We will also describe some tools that has been specifically developed to aid in debugging.One (perceived) problem with using a interpreted, functional language is execution speed. In practice, we have found that the overhead of running in an emulator is not dramatic, and that it is often more than compensated for by the advantages. The expressiveness of the language and the absence of low-level bugs means that programmers have more time to spend on tuning the code. And since the emulator has good support for tracing, one can perform very advanced profiling, thus making the code intrinsically more effective. We will discuss a profiling tool developed for that purpose.
- Ericsson. www.ericsson.comGoogle Scholar
- Armstrong, J., Virding, R., Wikstrom, C., and Williams, M. Concurrent Programming in ERLANG. Prentice-Hall Europe, Hemel Hempstead, U.K., 1996. Google Scholar
Digital Library
- Open Source Erlang. www.erlang.orgGoogle Scholar
- OTP Test Server. www.erlang.org/project/test_serverGoogle Scholar
- jungerl. jungerl.sourceforge.netGoogle Scholar
- Tony Rogvall et al. Erlang + GTK. erlgtk.sourceforge.netGoogle Scholar
- The GIMP Toolkit. www.gtk.orgGoogle Scholar
- Eric S. Raymond, Why Python? www.linuxjournal.com/article.php?sid=3882Google Scholar
Index Terms
- Troubleshooting a large erlang system
Recommendations
Erlang's exception handling revisited
ERLANG '04: Proceedings of the 2004 ACM SIGPLAN workshop on ErlangThis paper describes the new exception handling in the ERLANG programming language, to be introduced in the forthcoming Release 10 of the Erlang/OTP system. We give a comprehensive description of the behaviour of exceptions in modern-day ERLANG, present ...
The evolution of Erlang drivers and the Erlang driver toolkit
ERLANG '02: Proceedings of the 2002 ACM SIGPLAN workshop on ErlangErlang is gaining a reputation as a good language for rapid prototyping, but one area where its reputation is weaker than those of traditional scripting languages is extensibility. Erlang is actually fairly easy to extend, but the learning curve is ...
Pyrlang: a high performance Erlang virtual machine based on RPython
SPLASH Companion 2015: Companion Proceedings of the 2015 ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for HumanityIn widely-used actor-based programming languages, such as Erlang, sequential execution performance is as important as scalability of concurrency. We are developing a virtual machine called Pyrlang for the Erlang BEAM bytecode with a just-in-time (JIT) ...





Comments