Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage Interviews Mike Williams on the History of Erlang, Modeling and Large Scale Design

Mike Williams on the History of Erlang, Modeling and Large Scale Design


1. We are here at Erlang Factory 2011 in London and I am sitting here with Mike Williams. Mike, who are you?

Well, I am Mike Williams as you just said, I’ve been a manager for Ericsson for about twenty years, before that I used to work with the Computer Science Laboratory. Nowadays I actually I am not a manager anymore because I am going to retire next year and I am busy winding down and got a staff position for the moment.


2. You were somehow involved with Erlang, is that the right thing to say?

You could say that I was there when it started, we had a mission to try and improve the software productivity and I was asked how to go about it and after a large amount of experimentation we came across the idea that we need a better programming language and a better programming environment and together with Robert, Joe and and many others we succeeded in producing Erlang.


3. When you say a better programming environment what did you use before Erlang?

Before Erlang we at Ericsson programmed in a language called Plex and in fact at Ericsson we still do programing in a language called Plex which is a concurrent, low level programming language, from which a lot of our products are still made, we still make a lot of money from it. But Erlang was an effort to try and improve our productivity to make it even better.


4. What do you do with Plex? How was it used? Was it used to program …?

It was used in lots of wireline equipment, we don’t do so much wireline equipment as we do nowadays, but it’s used in mobile switching centers and base station controllers, and a lot of other equipment.


5. How big were the problems you had that you had to come up with Erlang? I mean what problems were there?

I think our problem was to do exactly the same, to exploit the same features that Plex already had but to make a more modern language, do the same thing but not really - efficient, is the wrong word, but as far as the programmer is concerned - a more efficient way to program.


6. And that couldn’t have been done with other tools, sort of off the shelf?

Oh, yes of course it can be done with other tools as well. I mean when you talk about programing everyone has their favorite programming language and their favorite way of doing things and Erlang is just one solution we use a lot of other solutions, in fact our current generation of mobile switching systems infrastructure is actually not based on Erlang it was based on other programing languages.


7. Your talk here at ErlangFactory was about selling new technologies to the manager, what’s a quick introduction to that?

Indeed yes. The quick introduction is that if you have a good new technology which works that many good managers will take it, but unfortunately many managers are also bound up by the legacy that they already have, a lot of their software. For example if you have written a system that contains six millions lines of code say in C++ or Java or something like that, adding a little bit of Erlang on top of it is not going to help very much. But if you are starting something completely new, then it is easier to sell it and it is easier to get it accepted.


8. What are your tips for companies, should a company today actually like Ericsson did, just go out and create their own languages if they want to improve their work or should they go outside and use new technologies?

To some extent I think the era of creating new languages has passed. I mean Erlang is not the only functional language of its type we have Haskell, we have OCaml and we have other functional languages, I think that at present there has to be a very pressing need to do something like that. Now for the moment a lot of companies are using old fashioned technologies and their best bet is to jump on to more modern technology that already exist rather than inventing new.


9. So old-fashioned technologies - we are talking C based languages.

A lot of C based languages but for example I am not exactly a fan of modeling myself but I know a lot of people like it, it’s a good way of improving programmer productivity and I prefer functional languages but then to a large extent that's a matter of personal choice and personal preference among programmers and companies.


10. By modeling you mean UML modeling?

UML modeling yes, definitely if you look at the way we have designed our base station equipment today we would not have been able to do that if we hadn’t used the tools for UML modeling. I am not saying that was the best way of doing it and that we couldn't have done that in Erlang as well but that is the way we chose to do it at the time.


11. Did you use UML modeling for everything, large-scale design?

For large scale design of control system software and not usually for digital signal processing but for the control system software large scale design you always have a problem when you have a team of a couple of hundreds programmers working on something you need a concerted effort to get them all pointing in the right direction, following specifications and doing everything right, and I think this is where a lot of people don’t really understand the assume that the same technology which is suitable for writing software for very small applications can also be used for very large applications, you need extra tools and extra ways of working both like modeling or alternatively just configuration handling systems have to be more sophisticated, that very large projects are significantly different than very small projects.


