Friday 28 August 2020

Abu Ja`far Mohammed bin Mûsâ al-Khowârizmi

A 9th century (or 2nd century according to the Islamic calendar) Persian writer from what is now Khiva in Uzbekistan is responsible for two words which may cause the uninitiated to shudder but whose concepts have driven scientific advance. "Algebra" comes from the title of his noted text book, Kitab al jabr w'al-muqabala ("Rules of restoration and reduction"). Algebra is a great and beautiful thing, but I am afraid that, like many a secondary school student before me, I struggled with anything more complex than quadratic equations. (I am a living example that you do not need a degree in mathematics to be a competent computer programmer. Indeed, two of the best I worked with at DVL - both women incidentally - graduated in classical languages. Admittedly, computer science is another matter.)

The other word, based on the name of Moses' son Mohammed's natal city, is "algorithm", This is a more recent coining, for which the Oxford Dictionary does not have a date for a first appearance in print. Fortunately, Donald V Knuth, from whose magnum opus I have extracted most of this information, comes to the rescue. It appears that the great Russian mathematician (and son of a great mathematician*) A.A.Markov jr. first gave the term currency in the early 1950s, probably in translation. Before then, it had clearly been in use orally among mathematicians, along with the term "computational method". Knuth makes the distinction between the two terms that the latter does not necessarily terminate**. He explains:

The modern meaning for algorithm is quite similar to that of recipe, process, method, technique, procedure, routine, except that the word "algorithm" connotes something just a little different. Besides merely being a finite set of rules which gives a sequence of operations for solving a specific type of problem, and algorithm has five important features:

1) Finiteness. An algorithm must always terminate after a finite number of steps. 

2) Definiteness. Each step of an algorithm must be precisely defined; the actions to be carried out must be rigorously and unambiguously specified for each case.

3) Input. An algortihm has zero or more inputs, i.e., quantities which are given to it before the algorithm begins.

4) Output. An algorithm has one or more outputs, i.e., quantities which have a specified relation to the inputs.

5) Effectiveness. An algorithm is also generally expected to be effective. This means that all of the operations to be performed in the algorithm must be sufficiently basic that they can in principle be done exactly and in a finite length of time. {Although, of course, that length may be immense]

So, an algorithm is like a recipe, only more rigorous, and likely to contain a number of repeated steps. It is devised by a human to solve a particular problem. If an algorithm is faulty, the fault lies in the logic of the programmer or systems designer. 

An algorithm may be computationally correct, yet produce results which are not acceptable to the object of the system as a whole. e.g. a Universal Credit client. In that case, the person who defined the system, or its parameters, should shoulder the blame. In the case of UC, that blame goes right to the top.

*A.A.Markov sr. among other things gave his name to Markov chains, significant in queuing theory. I know this only from a short series of lectures on applied mathematics given by the Civil Service College, created by Harold Wilson, continued by Edward Heath but killed off in its original form by Thatcher and Heseltine.

** Many a careless programmer has written no more than a computational method through creating a loop of instructions whose terminating condition may not be met..


No comments: