Można inaczej Andrzej Jacek Blikle

                                                                                                                                 

 

 

 

Narodziny gwiazdy

Rozmiar tekstu

What motivated us to develop this project?

Our project, A Denotational Engineering Of Programming Languages, is being developed by four of us:

  • Andrzej Blikle,
  • Piotr Chrząstowski-Wachtel,
  • Janusz Jabłonowski,
  • Andrzej Tarlecki.

It is a well-established engineering practice that designing a new product starts from a blueprint supported by mathematical calculations. Both provide a mathematical warranty that the product's future functionality will satisfy the expectations of its designer and user.

In software engineering, the situation is different. In the place of blueprints and calculations, programmers develop their codes starting from a contract between a future user and an IT producer, usually written in a more or less technical language but without mathematical rigor. The future target code is developed from such a contract through a sequence of steps, where this contract is “translated” to increasingly more and more technical descriptions and ends up with a compilable code. Although all these descriptions have a professional character, they still do not offer a mathematical precision comparable to, e.g., differential equations of a bridge designer.

As a consequence of this situation, large parts of budgets for program developments are spent on testing, i.e., removing errors introduced at the coding stage. Since testing may only discover some faults but never guarantee their absence, the non-discovered bugs are passed on to users to be removed later under the name “maintenance”. In several cases, this situation led to spectacular catastrophes practically always — to many nuisances for users. The latter are, therefore, forced to accept a disclaimer like the following one:

There is no warranty for the program to the extent permitted by applicable law. Except when otherwise stated in writing, the copyright holders and/or other parties provide the program "as is" without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of the program is with you. Should the program prove defective, you assume the cost of all necessary servicing, repair, or correction.

Is it possible that a producer of a car, a dishwasher, or a building could request such a disclaimer from their clients? Why, then, is the software industry an exception? In our opinion, one of the causes of this situation is a lack of adequate mathematical tools for software engineers to guarantee the functional reliability of their products.

Of course, we are aware that mathematical tools will not solve all problems of software engineering, as they are not solving all problems in other industries. At the same time, however, we are convinced that there is a need for “more mathematics” in software production. In our project, we propose two sets of mathematical tools for software engineers: one addressed to language designers and the other to programmers. Both are described in our book, still in a working stage, but available on The book. We believe that taking responsibility by software engineers for their products should be possible to the same extent as in remaining industries.

There is also an experimental implementation of a language Lingua which has been described in the book. This implementation was developed by the students of a course that Andrzej Blikle gave in the Summer Semester 2019/2020 at the Department of Mathematics, Informatics, and Mechanics of Warsaw University.