Functional
programming is a name we can cover a very broad research area in computer
sciences. In this lecture we shall try to illustrate what are the needs,
why we should be concerned with certain issues. So the two major concerns for a programmer are the following: software is notoriously brittle and unreliable. It is brittle in the sense that it is fragile. It is not like what happens in other branches of engineering where even if you do not solve your problem in a very exact way still the solution is approximately correct. We all know that if a program is not exactly correct it will not work. And when it works does it really do what we are expecting it to do? So what happens is that programmers spend most of their time chasing really silly bugs, but with discipline and experience one can learn habits of programming that minimise the risks of such errors. But usually systems do not force these habits on the programmer. There are countless cases on the other hand where software failures have resulted in loss of life or business crisis or other digital woes as people say. The typical case cited in this context is the so-called fly-by-wire technology or when we have to produce or must produce some embedded software like it happens in a ship, we realise that naive testing is not enough, that is putting our system, or our software through a number of tests is not a reliable methodology. | ![]() |