Rus Articles Journal

Whether there are faultless programs?

From a series paradoxes of programming

- Of course! - Someone will solve. - To hand over the program, it is necessary to catch all mistakes at first! And only then to start it in production.

I in the same way thought earlier. Also it was sure that it is right.

Huge machine hall. The EU of 1020 works. I am a young specialist.

I approach the leading programmer and I report: - Volodya! I corrected the last error and I want to hand over the program.

Volodya corrects points and indulgently takes of me a view.

- Never so speak! Nobody ever finds the last mistake!

It is more correct to tell - you found penultimate!

I did not like such treatment. I continued to consider that I have no mistakes any more. But for half a year it was necessary to me in my, apparently, unpretentious program to correct three more unexpectedly come to light errors.

My first chief claimed: - Faultless programs do not exist. If mistakes are not, so the program did not visit those conditions which would reveal them.

Not especially I then trusted it to words. But in practice it was necessary to be convinced of their correctness more and more.

The faultless program is the same concept as a rigid body. Systems become more difficult. In them as needles in a haystack, got lost mistakes. It is very difficult to reveal them, and it is even more difficult to correct. Happens that once the made mistake, belongs to the beginning of work on a program complex, to its kernel. To move away her, without having hooked on the main directions, it is just impossible. To improve something one, and many other things will cease to work.

It is not favorable, and the firm goes on leaving a mistake. Microsoft Word is an example. There is certain rather complex combination of words which forces to come to the end abnormally the editor.

Once when from the West computers and the software did not rush, we developed the systems and databases. The next version of the difficult settlement program was complete, and I gave her to the customer.

There were many new carefully debugged modes of works.

One gray cloudy morning phone call is distributed. Explain to me that at certain actions the program simply takes off without having counted anything. I in perplexity also begin to check. All modes work and it is rather good. I call and explain. Say to me that the program not

in settlement part and when just you press the " key is removed; input on the empty screen.

I to check it simply would not guess. It appears, in one of fields I had casual information. And the field was used then. In the previous version it was nullified.

I at that time sincerely considered that only we are capable of such lapses. If I, for example, would treat testing more seriously, then so silly would not be mistaken. As I was not right! It is impossible to trace any test everything. Especially well gross blunders and in places, on a foreground survive.

Just the simplest is not always checked. It has to work by default!

Programmers of large systems with a world name make such mistakes also.

When releasing the new version what worked without any problems often ceases to work. Official users I begin to send enthusiastic responses to authors. Through some time there is the first updating in which the set of the revealed defects is corrected and it is made a little bit new.

Then there is the second updating, the third. The version finds stability.

Fairly it is considered that it is necessary to buy not absolutely new version, and that to which there were already updates.

So, mistakes - it is natural to the working program. Also it is not necessary to be afraid of them. Thinking at all people a miscellaneous, and authors are not able to consider all variety of dexterity of our hands. At detection of a mistake in the bought program it is necessary first of all to try to bypass it, to work in other mode. And, maybe, it is not a mistake at all, and just our incorrect approach to use of the program! If the lapse obvious - makes sense to write to authors. And if there is no wish, do not write! About an obvious defect will surely write also others, or authors will bethink.

Sometimes happens very difficult to untwist them on updates. They persistently prove that it is necessary to use other method.

Eventually, wins against the most persistent and persistent.

So we will lift our mice for success in programming!

And the faultless module - it is too romantic