I’m trying to learn Erlang, so when I found MSDN’s interviews (part I, part II) with Joe Armstrong I could not wait to listen. Anyone interested in listening to intelligent computer scientists have a casual conversation about functional programming concepts should definitely watch them both. Listening to Mr. Armstrong talk about the concepts behind Erlang and the type of problems it addresses really helped me to understand some fundamental things about Erlang. As Erik Meijer mentioned, after initially learning imperative programming styles with assembly language and C, trying to force my mind into the functional programming mode is not easy task.
However, I was really impressed with Mr. Armstrong’s knowledge of FPGAs and reconfigurable computing. FPGAs are wonderful tools and it was nice to see a computer scientist interested in the possibilities of FPGAs. They are still really expensive devices though; in Japan, for small lots, Xilinx sells their Virtex5 FPGA for around US$4000, and Altera sells their Stratix-II FPGA for around US$6000. As such, FPGAs are usually considered in the realm of hardware design prototyping and communications systems. I mostly use them to bridging different components together such as DSPs, ADCs, DACs and the PCI bus. These days you can even program PowerPC or ARM CPU cores into an FPGA, it is really amazing. One day I hope I’ll get the chance to implement some DSP applications in an FPGA–someday I can escape from being a “bit plumber”!
So what does this have to do with Erlang? Programming FPGAs in VHDL or Verilog requires a different style of thinking compared to most modeling. In fact, hardware modeling resembles Erlang in many respects now that I think of it: processes run in parallel and send data over buses to exchange data. Check it out yourself if you don’t believe me.