Jeszcze nie tak dawno temu sztuczna inteligencja była głównym antagonistą filmów science fiction. A dziś jest wszędzie wokół nas. Prawie każdy produkt, który pojawia się w świecie technologii, wydaje się mieć jakiś element sztucznej inteligencji. Sztuczna inteligencja ma znaczący wpływ na nasze codzienne życie, ale czy kiedykolwiek zastanawiałeś się, do czego tak naprawdę jest zdolna? Świetnym przykładem futurystycznej wizji, która staje się rzeczywistością, jest GitHub Copilot.

Jest to pierwsza część dwuczęściowego artykułu:

  • Część I: Podstawy (właśnie czytasz) - minimum, które musisz wiedzieć o GitHub Copilot,
  • Część II: Techniczna - zagłębimy się w szczegóły techniczne. Pokażę kilka przykładów i ograniczeń Copilota.

GitHub Copilot jest super fajny, ale co to do cholery jest?

Copilot to narzędzie wbudowane w edytor kodu, które jest w stanie samodzielnie pisać kod na podstawie kodu już napisanego w projekcie. Jedyne, co musisz zrobić, to wpisać nazwę funkcji lub kilka komentarzy, a Copilot automatycznie wypełni implementację. Narzędzie przetwarza dane wejściowe użytkownika w chmurze i wraca z fragmentem kodu, który wystarczy zaakceptować, odrzucić lub poprosić o dalsze sugestie rozwiązania.

GitHub Copilot został wprowadzony przez GitHub aka Microsoft 29 czerwca 2021 roku. Narzędzie jest zasilane przez OpenAI GPT-3, który jest modelem przewidywania języka zaprojektowanym do generowania tekstu podobnego do ludzkiego. GPT-3 jest najbardziej zaawansowanym modelem autoregresyjnym stworzonym przez ludzkość. Sama sztuczna inteligencja została wytrenowana na publicznie dostępnym kodzie z GitHub. Rzeczywiście, za tym rozwiązaniem stoją poważne pieniądze. Microsoft i OpenAI, które były zaangażowane w rozwój Copilota, zainwestowały w ten projekt dwa miliardy dolarów. To, co widzimy teraz, jest produktem tej inwestycji.

Czy Copilot naprawdę jest tak dobry?

W praktyce radzi sobie zaskakująco dobrze. Nie jest jak większość tych irytujących pakietów fragmentów kodu. W rzeczywistości wcale nie jest irytujący! Często zapominam, że w ogóle mam go uruchomionego. Nie ingeruje zbytnio w przepływ pracy. Jeśli nie podoba ci się żaden z elementów Copilota, możesz go po prostu zignorować i kontynuować pracę. Pomimo mojego początkowego sceptycyzmu, ostatecznie byłem zaskoczony, że to narzędzie może być naprawdę przydatne. Największe wrażenie robi dopiero po spędzeniu z nim trochę czasu. Wtedy zdajesz sobie sprawę, że wygenerowane sugestie nie są tylko losowymi odpowiedziami ze Stack Overflow. Używa twojego projektu jako kontekstu. Podąża za twoim stylem i konwencją nazewnictwa. Widzi zmienne, których używasz, elementy, które już istnieją i używa ich w swoich propozycjach.

Na przykład, jeśli utworzę zmienną i nazwę ją successMessage. Copilot zasugeruje odpowiednią treść. Co więcej, zauważy wzorzec i spróbuje wygenerować errorMessage bez mojego udziału. Niestety, nie zaprojektuje architektury aplikacji ani nie zrefaktoryzuje kodu.

