Software Programming Languages

Summary: Software Programming Languages

This is a summary with links to all my posts on software programming languages.

Computers need to be “told” what to do. Each computer has a native language it understands, a “machine language.” Each machine language has a human-readable version called “assembler language.” Starting in the 1950’s “high level” languages for telling the computer what to do (programming it) have been developed.


Here are the basics of that amazing progression.

Software programming language core concepts

One of the core features of all programming languages is the subroutine. Everyone who programs uses subroutines, but their power can be underappreciated.

Among the earliest features added to languages were structures, blocks and macros. Each of these contributed to more concise and understandable programs.

Once you get past the basics of language, you find that widely used languages have rich collections of subroutine libraries and sometimes what are called frameworks, which contribute a large fraction of any program’s solution.

The way programs flow is a key aspect.

Programs consist of a combination of instructions and definitions of the data on which the instructions operate.  Exactly how those relate to each other has been the subject of major disputes – which continue to this day.

Some programming "advances" basically try to restrict the possible relationships betwen code and data. Bad idea.

Software programming language evolution

When talking about software languages, the term high level language was introduced early. Here’s what it means.

Decades ago a couple of languages were invented and enjoyed an explosion of use that were major steps ahead of the standard languages of the time in terms of productivity.

Not long after these amazing, productivity-enhancing languages had their rapid growth, the modern DBMS came onto the scene, with its own language for data definition, query and update. The impact of the DBMS revolution was huge.

One of the major reactions to the DBMS revolution was the introduction and rise to prominence of what were called 4-GL’s, all which of incorporated the DBMS as an integral part.

There has been an explosion of programming language invention.

It just goes on and on and on and on, with no end in sight.

Software programming language innovations

Experts tout the major advances in programming languages made since the early days, but they don’t amount to much.

A comparison to the virtues of various human languages makes this clear.

Attempts have been made by experts to fix problems that have been widely noted for many decades.

One of the serious detours into unproductive swamps taken by programming languages has been what’s called object-orientation. It had a promising start and would have been fine had it stopped there.

Lots of people have things to say about O-O languages. There are the academics and other authorities and then there are the people with real experience who aren’t groupies.

Here are some facts and logic to explain why O-O should be referred to exclusively in the past tense.

Another category of hyped but harmful programming languages have been “functional” ones. These arose early in programming evolution and keep popping up.

The attraction of functional language has a strong basis. It’s true that increasing the declarative aspect of a total solution brings strong benefits. But embedding it in the language neuters it.

Here are some detailed examples of how supposed advances in programming languages have worked out in practice, including failures of Java and 4-GL’s and a huge success with a brand-new system written in that ancient bit of history called COBOL.

After all those failed advances, there's the amazing case of HTML, a wildly successful language without all the bells and whistles that takes the winning principle of "just get the job done."

Software programming language evaluation

Promoters of new languages tout how they prevent programmers from making errors (ha!) and result in cleaner programs that somehow promote productivity – which is never measured or tested.

The fact is, there is a standard by which programming languages should be judged – along with the support systems and metadata that are an integral part of the solution. It’s simple: how many places do you have to go to make a change? The right answer is one. Here’s the idea.