Afiliacja: Uniwersytet Warszawski, Wydział Matematyki Informatyki i Mechaniki
Jakieś sześć lat temu ekscytowałem się wspólnie z Czytelnikami Delty, rozważając, ile to wspaniałych możliwości oferują współczesne narzędzia komputerowe. Tamta rubryka nosiła żartobliwą nazwę Pół szklanki mocnego kodu – bo pokazywałem w niej, jak za pomocą programu komputerowego liczącego kilkanaście linijek (zajmujących mniej więcej pół strony ekranu) i korzystając z potężnych bibliotek lub pakietów programistycznych, można niewielkim wysiłkiem osiągnąć spektakularne efekty.
Chciałbym poniżej powrócić do niektórych z tamtych zadań, aby unaocznić Czytelnikowi skalę rewolucji, jaka się dokonała w ciągu owych kilku lat za sprawą narzędzi sztucznej inteligencji, a dokładniej – opartych na dużych modelach językowych aplikacji, takich jak ChatGPT, Gemini, Claude, Copilot itp.
Sześć lat temu wystarczyło (1) umieć (2) napisać odpowiedni kod w Pythonie lub innym języku programowania, by po (3) zainstalowaniu stosownych mocnych bibliotek zrealizować zadanie.
Dziś w ogóle nie trzeba pisać żadnego kodu: wystarczy po prostu powiedzieć Sztucznemu Inteligentowi, o co z grubsza chodzi. Reszta zrobi się sama – i to jak!
Trudne zadanie rozpoznania, jaki obiekt znajduje się na zdjęciu w \(\Delta^{3}_{19}\), wymagało użycia biblioteki TensorFlow i wstępnie wytrenowanej sieci neuronowej – lecz i tak zdjęcie wieży obserwacyjnej (zob. obok) zostało wtedy sklasyfikowane jako przedstawiające… zamek. Gdy dzisiaj zapytam Sztucznego Inteligenta o to samo zdjęcie – nie dość, że bezbłędnie rozpozna Capot Tower (i poprawnie poda jej lokalizację!), to dodatkowo uraczy mnie kilkoma ciekawostkami dotyczącymi tego obiektu.
Czytelnika Podejrzliwego uspokajam, że zdjęcie jest na tyle stare, że nie ma zapisanych współrzędnych GPS
Podobnej totalnej trywializacji uległo omawiane w \(\Delta^{3}_{20}\) zagadnienie mechanicznego paplania. Teraz każda szanująca się apka potrafi za sprawą sztucznej inteligencji opowiedzieć (ludzkim głosem i w dowolnym języku) czy to bajeczkę, czy żarcik, czy cokolwiek tylko zechcecie. A nawet pogada z wami, zazwyczaj z sensem, na dowolny temat.
Gdy w \(\Delta^{10}_{19}\) musiałem się sporo namęczyć z niewdzięcznymi w obróbce raportami dotyczącymi grypy (chodziło o wyłuskanie liczby zachorowań w Polsce z raportu w formacie PDF, zawierającego najrozmaitsze dane; zob. obok) – teraz wrzucam skan raportu do aplikacji z multimodalnym modelem językowym i po prostu proszę ją o podanie tej liczby. W odpowiedzi oczywiście dostaję bezbłędnie wybraną i odczytaną wartość.
A jak taki model radzi sobie z przewidywaniem liczby zachorowań na grypę, czym zajmowałem się w \(\Delta^{12}_{19}\) i \(\Delta^{6}_{20}\)? Zapytany na początku stycznia tego roku Gemini Pro najpierw naszkicował bieżącą – według niego niepokojącą – sytuację oraz streścił przewidywania ekspertów. W dalszym toku rozmowy prognozował, że szczyt zachorowań najprawdopodobniej nastąpi na przełomie stycznia i lutego, kiedy to liczba tygodniowych przypadków będzie sięgać (aż!) 280–320 tysięcy. Dodał też kilka sensownych zastrzeżeń i ogólnych prawidłowości dotyczących zachorowalności na grypę. Czytelnicy już wiedzą, czy i jak bardzo się pomylił.
W kolejnej rozmowie Sztuczny Inteligent bez problemu sam wymyślił prosty wzór na rodzinę roślinopodobnych krzywych zamkniętych. A gdy następnie dopytałem go o superformułę Gilesa, zob. \(\Delta^{6}_{19}\) – to nie tylko natychmiast poprawił mnie, że w rzeczywistości chodziło mi o wzór Gielisa, ale też napisał program w Pythonie do rysowania tych krzywych. Dodatkowo (choć nie prosiłem!) dołączył tabelkę z kilkoma sensownymi propozycjami zestawów parametrów prowadzących do różnych efektownych kształtów.
Tym razem to był Copilot/GPT-5.
Nie zdziwi nas w tym układzie, że Wielki Mag, zapytany o rozwiązania pewnego równania Riccattiego – w \(\Delta^{7}_{21}\) próbowaliśmy wspólnie z Grzegorzem Łukaszewiczem wykorzystać w tym celu metody grup Liego – z marszu wyprodukował szczegółowe rozwiązanie (powiedziałbym, typowe dla czwórkowego studenta). W dodatku elegancko sformatowane.
Znowu zapytałem Copilota.
W przypadku poważniejszego wyzwania, jakim w \(\Delta^{9}_{20}\) była symulacja ruchu planet w Układzie Słonecznym na przestrzeni 50 000 lat, moi nowi Inteligentni Pomocnicy mieli trochę kłopotów. W zależności od humoru produkowali rozwiązania lepsze lub gorsze. Jednego razu model językowy Qwen3 wiedział, co prawda, że trzeba użyć zachowującego energię schematu symplektycznego (nawet wymienił prawidłowo dwa najbardziej popularne), ale następnie przygotował kod w Pythonie, korzystający nie z nich, tylko z najprostszego schematu Eulera – o którym powszechnie wiadomo, że wyjątkowo źle radzi sobie w tych okolicznościach. I rzeczywiście: symulacja zakończyła się spektakularną porażką, a planety szybko rozsypały się po Wszechświecie.
Więcej o tych schematach pisaliśmy w \(\Delta^{9}_{20}\).
Lecz innego dnia ten sam model był w wyraźnie lepszej formie i poszedł na całość, proponując – zgodnie z duchem wspomnianej na początku rubryki Pół szklanki mocnego kodu – wykorzystanie gotowych, mocnych bibliotek: jednej do rozwiązywania równań ruchu, a drugiej do wyznaczenia początkowych położeń i prędkości planet na podstawie danych NASA. Efekt był po prostu rewelacyjny – co widać na (zwodniczo niepozornym) rysunku obok, ukazującym finalny fragment symulacji.
Może więc faktycznie żyjemy już w epoce vibe coding, kiedy rolą człowieka jest tylko przedstawienie problemu do rozwiązania, a całą resztę – w tym nudne i żmudne kodowanie w Pythonie – ogarnie już tylko Sztuczny Inteligent? Nie odważę się odpowiedzieć na to pytanie, ale w zamian zrobię jeszcze jeden eksperyment.
Skorzystam z wolnodostępnego dużego modelu językowego ogólnego przeznaczenia GPT-OSS-120b. Wiadomo, że są lepsze – lecz ich nie próbowałem.
Zadanie przeprowadzenia komputerowej symulacji przepływu płynu w rurze, wzdłuż której przemieszczają się niewielkie przeszkody (powiedzmy, kulki; zob. rys. poniżej) jest jednym z tych zadań, które z powodzeniem mogłyby trafić do dawnej rubryki o mocnym kodzie: dysponujemy na tyle wyrafinowanymi bibliotekami, że rozwiązanie powinno dać się zapisać w zwięzły sposób w Pythonie.

