Przejdź do treści
transhumanizm.com.pl
Szukaj
Sztuczna inteligencja

Programista i model: co się naprawdę zmieniło

Pierwszy model do kodu rozwiązywał 28,8 procent zadań z jednej próby. Test z prawdziwymi zgłoszeniami okazał się dużo trudniejszy.

Redakcja
ilustracja: mały precyzyjny element na pierwszym planie i za nim ogromna konstrukcja złożona z tysięcy takich elementów
Grafika wygenerowana maszynowo

Krosno Jacquarda z ryciny było pierwszą maszyną sterowaną zapisem na kartach. Wzór tkaniny nie był w niej zbudowany - był wprowadzany, jako ciąg dziurek.

Cały zawód programisty wyrósł z tego pomysłu. Warto zobaczyć, co się z nim dzieje, gdy zapis zaczyna powstawać sam.

Skąd wzięły się liczby

W 2021 roku opisano model wyuczony na publicznie dostępnym kodzie i sprawdzony na zestawie zadań polegających na napisaniu funkcji na podstawie opisu w komentarzu. Wyniki:

  • 28,8 procent rozwiązanych zadań przy jednej próbie na zadanie;
  • 70,2 procent przy stu próbach - czyli gdy wolno wygenerować wiele wersji i wybrać działającą;
  • dla porównania: ogólny model językowy tej samej generacji rozwiązywał zero procent.

Druga liczba bywa cytowana bez pierwszej i to jest nieuczciwe. Sto prób na zadanie ma sens tylko wtedy, gdy istnieje sposób sprawdzenia, która wersja działa - a przy realnym kodzie taki sprawdzian trzeba dopiero napisać.

Autorzy wskazali też ograniczenia, które okazały się trwałe: modele radzą sobie gorzej z opisami obejmującymi długie łańcuchy operacji i z wiązaniem operacji ze zmiennymi.

Dlaczego prawdziwa praca jest trudniejsza

W 2023 roku zaproponowano test zbudowany inaczej: 2294 zadania pochodzące z rzeczywistych zgłoszeń błędów w dwunastu popularnych repozytoriach języka Python, wraz z odpowiadającymi im zmianami, które te zgłoszenia zamknęły.

Zadanie modelu: dostać cały kod projektu i opis problemu, a potem zmienić kod tak, żeby problem zniknął.

Autorzy wyliczają, czego to wymaga: zrozumienia i skoordynowania zmian w wielu funkcjach, klasach i plikach naraz, pracy w środowisku uruchomieniowym, przetworzenia bardzo długiego kontekstu i rozumowania wykraczającego daleko poza generowanie kodu.

Wyniki modeli na tym teście były początkowo bardzo niskie i od tego czasu szybko rosną. Ważniejsze od bieżącej liczby jest to, co ten test ujawnił o naturze zadania: pisanie kodu od zera i praca w cudzym, dużym projekcie to dwie różne umiejętności.

Co wiemy

  • Modele rozwiązują znaczną część krótkich, samodzielnych zadań programistycznych.
  • Zadania oparte na rzeczywistych zgłoszeniach z repozytoriów są dla nich nieporównanie trudniejsze.
  • Główną trudnością jest praca w istniejącym kodzie, nie samo generowanie.

Czego nie wiemy

  • Ile wyników na tych testach wynika z obecności podobnego kodu w danych uczących. To jest znany i trudny do wykluczenia problem.
  • Jak zmiana wpływa na zatrudnienie. Dane rynkowe są mieszane i silnie zależą od koniunktury.
  • Czy jakość kodu utrzymywanego z pomocą modeli jest lepsza, czy gorsza w skali lat. Za wcześnie na odpowiedź.

Co się realnie zmieniło w tym zawodzie

Trzy rzeczy, wszystkie obserwowalne.

Koszt pierwszej wersji spadł prawie do zera. Szkielet, powtarzalny fragment, konfiguracja, test jednostkowy - to jest dziś kwestia sekund. Praca przesunęła się z pisania na decydowanie, co ma powstać.

Wzrosło znaczenie czytania kodu. Kto akceptuje zmianę, ten za nią odpowiada. Umiejętność szybkiego zrozumienia cudzego kodu i wychwycenia w nim błędu stała się ważniejsza niż biegłość w składni.

