Można inaczej Andrzej Jacek Blikle

                                                                                                                                 

 

 

 

Narodziny gwiazdy

Rozmiar tekstu

Presentations to the course at Warsaw University in the spring semester 2020/21

This section provides access to the presentations for the course “Denotational Engineering of Programming Languages” conducted during the spring semester of the academic year 2020/2021 at the Department of Mathematics, Informatics, and Mechanics of Warsaw University.

Presentations will be updated as comments are received from listeners. The names of updated files will not change, but the date of the last modification will be shown on this site. To download a file, click on its name. Section numbers seen in front pages of presentations refer to the book “A Denotational Engineering of Programming Languages,” which can also be downloaded from this page.

0 A.Blikle - An invitation to a project.pdf by March 1st, 2021
The description of what the project is about.

0 A.Blikle - Jak to zrobimy.pdf (How we shall we do it) by March 1st, 2021
This presentation is exceptionally in Polish. It explains the idea of how our project will be realized by the group of listeners of the course organized as an innovative startup, which should be a self-organizing team (a teal teem). More on teal organizations in the book of Andrzej Blikle "A Teal Doctrine of Quality" (or in Polish “Turkusowa doktryna Jakości”), both to be downloaded from this site.

1 A.Blikle - DEPL Preliminaries.pdf by March 8th, 2021
Preliminary concepts and notations: Chain-complete partially ordered sets (CPOs), CPO of formal languages and equational grammars, many-sorted algebras, CPO od binary relations, and of domains, abstract errors, a three-valued propositional calculus. Sections 2.1 - 2.9

2 A.Blikle - DEPL Many-sorted algebras.pdf by March 8th, 2021
Many-sorted algebras in general. Algebras of syntax. Abstract, concrete and colloquial syntax. Ambiguous and unambiguous algebras. Algebras of syntax versus equational grammars. Sections 2.20 - 2.14

3 A.Blikle - DEPL Lingua-A From data to values.pdf by March 15th, 2021
Data, bodies, composites, yokes, and values. The fundament for Lingua-A that constitutes an applicative layer of Lingua. Sections 4.1 - 4.3.

4 A.Blikle - DEPL Lingua-A Expressions.pdf by March 18th, 2021
Data expressions, and type-expressions. Sections 4.4. - 4.8

5 A.Blikle - DEPL Lingua-1 Instructions and declarations.pdf by March 23rd, 2021
Declarations, instructions (without procedures), and programs. Section 5.

6 A.Blikle - DEPL Lingua-2 Procedures.pdf by March 25th, 2021
Imperative procedures with recursion and multirecursion, and functional procedures. Section 6.

7 A.Blikle - DEPL Semantic correctness of programs.pdf by May 21st, 2021
An introduction to program correctness + partial correctness. Sections 7.1 - 7.6

8 A.Blikle - DEPL Total correctness of programs.pdf by May 21st, 2021
Weak total correctness in the relational framework. Section 7.7

9 A.Blikle - DEPL Lingua-2V Syntax and semantics.pdf by May 27th, 2021
Weak total correctness in the relational framework. Sections 8.1 - 8.4

10 A.Blikle - DEPL Lingua-2V Program-construction rules.pdf by May 31st, 2021
Rules for the development of correct programs in Lingua-2V. Section 8.5

11 A.Blikle - DEPL Lingua-2V Transformational programming.pdf by June 7th, 2021
Rules for the transformation of correct programs in Lingua-2V. Section 8.6

12 A.Blikle - DEPL Lingua-OO Object-oriented programming.pdf by April 27th, 2020
The expansion of the Lingua model to OO-programming. Section 8.6

Co już zrobiono

Ta sekcja obejmuje preprinty opublikowane w sieci na niniejszej witrynie a także na portalu ResearchGate. Główny materiał w projekcie, który stanowi książka, jest dostępny zarówno w wersji polskiej, jak i angielskiej. Pozostałe prace jedynie w języku angielskim. Wszelkie uwagi, rady i komentarze będą bardzo mile widziane. Proszę je kierować na adres Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.

Propozycja wykładu seminaryjnego

Eksperyment z semantyką denotacyjną (odwracając tradycyjną kolej rzeczy)  Pobierz prezentację

Wykład w wymiarze minimalnym (60 min) obejmuje strony od 1 do 15 prezentacji. Na pełen wykład trzeba przeznaczyć co najmniej 120 min plus odpowiednią ilość czasu na dyskusję.

Zapowiedź:

Czy można sobie wyobrazić, by klient kupujący samochód podpisywał zrzeczenie się wszelkich praw do roszczeń (ang. disclosure), gdyby wady techniczne samochodu miały narazić go na szkody? Chyba nie. To dlaczego w przemyśle IT jest to powszechny standard?

Moim zdaniem ten paradoks bierze się stąd, że podczas gdy każdy produkt techniczny powstaje na gruncie matematycznych obliczeń stanowiących swoisty „dowód jego poprawności”, to w informatyce takich dowodów — przynajmniej na skalę praktyczną — przeprowadzać nie umiemy.