Poprosiłem więc mojego Inteligentnego Pomocnika, aby samodzielnie przygotował taki właśnie kod, opisując mu (niektóre) fizyczne parametry zadania. W odpowiedzi poprawnie domyślił się, jakie brakujące warunki należy dodać, aby otrzymać to, o co mi chodziło, a następnie wyprodukował ładnie wyglądający program w Pythonie.
Nie od razu udało się uruchomić tę symulację. W kodzie było kilka drobnych błędów składniowych, które dopiero w mozolnym procesie kolejnych poprawek (wprowadzanych przez niego) i testów (wykonywanych przeze mnie) zostały w końcu szczęśliwie usunięte przez Sztucznego Programistę.
Jednak wówczas ujawniły się następne, tym razem poważniejsze kłopoty – związane z wybranym algorytmem – i tego już nie udało się przeskoczyć: choć Sztuczny Inteligent starał się, jak mógł, nie był w stanie pójść dalej bez merytorycznej pomocy z mojej strony. Lecz ja, kompletnie nie rozumiejąc, co się dzieje i o co chodzi w jego kodzie, miałem w głowie totalną pustkę.
A z pustego to, jak wiadomo, i Salomon nie naleje.
Czytelnika Podejrzliwego uspokajam, że zdjęcie jest na tyle stare, że nie ma zapisanych współrzędnych GPS
