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!