12. You mentioned modeling - what do you think of the recent trend using domain specific languages is in various shapes?

I think domain specific languages are very useful for certain applications, that for example we are looking heavily into domain specific languages for digital signal processing, a very tricky part of our application is analyzing the data which comes from the antenna or going to be sent to the antenna, to extract information for one user from a huge digital bit stream, and this is done by DSP programming to a large extent which is today very costly in terms of it costs a lot to produce the software. And domain specific languages can be very definitely be used in that area.


13. So DSP programming you say is a special language?

It can be today we use DSPC, but we need to make it more efficient and one way of doing that is by using domain specific languages and incidentally that is a complete area for which Erlang is not appropriate.


14. For DSP programming? Because it’s too low level?

Yes. It’s too low level and the performance requirements mean that you have to program close to the hardware to get to the efficiency you need. On the other hand if you look at the actual volume of DSP software that needs to be produced in for example a base station, it’s significantly smaller than the control system software so if we used for example Erlang or code generation from UML, that is ok for control systems but not for what we base band processing. In other words the DSP is a heavy part of the software.


15. What kind of paradigms do you use for these DSLs ? Are they functional?

For the moment we are not actually using them we are investigating we are doing research in the area. And we are using a prototype together with the University of Gothenburg, with a system based on Haskell. But it doesn’t actually run Haskell you use Haskell to generate the code so today we are actually generating code from a domain specific language implemented in Haskell which produces DSPC.


16. Is it an embedded Haskell DSL or is it written in Haskell?

No, Haskell is the compiler and a lot of the language is Haskell-like.


17. You mentioned that Erlang is appropriate for many tasks but there are others where it is not appropriate like low-level programming.

Low level programming and I think if you are writing long sequential applications then Erlang is appropriate when you have large parallel applications, multi core applications, multi process applications, network applications, things that communicate with each other, which are very communication heavy, then Erlang is an ideal solution. But you have to remember that one size does not fit all. Whereas I definitely think that Erlang has huge potential in some areas some other language and technology has better potential for other areas.


18. What would these languages be? Like Haskell?

I think Haskell is an ideal language for certain writing for example compilers and that sort of thing. But it’s very difficult to make a general statement. I think today’s modern programmer can’t rely on just being an expert in one language they used to be once upon a time, I think they have to use a battery of tools which is acceptable for the problems they have to solve.


19. Since this is an interview for InfoQ I also have to ask the question about object oriented programming. Do you like it? Don’t you like it?

Again you are talking about personal prejudices and when I say that I personally don’t like object oriented programming that is definitely a personal statement which comes from me and should be no way interpreted as a general statement coming from Ericsson or anything like that.


20. So just talking about mister Mike Williams why don’t you like it? If you would write your own program after you retire and you start an open source project and it’s not object oriented? Why? Why would that be?

Because I find that functional programming approach fits my mind much better than the object oriented approach. And again it’s what I know it’s what we invented ourselves and not invented here is actually an important aspect to it. But I think things like Erlang for the applications we have is ideal because I think large scale object orientation I can’t get my mind round it. But I am sure there are other people that can do so.


21. Going back to the beginnings of Erlang, one of the roots of Erlang is Prolog. How has that played into the language?

I think you can still see traces of Prolog in the syntax, I think the fact that Prolog was dynamically typed has actually gone into Erlang as well as Erlang is a dynamically typed language but apart from that I don’t think possibly you can think that pattern matching and instantiation of variable has a certain similarity to Prolog logical variables but I think that maybe that’s a bit far fetched to say that, but it definitely has influenced our way of thinking.


22. Where has logic programming gone, so where is Prolog? Where is that today?