Jedną z rzeczy, które zauważyłem, jest to, że Copilot nie wydaje się zbytnio dbać o abstrakcję i kompozycję. Przez większość czasu sugestie Copilota są co najmniej przyzwoite, ale czasami wydaje się, że wybiera losową strukturę. Z drugiej strony mamy algorytmy. Moim zdaniem jest to dziedzina, w której rozszerzenie GitHuba błyszczy szczególnie. Jeśli chodzi o stwierdzenia logiczne, rzadko chybia. Czy potrzebujesz odwrócić drzewo binarne? (Jeśli tak, przyjmij moje kondolencje) Nie ma problemu. Wystarczy nazwać funkcję w jakiś opisowy sposób i gotowe. Wygenerowanie szczegółów implementacji zajęłoby prawdopodobnie mniej niż 2 sekundy.

infografika github copilot perspektywa dewelopera

Czy GitHub Copilot może być zagrożeniem dla deweloperów?

Po tym, jak trafił na rynek programistów, był szeroko dyskutowany, czy jest to duży krok w kierunku śmierci programowania komputerowego, czy po prostu kolejne narzędzie do autouzupełniania na sterydach. Cóż, tworzenie oprogramowania nadal wymaga poważnej wiedzy. Nawet z pomocą Copilota trzeba wiedzieć co się robi, weryfikować i rozumieć generowany kod. Nie jest możliwe (jeszcze), aby nie-programiści mogli wskoczyć na Copilot i zbudować cokolwiek chcą.

Narzędzie nie jest doskonałe. Nie zawsze generuje poprawny kod. Istnieje wiele złych praktyk i przestarzałego kodu. Co gorsza, Copilot może tworzyć luki w zabezpieczeniach, szczególnie w językach, w których pamięć nie jest bezpieczna. Nie jest jeszcze w 100% niezawodny. Bezwzględnie musisz sprawdzić kod Copilota. To jest sztuczna inteligencja. AI musi się uczyć. Z czasem będzie lepiej, ale musimy poczekać.

Copilot GitHub: Wnioski

Z mojego punktu widzenia wygląda na to, że programiści będą pisać coraz mniej kodu w nadchodzących latach, może dekadzie. Copilot to tylko jedno z wielu narzędzi, które usprawniają i będą usprawniać naszą pracę. W rzeczywistości zbytnie poleganie na narzędziach takich jak to może prowadzić do niepotrzebnej pracy lub nawet poważnych problemów. Copilot nie jest nawet bliski zastąpienia programistów.

Niemniej jednak w ostatecznym rozrachunku komputer jest po prostu lepszy od człowieka w pisaniu standardowego kodu, algorytmów i wykonywaniu obliczeń. Po prostu pozwólmy im to robić i skupmy się bardziej na kreatywnych problemach.

Jeśli chcesz zawrzeć pokój z wrogiem, musisz z nim współpracować. Wtedy stanie się on twoim partnerem

- Nelson Mandela
copilot github
Mic Check w Białymstoku

P: Czym jest GitHub Copilot?

GitHub Copilot to narzędzie wbudowane w edytor kodu, które jest w stanie samodzielnie pisać kod na podstawie kodu już napisanego w projekcie. Wykorzystuje ono OpenAI GPT-3, model przewidywania języka, do generowania tekstu podobnego do ludzkiego i jest szkolone na publicznie dostępnym kodzie z GitHub.

P: Jak działa GitHub Copilot?

Użytkownik wpisuje nazwę funkcji lub kilka komentarzy, a Copilot automatycznie wypełnia implementację. Narzędzie przetwarza dane wejściowe użytkownika w chmurze i wraca z fragmentem, który użytkownik może zaakceptować, odrzucić lub poprosić o dalsze sugestie rozwiązania.

P: Czy GitHub Copilot jest naprawdę tak dobry?

W praktyce radzi sobie zaskakująco dobrze. Nie ingeruje zbytnio w przepływ pracy użytkownika i może być naprawdę przydatny, podążając za stylem projektu użytkownika i konwencją nazewnictwa oraz używając zmiennych i elementów, które już istnieją w projekcie. Nie projektuje jednak architektury aplikacji ani nie refaktoryzuje kodu.

5/5 - (11 głosów)