InfoQ

Interview

Joe Armstrong About Erlang

Interview with Joe Armstrong by Werner Schuster on Nov 15, 2008 06:48 AM

Community
Architecture
Topics
Language Design ,
Programming ,
Language
Tags
QCon London 2008 ,
Concurrency ,
Functional Programming ,
Erlang
Summary
In this interview filmed during QCon London 2008, Joe Armstrong, designer of Erlang, speaks on various aspects of the Erlang language, presenting its roots, how it compares with other languages and why it has become popular these days due to its native ability to scale on multi core systems.

Bio
Joe Armstrong is the principle inventor of Erlang and coined the term "Concurrency Oriented Programming". At Ericsson he developed Erlang and was chief architect of the Erlang/OTP system. In 1998 he formed Bluetail, which developed all its products in Erlang. In 2003 he obtain his PhD from the Royal Institute of Technology, Stockholm. He is author of the book "Software for a concurrent world".
We are here at Qcon 2008, in London. I'm sitting here with Joe Armstrong, designer of Erlang. Let's talk a little bit about Erlang, which I think is your main topic. What's your current involvement with Erlang?
Do you actually develop the Erlang system now? Who does that now?
Erlang has seen quite a rise in popularity, a big rise. We always hear about the famous phone switches and I am not going to ask you about those. Who else is using Erlang? What do you know about people who use Erlang?
What kind of companies? Can you say?
Is that a fact?
Erlang is good at concurrency, it was designed for it. Concurrency is obviously important now with the whole hysteria about multicore and so on. Do you know why Erlang got so popular and not other languages like ADA or OCCAM or other concurrency focused languages?
Are there any theories that it's based on? Like a pi-Calculus or anything like that?
You just mentioned that Erlang grew out of Prolog, you built Erlang in Prolog, I think. What is the general development model of Erlang? How does a new feature get added to the language or the system?
What would be some features or some changes that you would like in Erlang? Some changes that you would like in Erlang? Let's forget the legacy code.
Do you mean network protocols?
What do you mean by type?
Erlang is currently a dynamic type language. Are you saying you would like some static type as optional typing or both, or would you change the nature of Erlang to static typing?
Have you heard of Gilad Bracha's optional typing? Is it something like that?
This is the same group that, when they tried to get them to swim together before or watch a movie together, they wouldn't do it?
You talked about types in Erlang, which brings me to another question. You have an Opinion on object oriented programming. That's an interesting thing to say in a conference like this.
I'd like to talk about memory management in Erlang a little bit. Every process in Erlang has its own memory. How is garbage collection? Is Erlang garbage collected or reference counted?
That's the big advantage compared to languages like Java which have big shared heaps, where garbage process will be very long, it can be very long?
Recent implementations of Erlang are now multithreaded, they can use a sort of m:n model of threading, is that right? Did you use processes where they usually use userspace threads?
You mentioned asynchronous IO. How do you do IO? Do you use non-blocking IO?
Another thing that I found interesting in Erlang is how it communicates with other languages. I think unlike languages like Java or so that can load libraries, I think Erlang doesn't do that?
Is there another way to connect to other languages, like a device driver?
I guess the name device driver is quite fitting as compared to the systems? Does you also see the danger of writing it?
Do you mean file system, access?
Erlang is built on a VM or is a VM. Is it an interpreted VM, byte code interpreted or was it used not currently?
Is this HiPE?
Is there a reason why the Erlang VM is a register machine?
Is it an infinite register machine or is there a fixed amount of registers?
I think there is a virtual machine called Parrot which I think it has infinite amount of registers.
show all  show all
Great Interview by Carlo Pires Posted Nov 18, 2008 10:22 AM
Erlang is brilliant by Hao Zhang Posted Nov 19, 2008 6:08 PM
  1. Back to top

    Great Interview

    Nov 18, 2008 10:22 AM by Carlo Pires

    I think Erlang is a natural way to programmers bored with OOP and its infinite APIs

  2. Back to top

    Erlang is brilliant

    Nov 19, 2008 6:08 PM by Hao Zhang

    Thank Joe Armstrong for bringing Erlang to us. As long as you start to use Erlang and get used to its syntax, you would absolutely love it. It is simple but powerful. I like Joe Armstrong's speech in the interview. He is very nice and funny.

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.