• Concurrency more appropriate to synchronized parallel execution
• Floating-point-intensive code
• Code requiring nonportable instructions
• Code requiring an aggressive compiler (Erlang entries in language benchmark shoot-outs are unimpressive— except for process spawning and message passing)
• Projects to implement libraries that must run under other execution environments, such as JVM (Java Virtual Machine) or CLR (Common Language Runtime)
• Projects that require the use of extensive libraries written in other languages
Erlang can still form part of a larger solution in combination with other languages, however. At a minimum, Erlang programs can speak text or binary protocols over standard interprocess communication mechanisms. In addition, Erlang provides a C library that other applications can link with that will allow them to send and receive Erlang messages and be monitored by an Erlang controlling program, appearing to it as just another (Erlang) process.
With the increasing importance of concurrent programming, Erlang is seeing growing interest and adoption. Indeed, Erlang is branded as a “concurrency-oriented” language. The standard Erlang distribution is under active development. Many high-quality libraries and applications are freely available for:
• Network services
• GUIs for 3D modeling
• Batch typesetting
• Telecom protocol stacks
• Electronic payment systems
• HTML and XML generation and parsing
• Database implementations and ODBC (Open Database Connectivity) bindings
Several companies offer commercial products and services implemented in Erlang for telecom, electronic payment systems, and social networking chat. Erlang-based Web servers are notable for their high performance and scalability. 8
Concurrent programming will never be easy, but with Erlang, developers have a chance to use a language built from the ground up for the task and with incredible resilience engineered in language, runtime system, and standard libraries.
The standard Erlang implementation and its documentation, ported to Unix and Microsoft Windows platforms, is open source and available for free download from http://erlang.org. You can find a community forum at http://trapexit.org, which also mirrors several mailing lists. Q
REFERENCES
1. Erlang Web site; http://erlang.org.
2. Armstrong, J. 2003. Making reliable distributed systems in the presence of software errors. Ph.D. thesis, Swedish Institute of Computer Science; http://www.erlang. org/download/armstrong_thesis_2003.pdf.
3. Erlang course; http://www.erlang.org/course/course. html.
4. See reference 2.
5. Steele, G. L., Raymond, E. S. 1996. The New Hacker’s Dictionary, 3rd edition, Cambridge, MA: MIT Press.
6. Armstrong, J. 2007. Programming Erlang: Software for a Concurrent World. Raleigh, NC: The Pragmatic Bookshelf.
7. Lystig Fritchie, S., Larson, J., Christenson, N., Jones, D., Ohman, L. 2000. Sendmail meets Erlang: Experiences using Erlang for email applications. Erlang User’s Conference; http://www.erlang.se/euc/00/euc00-sendmail. ps.
8. Brown, B. 2008. Application server performance testing, includes Django, Erly Web, Rails, and others; http://berlinbrowndev.blogspot.com/2008/08/applica- tion-server-benchmarks-including.html.
LOVE IT, HATE IT? LET US KNOW feedback@acmqueue.com or www.acmqueue.com/forums
JIM LARSON is a software engineer at Google. He has worked with Erlang for commercial products off and on since 1999. He was the architect of the replication engine of the Amazon SimpleDB Web service at Amazon.com. He previously worked at Sendmail Inc. and the Jet Propulsion Laboratory. He has a B.A. in mathematics from Saint Olaf College, M.S. in mathematics from Claremont Graduate University, and M.S. in computer science from the University of Oregon. © 2008 ACM 1542-7730 /08/0900 $5.00
References:
http://www.acmqueue.com/forums
http://www.erlang.org/download/armstrong_thesis_2003.pdf
http://www.erlang.org/download/armstrong_thesis_2003.pdf
http://www.erlang.org/course/course.html
http://www.erlang.org/course/course.html
http://www.erlang.se/euc/00/euc00-sendmail.ps
http://www.erlang.se/euc/00/euc00-sendmail.ps
http://berlinbrowndev.blogspot.com/2008/08/application-server-benchmarks-including.html
http://berlinbrowndev.blogspot.com/2008/08/application-server-benchmarks-including.html
Archives