Problem pozyskiwania matematycznych gwarancji poprawności programów pojawił się po raz pierwszy w pracy Alana Turinga w roku 1949. Później przez kilka dekad podejmowano ten temat badania pod hasłem dowodzenia poprawności programów, a równolegle też próby definiowania takich semantyk języków programowania, które byłyby podstawą do prowadzenia dowodów poprawności. Jednocześnie, od lat 1970. dla większości matematyków było raczej oczywiste, że matematyczne semantyki powinny być kompozycyjne, co oznacza, że znaczenie całości jest funkcją znaczeń jej części. W literaturze takie semantyki nazwano denotacyjnymi.

Niestety w żadnym z obu obszarów — semantyki i poprawność — nie dopracowano się metod, które weszłyby na stałe do repertuaru narzędzi inżynierii oprogramowania. Wreszcie zaniechano tych badań, co autorzy monografii Deductive Software Verification z roku 2016 podsumowali stwierdzając (tłumaczenie moje):

Przez wiele lat pojęcie formalnej weryfikacji było niemalże synonimem weryfikacji funkcjonalnej. W ostatnich latach staje się coraz bardziej jasne, że pełna funkcjonalna weryfikacja programu jest dla prawie wszystkich zastosowań celem iluzorycznym.

W mojej ocenie niepowodzenie opisanych wyżej prób miało dwa źródła:

Po pierwsze, dla większości istniejących języków programowania zapewne nie da się zbudować takiej semantyki, która mogłaby służyć do praktycznego dowodzenia poprawności programów. To oczywiście tylko opinia, ale fakt, że do tej pory nie udało się tego dokonać, o czymś jednak świadczy.

Po drugie, nawet gdyby taką semantykę zbudowano, to dla większości programów dowodów poprawności nie da się przeprowadzić z prostego powodu, że one poprawne nie są! Stąd też praktyczną wartość dowodzenia poprawności upatrywano w nadziei, że próba dowodzenia poprawności programu wskaże na zawarte w nim błędy.

W trakcie seminarium przedstawiam własną propozycję podjęcia problemów budowania semantyki denotacyjnej oraz poprawności programów, a także wyjaśniam, dlaczego wymaga ona „odwrócenia tradycyjnej kolei rzeczy”. Choć moja propozycja jest oparta na dość specyficznej matematyce, postaram się przedstawić ją w sposób strawny dla osób, które tej matematyki mogą nie znać. A tym, którzy chcieliby do niej sięgnąć, proponuję książkę (patrz: Książka).

Istnieją również wersje angielskie zarówno książki (The book), jak i wykładu (A proposal of a seminar). .

Za wszelkie opinie o metodzie, książce i wykładzie będę niezmiernie wdzięczny. Można do mnie pisać na adres Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript..

Zaproszenie do projektu

Gdyby znalazła się grupa osób zainteresowanych rozwijaniem projektu, mogę jej zaoferować pomoc merytoryczną w tym obszarze, a także — być może — jakąś pomoc organizacyjną. Mogę się podjąć promotorstwa prac magisterskich i doktorskich oraz przeprowadzenia kursów na różnych poziomach matematycznej szczegółowości w zależności od tego, czy słuchaczami byliby teoretycy zamierzający dalej rozwijać denotacyjny model Lingua, czy też praktycy zainteresowani budowaniem narzędzi wspomagających pracę projektanta języka lub programisty (patrz: Co jest jeszcze do zrobienia)

W dalszej perspektywie można by też myśleć o powołaniu startupu, który oferowałby wdrożenia narzędzi środowiska projektanta języków oraz programistycznego w technologii Lingua oraz opiekę na tymi narzędziami. Analogicznie jak w przypadkach implementacji Linuxa, same narzędzia pozostawałyby bezpłatne, natomiast komercjalizacji podlegałoby wsparcie w ich stosowaniu i aktualizowaniu. Firma mogłaby też oferować produkty IT zbudowane zgodnie z metodologią oferowaną przez środowisko programistyczne dla Lingua.

Osoby zainteresowane porozmawianiem o szczegółach projektu bardzo proszę o kontakt ze mną na adres Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript. 

Dwa nowe kierunki badawcze

Niezależnie od wskazanej powyżej problematyki, są jeszcze dwa ważne kierunki badawcze, którymi z pewności warto się zająć.

Pierwszy dotyczy rozbudowania naszego modelu denotacyjnego o mechanizmy współbieżności. W pełni denotacyjne modele dla współbieżności nie są dziś chyba znane, choć istnieją próby łączenia w takim przypadku semantyki denotacyjnej z operacyjną.

Drugi problem nie był chyba w ogóle eksploatowany, a dotyczy budowy na wpół formalnych języków dla opisu adresowanych do przyszłych użytkowników programów. Jak na razie wszystkie podejścia do problemu poprawności programów — włączywszy w to nasz projekt — ograniczają się do zgodności kodu programu z jego specyfikacją formalną. Nie wyczerpuje to jednak problemu wiarygodności produktów przemysłu IT, gdyż wiele błędów w produktach zawdzięcza swoje istnienie złej komunikacji pomiędzy budowniczym aplikacji, a jej przyszłymi użytkownikami. W tym przypadku trzeba by zapewne myśleć o wielu językach specyfikacji tworzonych pod poszczególne obszary zastosowań.

RSS