Napisałem kiedyś notkę o tym, co jest fajnego w informatyce. Po latach – drobne uzupełnienie.
Rekonstrukcja
Uczuciem znanym chyba każdemu, kto robił coś „materialnego” jest … rozczarowanie. Rzeźba ma nienaturalny układ ręki. Szafka w kuchni niewygodnie się otwiera. Przebudowany plac ma zbyt mało światła. W wykończonym mieszkaniu brakuje gniazdek. Drzewa w parku nie chcą stworzyć ładnego szpaleru. Przefarbowana sukienka jest szarobura.
Naprawa bywa trudna i długotrwała albo wręcz niemożliwa.
Informatyka jest tu niesłychanie plastyczna. Można wziąć nawet bardzo zaawansowany i rozbudowany program i go poprawić lub uzupełnić. Jest to możliwe, dostępne, łatwe, tanie.
Podobną wolność teoretycznie mają autorzy powieści czy artykułów ale w praktyce obyczaj nakazuje, by raz ukończone dzieła pozostawiali w spokoju. Ewentualne „drugie wydanie” jest czynnością ceremonialną, długo przygotowywaną i ostatecznie jednorazową.
W informatyce ciągła ewolucja jest w większości „żywego” kodu naturalna i pożądana. Nawet jeśli istnieją formalne release, stanowią tylko symboliczne punkty milowe nieustannie trwającego procesu.
Raj perfekcjonistów.
Tworzenie modeli
Przed powrotem do informatyki, słowo o tym, co jest pięknego w matematyce.
„Wielka” matematyka to sztuka konstrukcji pojęć.
Owszem, szukamy dowodów, sprytnych rachunków, notacji, nawet algorytmów. Ale wszystko to zaczyna się od stworzenia dobrych teorii. Udanych zbiorów pojęć, definicji i aksjomatów.
Topologia. Zbiór otwarty, domknięty, funkcja ciągła… Abstrakcyjnie i dziwnie brzmiące definicje (funkcją ciągłą nazywamy każdą funkcję, dla której przeciwobrazem zbioru otwartego jest zbiór otwarty). Dla mnie jest to jedno z piękniejszych ludzkich dzieł – w całkiem potocznym znaczeniu tego słowa. Powstał język złożony z kilku słów i nagle dowody, które w gołym języku analizy zajmowały wiele stron rachunków, dają się formułować w dwóch zdaniach. Twierdzenia i wnioski wyprowadzone z myślą o kółkach na płaszczyźnie dają się stosować od teorii liczb po przestrzenie rozwiązań równań inżynierskich. I … możemy iść wyżej, budować następne, trudniejsze pojęcia.
Wiele osób próbuje tworzyć teorie matematyczne (w pewnej mierze każdy dowód z definicjami i lematami jest małą teorią) ale bardzo niewielu było dane stworzyć coś, co podjęło wiele innych osób i co przetrwało przez lata. Z Polaków – chyba tylko Banachowi się to udało w pełni.
W informatyce prawie każdy programista tworzy swoje teorie, konstruuje pojęcia na bazie których formułuje następne. Drobne funkcje stanowią budulec dla większych, klasy składają się w frameworki, moduły w biblioteki. Dobrze zrobiona biblioteka z wygodnym dla użytkowników API ma urodę udanej teorii matematycznej. Jej zgrabna implementacja wewnątrz – urodę udanego dowodu.