Grafika nr 1. ChatGPT: „Oto wizualizacja tego, jak wyobrażam sobie programowanie w futurystycznym, cyfrowym środowisku” Grafika nr 1. ChatGPT: „Oto wizualizacja tego, jak wyobrażam sobie programowanie w futurystycznym, cyfrowym środowisku” DALL·E by OpenAI / Archiwum
Opinie

Na kogo czatuje ChatGPT

Nie będzie łatwo. Za to znów wzrośnie produktywność. Tak sobie wyobrażam najbliższe lata w informatyce.

Od jakiegoś czasu wiadomo, że ChatGPT nauczył się programować. Widziałem wiele nagłówków prasowych, które przewidują znaczące redukcje zatrudnienia programistów. Do zwolenników takiej tezy należy także Jensen Huang, właściciel firmy NVIDIA, która jest jednym z głównych motorów i przy okazji beneficjentów eksplozji sztucznej inteligencji.

Co to będzie? Mam swoją hipotezę i ją tutaj opiszę.

Dobrze jest rozpocząć od małej historii (a może nawet prehistorii?). Pierwsze elektroniczne komputery świata programowano w kodzie maszynowym. Praktycznie każda instrukcja maszynowa – czy to sięgnięcia do pamięci, czy to zapisu do pamięci, czy też wykonania operacji arytmetycznej bądź porównania – musiała być zaprojektowana i zapisana przez ludzi. Pierwotnie – zanim nie nauczono komputerów przechowywania programu w pamięci – wręcz poprzez ręczne przełączenie w sprzęcie.

Później pojawił się asembler. W nim instrukcje maszynowe dostały symboliczne nazwy, możliwe było również symboliczne odwoływanie się do rejestrów w pamięci i wiele innych tego typu udogodnień. Nadal w zasadzie jedna instrukcja programu przekładała się na jedną instrukcję kodu maszynowego. Zachwycano się jednak wówczas ogromnym wzrostem produktywności.

II połowa XX w. to pierwsze kompilatory, które potrafiły przekształcić program napisany wysokopoziomowym języku programowania na kod maszynowy. W 1957 r. powstał FORTRAN, a w 1960 r. COBOL. Ukrywały one szczegóły techniczne komputera przed programistami, pozwalając im skupiać się na algorytmach, przez co ponownie ogromnie wzrosła ich produktywność.

W kolejnych latach systematycznie pojawiały się języki coraz wyższych poziomów, aż do języków deklaratywnych, takich jak SQL czy PROLOG. Pozwalały one opisać wymagania, które ma spełnić wynik, a wybór drogi do tego prowadzącej pozostawić systemowi.

Grafika nr 2. ChatGPT: „Oto kapryśna i metaforyczna reprezentacja mnie jako programisty, łącząca elementy zarówno zabytkowego, jak i futurystycznego sprzętu programistycznego”.DALL·E by OpenAI/ArchiwumGrafika nr 2. ChatGPT: „Oto kapryśna i metaforyczna reprezentacja mnie jako programisty, łącząca elementy zarówno zabytkowego, jak i futurystycznego sprzętu programistycznego”.

Niejako równolegle rozwijały się algorytmy uczące się. One w zasadzie nie wymagają instrukcji, jak mają działać, ani nawet precyzyjnej definicji tego, co mają osiągnąć. Potrzebują tylko ogólnych ram i odpowiednio dużego zestawu dobrze przygotowanych danych, z których same mają wytworzyć schemat działań prowadzących do uzyskania rezultatu takiego, jak w danych, na których się uczyły.

Jeśli widzę w tych kolejnych krokach jakąś zasadę, to taką: w miarę postępu technologii programowania, ludzie w coraz ogólniejszych terminach opisują działanie projektowanego przez siebie systemu, coraz więcej szczegółów pozostawiając do uzupełnienia w sposób automatyczny. Osiągnięcie stanu, w którym daje się to skutecznie osiągać, zajęło dużo czasu. Kolejny przełom wydarzył się zaś stosunkowo niedawno.

Od miesięcy ChatGPT potrafi sam napisać program komputerowy w języku wysokiego poziomu, który później zostanie wykonany. Jest to niewątpliwie niezwykły wyczyn, porównywalny z wprowadzeniem kompilatorów, które same generowały kod maszynowy z opisu w języku wysokiego poziomu. Oczywiście, sztuczną inteligencję trzeba będzie poinformować, co dokładnie ma zaprogramować. To będzie zadanie programistów następnego typu, który teraz się pojawi. Pewien istotny obszar umiejętności programowania zacznie polegać na opisywaniu dla sztucznej inteligencji tego, co stworzony przez nią program ma robić i jak ma robić. Trzeba będzie umieć to jednoznacznie wyrazić i następnie przetestować, że zlecenie zostało wykonane poprawnie. A to nie będzie takie łatwe. Na pewno jednak znowu wzrośnie produktywność.

Tak sobie wyobrażam najbliższe lata w informatyce.

Jeszcze jedno. Jak dotąd żaden z nowych mechanizmów programowania nie wyeliminował całkowicie poprzednich metod. Asembler nadal jest używany, choć już tylko niszowo, względnie niskopoziomowe języki typu C są używane, mimo pojawienia się języków wyższego poziomu, których z kolei nie wyparł deklaratywny Prolog. Moim zdaniem sztuczna inteligencja też niczego nie wyprze.

Oczywiście mogę się mylić.


Od redakcji: Zwróciliśmy się do ChatGPT z uprzejmą prośbą, aby zilustrował siebie, jak programistę. Najpierw otrzymaliśmy grafikę z postacią ludzką z podpisem: „Oto wizualizacja tego, jak wyobrażam sobie programowanie w futurystycznym, cyfrowym środowisku”. Ponowiliśmy polecenie, podkreślając wyraźniej, że chodzi o ChatGPT i program wygenerował grafikę nr 2. Podpis brzmi: „Oto kapryśna i metaforyczna reprezentacja mnie jako programisty, łącząca elementy zarówno zabytkowego, jak i futurystycznego sprzętu programistycznego”.

Ta strona do poprawnego działania wymaga włączenia mechanizmu "ciasteczek" w przeglądarce.

Powrót na stronę główną