Brief history of programming languages
In the early days of computers, there were only a very few software programming languages in widespread use, represented by:
- COBOL – typically used extensively for early business applications
- FORTRAN – more of a “scientific” language; FORTRAN is easy to learn, taught at most schools, and used for general purpose apps
- ASSEMBLY – very low level language, typically mimicking the actual processor’s instruction set
- BASIC – very simple to understand, BASIC was a great way to learn how to program; perhaps the first interpretive language
As smaller, more affordable computers became popular, and even in the early days of computer networking, it required some more feature-rich languages to develop sophisticated applications more quickly. To name a few languages in this group are:
- C & C++– highly extensible and sophisticated, these languages compile into native machine code. They produced apps that run fast. As high level languages, C and C++ actually made it possible to create code that closely followed the basics of machine language, providing a greater deal of control over the operating environment than other languages.
- JAVA– a very popular high level language, originally created at Sun Microsystems, Java was similar in capabilities to C++. However, it was one of the early languages that I call “pseudo-compiled” as their compilers create an intermediate format, often called “bytecode”. Java bytecode must be executed by the Java Virtual Machine interpreter, necessarily making execution time be a bit longer. Java introduced “Object Oriented Programming”, where classes could be created. Each class encapsulated both data and methods, making them somewhat more portable from program to program.
- PL/1 and PASCAL – while not used in many business applications, these languages were very popular in college level courses as a way to learn high level language programming.
Today there are literally hundreds of programming languages, each with its own specific niche that they attempt to address. In this author’s opinion, there are way, way, way too many programming languages. As an engineer who’s programmed in at least 50 different languages, I feel very strongly about the unnecessary proliferation of languages. Here are a bunch of reasons that support my opinion:
- The more “obscure” a language might be, the more difficult it will be to find other engineers to modify and/or support code written in that language
- Many newer languages may be riddled with bugs and idiosyncrasies making the programming experience frustrating at best
- Each new language typically forces you to learn significantly different syntax, for no particular good reason
- Often an engineer must use third party code snippets, many of which will be written in a different language. This concept will easily result in having to deal with major interoperability issues trying to get outside code to work with your choice of language.
- Once a business chooses a particular language for their key projects, they may be beholden to their current employees as it may be difficult to hire and/or replace engineers familiar with the language used.
While my viewpoint may be considered limiting by some, I prefer to look at this opinion as just plain pragmatic. In the “real world” of software engineering, I have found it truly rare when even the most complex coding tasks could not be done in any significantly robust programming language. For example, I have personally written multitasking, multi-threaded, high performance communication applications in C#, a language many might consider too bulky or slow for that purpose. Those naysayers are just off-base! In later articles I will describe more about the concepts of multitasking and multi-threading.