Czy ChatGPT napisze mi dowolny kod i zbuduje stronę bez web developera?
Duże modele językowe (LLM) takie jak ChatGPT piszą bardzo przekonujące fragmenty kodu.
Na początku 2023 roku to odkrycie wywołało wiele przedwczesnych świętowań wśród influencerów na LinkedIn: już nie było potrzeby zatrudniania doświadczonych programistów z ich strzeżoną wiedzą specjalistyczną, skrupulatnym podejściem i niewygodnie wysokimi wynagrodzeniami. Teraz każdy z dostępem do Internetu mógł poprosić model AI o napisanie kolejnej wielkiej aplikacji społecznościowej, proszę w JavaScript, i dorzucić trochę blockchainu, już przy okazji.
Obiecana fala aplikacji całkowicie zbudowanych przez AI nigdy się nie zmaterializowała. Staram się najlepiej jak potrafię, aby nie triumfować z tego powodu.
Mimo to, istnieje przekonujący argument za wykorzystaniem AI jako narzędzia programistycznego. Kod to język zorientowany na komputery. Ma niewielkie, jednoznaczne słownictwo i niezłomne zasady składni. Wzorce i powtórzenia to jego chleb powszedni. Jest przewidywalny do bólu, co sprawia, że komputery (i niektórzy ludzie, jak ja) są z nim tak kompatybilni. Jeśli ktoś mógłby pisać dobry kod, to z pewnością komputer. A jeśli największą siłą generatywnego AI jest jego zdolność do modelowania i naśladowania wzorców, tworząc płynny interfejs między ludźmi a maszynami – jak wcześniej argumentowałem – to czy programowanie nie byłoby idealnym przypadkiem użycia dla niego?
Cóż, tak i nie. Narzędzia programistyczne oparte na AI zrobiły furorę w świecie programowania i prawdopodobnie nie znikną w najbliższym czasie. Ale pomimo że stały się dostępne dla programistów na poziomie junior, mid-level i senior, nie wspominając o osobach, które nie rozróżniają struktury od dziury w ścianie, obliczenie ryzyka/korzyści jest zupełnie inne w zależności od poziomu doświadczenia. AI może być narzędziem, które przyspieszy twoją karierę, lub przeszkodą, która ją wykolei. Ważne nie jest tylko to, czy jej używasz, ale jak.
Spójrzmy, co AI oznacza dla programistów (i osób nieprogramujących) na każdym etapie.
Przedsiębiorca bez kodu
Wiele osób pierwszy raz zetknęło się z programowaniem w tym roku podczas rozmowy z ChatGPT. To kuszące doświadczenie: możesz poprosić go o napisanie aplikacji w dowolnym głównym języku programowania, a on wypluje kod aż do limitu tokenów – więcej niż wystarczająco dużo miejsca na typową aplikację „tutorialową”. Stamtąd możesz prosić o poprawki i naprawy błędów, dopóki nie będziesz zadowolony z wyniku. A kiedy wkleisz go do IDE i to faktycznie zadziała, czujesz się jakbyś rozbił branżę na kawałki.
Powodem tej różowej pierwszej wrażenia jest to, że problemy są ukryte pod powierzchnią. Narzędzia AI są szkolone na kodzie z tysięcy rzeczywistych projektów o różnym poziomie jakości i kompletności – to znaczy, kodzie, który prawie zawsze działa i zwykle wykonuje zadanie, ale tylko od czasu do czasu jest niezawodny, łatwy w utrzymaniu, bezpieczny lub wolny od błędów.
Badania wykazały, że narzędzia takie jak ChatGPT, GitHub Copilot i Amazon CodeWhisperer dostarczają kod, który jest „ważny” (działa bez błędów) około 90% czasu, przechodzi średnio od 30% do 65% testów jednostkowych i jest „bezpieczny” około 60% czasu. Zauważ, że te badania polegają na dobrze napisanych podpowiedziach tworzonych przez inżynierów. Nieznaczne zmiany w sformułowaniu podpowiedzi mogą prowadzić do znaczących różnic w wyjściu kodu. A testują one tylko zdolność AI do wypuszczania „fragmentów” – małych kawałków prostego kodu. Nie ma danych na temat zdolności AI do pisania aplikacji tak skomplikowanych jak przeciętna aplikacja legacy. Prawdopodobnie w ogóle nie jest w stanie tego zrobić, podobnie jak ChatGPT nie jest w stanie napisać spójnej powieści.
Więc gdzie pasuje AI dla osób, które nie potrafią kodować?
Niektórzy powiedzieliby, że nie pasuje. Pomysł programowania zależnego od AI wywołuje wiele kontrowersji w społeczności oprogramowania. Programista to ktoś, kto wie, jak kodować. Jak możesz nazwać siebie programistą, jeśli nawet nie potrafisz napisać instrukcji if? Ale to pomija sedno. Jak tylko programista musiałby być przypomniany, instrukcje if (jak cała logika programowania) nie są atutem, są obciążeniem. Najlepszy kod to w ogóle brak kodu, a na drugim miejscu jest minimalna ilość kodu, która rozwiązuje problem użytkownika. Gdyby było możliwe zbudowanie wysokiej jakości aplikacji bez pisania ani jednej linii kodu, nie byłoby w tym nic złego.
Niestety, tak nie jest i prawdopodobnie nigdy nie będzie. Kod, jako kategoria, to nic więcej i nic mniej niż bycie absurdalnie szczegółowym w tym, czego chcesz. Jeśli twoje podpowiedzi AI są wystarczająco szczegółowe, aby wyprodukować dokładnie właściwy kod, to kodujesz we wszystkich aspektach, które mają znaczenie. Jednak AI jest niedeterministyczne; nie zawsze wytwarza ten sam wynik z danego wejścia. Jest element losowości. Więc nawet podpowiedzi, które kwalifikują się jako kod, są nieprzewidywalnym kodem, a nieprzewidywalność to ostatnia rzecz, której chcesz po spędzeniu godzin, tygodni lub miesięcy na wypracowywanie drobnych szczegółów procesu. Każdy, kto spędza czas na kodowaniu za pomocą podpowiedzi AI, ostatecznie zacznie pragnąć czegoś bardziej bezpośredniego, czegoś bardziej ustrukturyzowanego, czegoś, na co można polegać, że będzie zachowywać się w ten sam sposób za każdym razem – będą pragnąć języków programowania i kompilatorów.
Przewiduję, że AI stanie się bramą wejściową dla niektórych przyszłych programistów. Ale jest inna, ważniejsza nisza, którą może wypełnić, i jest łatwa do przeoczenia.
Istnieje wiele sytuacji, w których oprogramowanie nie jest potrzebne, ale kod jest. Profesjonaliści z innych dziedzin już używają AI do pisania jednorazowych zapytań SQL i makr VBA. Można go również wykorzystać do tworzenia prototypów aplikacji na prezentacje, dowodów koncepcji workflow w wierszu poleceń lub jednorazowych botów do scrapowania danych. Jeśli potrzebujesz oprogramowania, będziesz musiał współpracować z profesjonalistą od oprogramowania