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..
Nazwa firmy: Andrzej Blikle Doradca
Nr telefonu: +48 607 456 918
e-adres: andrzej.blikle@moznainaczej.com.pl
NIP 525 12 84 084