Pojawiła się nowa klasa błędów. Model potrafi wywołać funkcję, której nie ma, albo użyć biblioteki w sposób, w jaki działała trzy wersje temu. To jest ten sam mechanizm co zmyślenia w tekście, z tą różnicą, że tutaj kompilator albo test zwykle to wyłapie - zwykle, nie zawsze.

Czego z tego nie wynika

Nie wynika koniec zawodu. Poprzednia fala przewidywań o automatyzacji pracy - z połowy lat dziesiątych - okazała się trafna co do kierunku i chybiona co do tempa i zakresu. Piszemy o tym przy maszynach i pracy.

Nie wynika, że wystarczy umieć pytać. Ocena, czy proponowana zmiana jest poprawna, wymaga rozumienia systemu. Kto tego rozumienia nie ma, nie odróżni dobrego rozwiązania od takiego, które działa na pokaz.

Nie wynika, że modele rozumieją program. Rozwiązanie zadania testowego nie jest dowodem rozumienia - to jest ta sama pułapka, którą opisujemy przy testach, które się zużywają.

Co z tego wynika

Praktycznie: jeśli ktoś dziś zaczyna w tym zawodzie, największą przewagę daje mu umiejętność czytania i oceniania kodu, a nie szybkiego pisania. To jest odwrócenie tego, czego uczono przez trzydzieści lat.

Dla oceny doniesień: przy każdym „model zdał egzamin z programowania” warto zapytać, jakiego rodzaju były zadania. Krótkie i samodzielne czy osadzone w prawdziwym projekcie. Różnica jest zasadnicza i prawie nigdy nie ma jej w nagłówku.

Dla tego portalu: to jest najlepiej udokumentowany przypadek zawodu, który zmienia się na naszych oczach - z pomiarami, testami i sporem o metodologię. Wszystko, o czym piszemy przy maszynach i pracy w trybie ogólnym, tutaj daje się obserwować konkretnie.

Warto tylko pamiętać o krośnie z ryciny. Ono nie zlikwidowało tkactwa. Zlikwidowało konkretną czynność - i przy okazji zawód osoby, która wcześniej ręcznie przekładała nici.

Część większego wątku

  • AGI i superinteligencjaOd maszyny Gooda po dzisiejsze modele: co zostało wykazane, co jest hipotezą, a co deklaracją firmy zbierającej kapitał.

Źródła (4)

  1. Mark Chen i in., Evaluating Large Language Models Trained on Code, arXiv (OpenAI) (2021)preprintarXiv 2107.03374sprawdzono 17.08.2026

    Preprint firmowy. Zadania z zestawu HumanEval są krótkie i samodzielne - nie przypominają pracy w istniejącym kodzie.

  2. Carlos E. Jimenez i in., SWE-bench: Can Language Models Resolve Real-World GitHub Issues?, arXiv (2023)preprintarXiv 2310.06770sprawdzono 17.08.2026

    2294 zadania z rzeczywistych zgłoszeń w 12 repozytoriach języka Python. Wyniki modeli na tym teście szybko się zmieniają.

  3. Ziwei Ji i in., Survey of Hallucination in Natural Language Generation, ACM Computing Surveys, t. 55 (2023)badanieDOI 10.1145/3571730sprawdzono 17.08.2026

    Przywołane dla mechanizmu, który przy kodzie objawia się jako wywoływanie nieistniejących funkcji.

  4. Carl Benedikt Frey, Michael A. Osborne, The future of employment: How susceptible are jobs to computerisation?, Technological Forecasting and Social Change, t. 114 (2017)badanieDOI 10.1016/j.techfore.2016.08.019sprawdzono 17.08.2026

    Przywołane dla wcześniejszej fali przewidywań o automatyzacji zawodów.

Więcej w dziale Sztuczna inteligencja

Cały dział →

Komentarze

Komentowanie wymaga konta - to jedyny sposób, żeby ta sekcja nie zamieniła się w chaos. Prosimy o adres, nick i hasło; o nic więcej. Komentarze pojawiają się bez czekania, redakcja czyta je po fakcie. Zasady.

Wczytuję komentarze…