Wed 15 Oct 2008
Software’s Cambrian Explosion
Posted by Scott Westfall under Programming
[2] Comments
I remember when I was first learning to program, back in the early ’80s. There were a handful of mainstream languages. The Survey of Programming class I took included FORTRAN, C, COBOL, Basic, LISP, Prologue, and Pascal. Each of these languages was distinct and served a particular purpose.
You might say that each was well adapted to a particular niche in the programming ecosphere. COBOL was a business language used on mainframes to write banking applications. FORTRAN was the language used by scientists and engineers. C was the choice for writing system code and operating systems. And so on…
Likewise, there were relatively few choices for libraries and frameworks. If you wanted a graphical front-end, you could use X Windows. There were a couple of Database Management Systems available, but usually one that was dominant on your platform.
Since then, there has been an explosion of new languages, technologies, and frameworks. In my mind, this is similar to the Cambrian explosion, a rapid proliferation of life forms that occurred around 530 million years ago. During this period, Earth went from having a relatively few and fairly similar life forms to a vast number of highly diverse life forms.
One explanation for this proliferation is the Snowball Earth hypothesis. According to this theory, there was a period where the entire Earth was covered by a sheet of ice. This created a uniform set of conditions for life. There was little need or opportunity for life forms to adapt to different conditions. So, there were relatively few life forms.
Similarly, the early years of computing saw a fairly uniform ecosystem for programs. Code was written to run on mainframes and later on mini-computers and personal computers. Still, the programs were very similar in that they were largely compiled programs and ran locally. Programs used text to interact with users.
The ice sheet was finally melted, it is believed, by the build-up of greenhouse gases over millions of years. Suddenly there are new conditions for life. New life forms come into being to exploit these conditions, producing the Cambrian explosion.
Similarly, the World Wide Web likely launched software’s version of the Cambrian explosion. The web has added many new challenges and radically altered the way programs are conceived and delivered. There was a great proliferation of languages and technologies to exploit these new conditions.
Though earlier developments like the personal computer and Graphical User Interfaces spawned a degree of new technologies, they cannot compare to the web for sheer number of new mechanisms. Within the Java ecosphere, alone, you can choose from Swing, Spring, JSP, Struts, JFaces, and more to build your interface, most of which were created to help deliver web content.
The Open Source movement is another evolutionary accelerator. There was a time when languages and frameworks were produced by a few individuals working at places like Bell Labs. With open source, communities are collaborating together to produce new technologies. This has greatly increased the rate of change.
I wonder what a Survey of Programming class is like now. It’s hard to imagine how you could cover the major technologies in a semester. Heck, by the end of the semester whole new technologies will likely have come into being. It’s exciting!
October 15th, 2008 at 7:15 pm
For reference, when I took Programming Languages about 5 years ago, we focused on four types of programming language: object oriented, imperative, logical, and functional. The languages we used as examples were Java/SmallTalk, C/Pascal, Prolog, and ML, respectively. The professor wanted to focus on the core differences between the different types of programming languages rather than getting caught up in all of the new frameworks and scripting languages. The course also covered the lexical structure of the different types of languages. I’m not sure whether those types of classes will ever use new languages as examples. Most of the Computer Science professors I know feel many of the new languages don’t teach good programming practices because many (especially the scripting languages) tolerate errors.
October 16th, 2008 at 8:54 am
That sounds like a good approach. There are way too many languages to cover them all, so cover the kinds of languages.
Though my survey class didn’t cover all languages, you still had a sense that you covered all the major ones you are likely see out there. Sometimes, it’s nice to live in a small world.
I have a similar feeling about music. I remember, in high school, going to the record store and looking through the bins of LPs. I new all of the groups and could readily tell when there was a new album or new group. Now, there are so many more artists that it seems nearly impossible to keep up.
Don’t get me wrong; I’m not wishing for a smaller world. I just wish it were possible to have the same kind of comprehensive knowledge I felt I had back then.