I think not many people talk about Prolog today because I don’t know why which is a shame because again I think Prolog is a very good language for constraint programming and for solving logical problems, but I met the other day a couple of students from a Swedish university who were supposed to be the star students of the year and I asked them "Have you learnt what you do in logic program, did you learn any Prolog?" - "No, they said, we don’t." I think it’s a shame because I think it’s in every University education I think you should be familiar with as many paradigms as you possibly can be.


23. At Ericsson do you use any logic programming languages?

Not extensively but there are applications where logic programming is used that for example we have some applications for frequency planning for sales in mobile radio networks, and we are also looking at, we have designed a lot of our own DSPs for special purpose applications so we are also looking at using constraint logic for writing backend optimizing compilers but it’s very much a research project.


24. So that’s Prolog or other languages?

No, actually this is a constraint logic system, written by a professor from the Royal Technical Institute in Stockholm, Christian Schulte, we are looking at his stuff to see what we can do with it, that is to say what I am talking about is research not applications.


25. You mentioned Plex and Erlang both are very good at concurrency and expressing concurrency what kind of influences were there in the 80s and 70s for that? Did you look at the Transputer for instance?

Yes we did, it was one of the languages we evaluated for looking into what we did our investigation and what we can actually do was actually Occam. And actually I myself wrote a program for setting up telephone traffic in Occam. I think that must have been in about 1986, 1987 or something like that. Weird language Occam.


26. Expressive parallelism I guess sort of ADA-like.

No, I think that Occam you never really know what’s happening because you write PAR and then you write other expressions afterwards, and you don’t really know in what order they will be evaluated or how they will communicate with each other. Since a long time ago I have forgotten a lot about it but I remember thinking that the programming was getting totally out of control.


28. Synchronous channels. You mentioned that you were involved in ADA in some way?

I was involved in ADA that again was during the 1980s and at that time we were considering using ADA for programming telecommunication equipment. ADA at that time people thought that it might be the next large programming language, it didn’t turn out that way, which to some extent it’s a shame because there are a lot of very good things in ADA.


29. Well it certainly became a large language just not popular.

Yes, but it didn’t become large in the same way as C++ became a large language.


30. What was the concurrency story of ADA?

I haven't kept up with what happened to ADA today but if you go back to when we were looking at it the concurrency was implemented by synchronous rendezvous and the rendezvous turned out to be an inappropriate way to express a lot of telecommunication problems when you have two sides, for example a telephone call if we tale a very simplistic example has got two sides of two users which are doing things totally asynchronously from each other. And you need a two-way communication. We found that to do things in ADA we had to use lots of messager tasks and the whole programming model was very very messy.


31. What’s the situation with hardware today? Do you build custom hardware still or do you buy off the shelf? CPUs?

CPUs all over the system. We make our own hardware from CPUs to special radio equipment, there's very little of a base station, which can be made from standard off the shelf hardware.


32. No CPUs just for memory or something.

No, no. we have CPUs but we make our own CPUs which own ASICs we have to do that but that does not necessarily mean that our ASICs, we are making our own CPUs we're just using embedded CPUs, for example PowerPCs in a lot of our ASICs, a lot of our current generation does have actually Power QUICC computers.


33. Have you looked at the recent trend in GPU programming for highly parallel programming on GPUs. Is that something that you consider looking at?

If we go look at the base band, the DSP area that we are using Chips with 64 cores simply to be able to munge the data which comes in and do something about it. A lot of the data is heavily into use of multi core.


34. To finish up now that you are going to retire and you have some more time on your hands for a bit of programming what language would you use to write a bigger personal project? If you couldn’t use Erlang or Haskell?

My basic experience programming is that I consider that you can use Erlang or Haskell for the high level stuff or use C for the low level stuff and you really don’t require anything in between them and I think I know it would possibly sound strange but what I really enjoy doing is writing C so I would probably write a lot of pure basic C, it’s a good language for what it is good for.

Oct 03, 2011