Translated by
2010/05/22 23:32:21

Evidential programming

Evidential programming  is a technology of development of the computer programs with correctness proofs  — proofs of lack of errors in programs.


The idea of evidential programming was for the first time stated   by the academician A.P. Yershov, and the first textbook on evidential programming was written by  V.A.  Kaymin. In  1987 it is approved within a rate algorithmization and programming in 1980 — 1988.

Educational statement of bases of evidential programming with examples of algorithm elaboration and programs in the BASIC and Pascal languages with correctness proofs are stated in textbooks by information science of Kaiming both for schools, and for universities.

Mathematical programming essentials

Mathematical bases of evidential programming  are the mathematical semantics of the structured algorithms put in Floyd, Dijkstra, Yershov and Kaiming's works and also basic textbooks by information science of Kaiming for universities and schools with descriptions of methods of the analysis of correctness of the structured algorithms and programs in the BASIC languages, Pascale, Si, JavaScript  , etc.

In Floyd's axiomatics semantics of the structured algorithms is described with the help before - and post-conditions in language of a formal logic theory with invariants of a cycle, badly clear both to mathematicians, and programmers.

In basic textbooks by information science for universities and schools semantics of the structured algorithms is defined and speaks language of elementary mathematics and language of the mathematical analysis studied in technical, mathematical and economic colleges and faculties.

Invariants of cycles in procedures of the analysis of the structured algorithms are replaced with inductive statements which are proved and proved using mathematical induction according to the inductive scheme from private examples to the general cases and statements.

The analysis of correctness of difficult algorithms and programs is carried out in parts  — to blocks and auxiliary algorithms using auxiliary before - and post-statements and auxiliary lemmas as it becomes in standard rates and textbooks of the mathematical analysis.

The applicability of the technology of the mathematical analysis was postponed by Kaiming for the analysis of the structured programs in the BASIC, Си languages and other modern languages of structured programming using cycles and the expanded axiomatics of Floyd — Kaymina in which for the analysis of cycles with several exits semi-invariants on exit points from cycles are used is described.

Programming methodology

The programming methodology  is the set of the ideas, concepts, the principles, methods and means defining style of writing, debugging and support of programs.

Methodology  — the system of the principles, methods, methods and means of theoretical, practical and productive activity of people, research and work collectives; at the same time the methodology is the doctrine about such systems of concepts and activity of people.

Programming  — process of creation of computer programs and the software for computers and computer networks using systems and programming languages. Programming combines elements of art of science, engineering and craft.

The technology of programming  is a technology of development of programs and the software of the computer meeting the requirements of high reliability and the quality meeting requirements of customers and to needs of users of program products.

Technology of programming

Technologies of programming  are technologies of development of the computer programs which will be used by people for the solution of different tasks on a computer.

Software development  is a kind of activity (profession) and the process directed to creation and maintenance of working capacity, quality and reliability of the software, using technologies, methodology and practicians from information science, project managements, mathematics, engineering and other areas of knowledge.

Technologies of evidential programming

The technology of evidential programming consists in obligatory structured design of programs using a Russian-speaking pseudo-code and careful testing of the developed programs for a computer with the subsequent analysis and the correctness proof of algorithms on a pseudo-code.

For the correctness proof of algorithms and programs the mathematical semantics of the structured algorithms and programs developed and described by V.A. Kaymin in books "Bases of Evidential Programming" (1987) and "Methods of development of programs in languages of the high level" is used.

Training methods to programming

The main issue consists in when students should study professional technology of developments of programs  — on the first rates or upon termination of training in universities? And whether students need it and universities?

The first attempts to apply approach of IBM to training of mathematicians-programmers from the first rate were made in MIEM at faculty of Applied mathematics in 1980.

The technique of training was based on use of Russian for the description of algorithms and coding of appropriate programs in the Fortran, BASIC languages, Pascale, Si, PL/1  , etc.

In a year the best students began to complete debugging of programs of 500 in size — 600 operators from the first or second start-up to the EU of a computer, and in two years all students of FPM began to write programs with correctness proofs.

The technique of training in programming elements on the basis of a pseudo-code was put in the textbook on information science of students of MIEM in 1985, and then for high schools, been sold out in million circulation [3].

Algorithmization bases in all Russian textbooks by information science still use lexicon of native Russian for the description of semantics of the main algorithmic constructions.

See Also


  1. Naur Nauka of programming. M, MIR, 1080.
  2. Tours M. Programming methodology. M, World. 1981.
  3.   Yershov A. P.  Theoretical programming. M, Science, 1980.
  4. Dijkstra of E. Distsiplin of programming.  — M.: World, 1978.
  5.   Krinitsky N.A.  Equivalent conversions of programs. M. Radio and Communication. 1976 century.
  6. Andersen D. Pravilnost of the software. M, World, 1984.
  7. Kaiming V. A. of a basis of evidential programming. M, MIEM, 1987.
  8. Kaiming V.  A.  Methods of development of programs in languages of the high level. M, MIEM, 1985.
  9. Babayev I. O., Gerasimov M.A., Kosowski N.K.,  Solovyov I. P.  Intellectual programming. Turbo-Prolog and Refal-5 on personal computers. SPb, SPBSU publishing house, 1992.
  10. Sinitsyn S. V., Nalyutin N.  Yu.  Verification of the software. M.:BINOM, 2008.
  11. Kaiming V. A., Piterkin V. M. "Fundamentals of information science and VT". A benefit for students. M.,MIEM, 1985.
  12. Kaiming V. A, etc. "Fundamentals of information science and VT". The textbook for high schools. M, Education. 1989.
  13.    Kaiming V.A. Informatika. The manual for going to the universities. M, Bridge. 1984.
  14.    Kaiming V.A. Informatika. The textbook for students of universities. M. INFRA-M, 1998 — 2010.
  15.    Kaiming V.A. Informatika. Manual for preparation for examinations. M, RIOR, 2004 — 2008.
  16.    Kaiming V.A. Informatika. Manual for school students. M, Avenue, 207 — 2010.


  1. Technologies of evidential programming
  2. Programming methodology in St. Petersburg
  3. Concept of evidential programming
  4. Scientific bases of evidential programming
  5. Information science for Schools and Universities
  6. Information science: Examinations on a computer
  7. the Olympic Games on information science and programming
  8. Training methods to programming
  9. Experience of training in programming
  10. Logic Theory
  11. Logic in Information science
  12. Programming paradigms