“AI”: what’s in a name?

October 20, 2019

In spite of my near-total isolation from news media, I have noticed that references to “AI” are ubiquitous. A perusal of such material suggests that “AI” means Machine Learning, which apparently means the newly discovered technique of multilevel neural networks. While this technique is spectacularly effective, it should be realized that it still is still basically a curve-fitting exercise (albeit with a novel family of curves). The result is a tool that lacks in the transparency that is taken for granted in older methods. In this essay I explore the question whether there is any connection between “AI”, as recently featured in the non-technical media, and the Artificial Intelligence envisaged by John McCarthy, who invented the term in 1955.

Read the rest of this entry »

History of “Structured Programming”

October 29, 2018

At its introduction around 1970, structured programming was controversial. It was soon universally accepted. In this essay I trace the history of structured programming and argue that it is worthwhile to re-open the controversy.

Read the rest of this entry »

A Bridge too Far: E.W. Dijkstra and Logic

July 21, 2018

1. Introduction

Shortly after the death of E.W. Dijkstra (1930-2002), K.R. Apt wrote an obituary under the title Portrait of a Genius [1]. At the time it seemed to me a bit over the top. Now, with the added wisdom of the intervening years, I consider the title accurate. The most striking feature of EWD’s career was that his remarkable string of successes was followed by a debacle: the book on logic that he co-authored. In this article I list EWD’s achievements, sketch their significance, and try to penetrate into the reasons why he attached such value to logic.

Read the rest of this entry »

Conceptual Integrity: why it matters and how to get it

September 8, 2017

In “No Silver Bullet” [1] Frederick Brooks addresses the intriguing question of why some programming languages garner fanatical adherents while others are merely tolerated by their users. Brooks’s answer is that the critical criterion is whether a language has in his words “conceptual integrity”. In this article I try to nail down this nebulous concept and see how it can be used as a guide in language design.

Read the rest of this entry »

“The unreasonable effectiveness of mathematics in the design and implementation of software systems”

July 22, 2017

Alas! If only the current state of affairs were such that a future scholar would feel impelled to write a paper with this title, just like in 1960, when Eugene Wigner wrote his widely quoted “The unreasonable effectiveness of mathematics in the natural sciences”. In the hope that at some future time it will improve the sorry state of software, let us consider how mathematics came to be “unreasonably” (i.e. surprisingly, mysteriously) effective in the natural sciences.

Read the rest of this entry »

Is Software Engineering Possible?

June 7, 2017

When the textile industry arose in the 18th century, craft was the norm in manufacturing. As the industrial revolution progressed, one after another sector of the economy made the transition from craft to industry. In 1968 it was noticed that the creation of software was a craft in a world where industry was the norm. In that year a conference was convened to address that anomaly. Those present saw themselves as participants in a momentous occasion: after this conference, Software Engineering existed, which was not the case before.

In the final paragraph of my 2009 article “Software Engineering: From Craft to Industry?” [8], I ventured to disagree. From the final paragraph:

While the processing of material leaves an irreducible residue of work for humans, in the processing of information any work that is routine instantly vanishes. Extracting the routine part from an information processing task is a creative endeavour. It is called programming. In the building of a software system any time you think you have something routine to be handed over to managed cubicle-dwelling drones, [9], you are missing an opportunity for automation. In the building of a software system there is only room for creative work. It is Craft, irreducibly so.

At the time I had read John Allen’s “Whither Software Engineering?”. I found it fascinating, but dismissed it as unrealistic and I was not convinced of its urgency. This article explains why I changed my mind.

Read the rest of this entry »

Programming by Gathering Snippets of Truth

May 13, 2017

Thank you for your interest. Recent scrutiny has shown that this essay is below the standard I aim at and needs to be repaired.

Explosive Knowledge: Cryptology in the 20th Century

March 28, 2017

In August 1960 the Pentagon announced that William Martin and Bernon Mitchell had not returned from vacation and said “there is a likelihood that they have gone behind the Iron Curtain”. On September 6 they appeared at a joint news conference at the House of Journalists in Moscow and announced they had requested asylum and Soviet citizenship. They revealed that they had worked for the National Security Agency (NSA). In this way the mission and activities of the NSA were made public for the first time [1]. Although these activities are much more wide-ranging than cryptology, this post will only be concerned with that small part.

All branches of knowledge had vigorously developed in the first half of the 20th century. All of it had been sustained by what I like to call a conversation: an open exchange of knowledge in books and journals. Before World War I this was also true for cryptology; afterwards, traffic on that channel fell silent. By the end of the 20th century the cryptology conversation was intense, wide-ranging, and immensely productive of innovations, of which bitcoin technology is but one example. In this post I trace the chain of events that led cryptology from its dark age, which lasted from 1918 to 1967, to its renaissance. My material is obtained, unless otherwise noted, from Crypto, a book by Steven Levy, published in 2001 [2].

Read the rest of this entry »

Children of the Miracle: from Algol to Prolog

March 18, 2017

The appearance of Fortran inaugurated a fruitful period in programming languages that was to last until the early 1970s. When, in 1999, E.W. Dijkstra gave the keynote address at the ACM Symposium on Applied Computing in San Antonio, Texas, he gave an overview of what he saw as the large-scale trends in the preceding half century. I quote:

And then the 60s started with an absolute miracle, viz. ALGOL 60. This was a miracle because on the one hand this programming language had been designed by a committee, while on the other hand its qualities were so outstanding that in retrospect it has been characterized as “a major improvement on most of its successors” (C.A.R. Hoare).

Several friends of mine, when asked to suggest a date of birth for Computing Science, came up with January 1960, precisely because it was ALGOL 60 that showed the first ways in which automatic computing could and should and did become a topic of academic concern. [1]).

Algol was a miracle as a language. It was short-lived, but it left a momentous legacy that acted in two ways: in the way the Revised Report on Algol 60 describes the language and in the way subsequent language designers were influenced by being shown what a programming language could be. In celebration of Algol 60 I refer to these designers as “Children of the Miracle”.

Read the rest of this entry »

The Essence of Algol

November 12, 2016

Thank you for your interest. Recent scrutiny has shown that this essay is not up to the standard I aim at and needs to be repaired.

Maarten van Emden, February 2020.