Sorry for the erratic posting. I’m attempting to come up to speed on Erlang, and there is really nothing to blog about it, other than for anyone learning a new programming language, keep reading the material, typing in the examples, and executing the code. There’s nothing like immersion and training your muscle memory to get familiar with a new syntax and programming paradigm.
The purpose of this post is to correct a misconception that I have been carrying around with me for quite some time now.
Let me start at the beginning. Back in the middle 80’s, the company I worked for, manufactured HVAC controls and building Energy Management Systems. When it came time to design and build the next generation EMS, one of the design questions was: How will the installers and maintainers of the system, configure or program it? The default solution was to develop a Custom Programming Language or a Domain Specific Language to program the system. In other words, just another sequential programming language, optimized for the HVAC/EMS domain.
Fortunately, some person or persons (not me) on the team came up with a better solution. Why not define blocks of HVAC/EMS related functionality and allow users to create these blocks and then string them together, the output value of one block to the input of another block or or multiple blocks. To make a long story short, it was a very, very successful product. Our field service group loved it. You did not have to become a programmer to configure the system. You just create blocks and hook them together. You already had a very good idea of what a particular block would do, just by looking at the block name. And we did call them “Blocks”.
After that, I was always on the lookout for similar solutions in other domains. That is, blocks or units of functionality with data being passed from one block to the next. You can easily visualize the solution and therein lay my misconception. I always referred to it as Visual Based Programming (Just to be clear, I was not confused by Visual Basic, Visual Studio, or MS Visual Whatever. I know what those are). So I would search for VBP, and sometimes I would find information related to my interest, but a lot of times I would find things like this:
and I would think, “No, no, no! That’s not what I want. This is just a visual representation of a sequential programming language!”
Finally for some reason, I don’t know why or how, a few days ago I stumbled upon the term: Flow Based Programming. Suddenly, internet searches returned sites that actually matched what I was thinking, and there are plenty of references to Erlang and FBP, which dovetails nicely with my ongoing attempts at learning Erlang. I found this little nugget where J Paul Morrison, the founder of FBP discusses its relationship to Erlang, including comments from Joe Armstrong, inventor of Erlang himself. I found this blog, whose author is doing exactly what I imagined, except using Elixer instead of Erlang. Anyway, lots and lots of new material to explore.
The moral of the story? Discovering the right search term, can change your life. Back to learning me some Erlang.