Problems of algorithms

Theory of algorithms was created by Alan Turing as a part of effort of Allies during WWII to crack Nazi’s Enigma code using so called computers. Computers can understand only exact sets of infrustrions explaining how to solve the problem. Such sets of instructions are called algorithms of computer programs.

But we humans in our every day life use logic in our language. Regular person could hardly remember all the instructions even for the washing machine. So we have special people who can do a translation between us humans and computers, which are called software developers or programmers. But the problem is that even after more than 70 year history of computers we still have less than 1% of population who can do such job.

Algorithms give computers an exact set of instructions on how to solve the problem. In order to create such algorithm you need to perform certain steps:

  1. Specify the problem in a manner, which excludes uncertainties. Such specifications should have rigid and logical form.
  2. Give it to programmers
  3. Eventually after several technological steps (such as architecture, OO design, etc) programmers convert the specification into a program written in some of programming languages
  4. Such program can now be translated into a machine code and executed on a computer.

What->Developer->How

This means that everytime we need to make computers to do something we have to have a computer program, which can be created only by software developers manually. Manual work as everybody knows involves human errors. So #1 problem is the Quality of software programs written by humans. Software bugs can kill any good intention.

The more programs we need, the more software developers will be involved. The more computers are used by humanity, the more programs we need, and even more developers will be required. Introduction of mobile phones, IoT and Edge Computing into everyday life creates more and more demand for programmers. Don’t forget that every mobile phone is a computer. And we want to put computer chips into things like tea pots and fridges.

Today we have more computers on the planet than humans. Think about this. Where are we going to get enough software developers in the situation when number of computerized equipment grows much faster than numebr of developers. This problem #2 – we have not enough programmers.

And problem #3 – is that mobile communications, robots, edge computing and Iot reiterates the problem of the quality: our civilization becomes more and more dependent on the quality of computer programs.