Co daje github copilot itp

1

Mam bardzo skromne doświadczenia z narzędziami do autogenerowania kodu, więc to, co napiszę niżej może być bzdurą.

Ale poważnie nie rozumiem tego hype na ich punkcie. 35% kodu w Javie i Pythonie pisane za pomocą Copilot?

Mój punkt widzenia jest następujący:

  • Te narzędzia wprowadzają często kod z rozmaitymi bugami. Co oznacza, że kod przez nie pisany wymaga dokładnego przeanalizowania.
  • Czy programista rozumie dokładnie każdą linijkę wpisaną przez Github Copilot?
    • Jeśli tak: Mógłby napisac ją sam.
    • Jeśli nie: Nie może jej zatwierdzić, póki nie zrozumie, bo nie można Copilotowi ufać w ciemno (a więc musi np. Googlować nieznane mu funkcje itp, czyli dokładnie to, przed czym copilot miał chronic, czyli zmiany kontekstu)

Visual Studio 2019 wprowadził jakies automatyczne generowanie kodu. Visual Studio 2022 dał tego jeszcze więcej. Nie są one pewnie tak zaawansowane jak Copilot, a zresztą ja je chyba jeszcze bardziej ogłupiłem, bo kliknąłem, że zabraniam im wysyłania mojego kodu na serwery Microsoftu, by tam trenowały się modele AI. Więc moje doświadczenie z tymi narzędziami nie jest pewnie miarodajne.

Ale pamiętam, że tak mnie one zdenerwowały, że je w końcu powyłączałem. Okazało się, ze szybciej ja pisałem jakąś linijkę kodu niż mogłem sprawdzić, czy to, co wpisuje mi VS, ma jakikolwiek sens. Mniej więcej w połowie przypadków sugestie VS miały sens, w drugiej połowie były kompletnie od czapy.

0

W sumie parę miesięcy temu założyłem dość podobny wątek. Rzuć okiem co ludzie tam pisali - Tabnine - czyli AI do pomocy w kodowaniu

1

Visual Studio 2022 dał tego jeszcze więcej - nie znam się więc się wypowiem.

Co C# masz jeszcze:

Jakbym coś pisał w C# na pewno bym sprawdził.

To co robi aktualnie IntelliJ dla Javy to dla mnie i tak kosmos (np. podpowiadanie zamiany klasy anonimowej na lambdy), podawanie w hincie skrótu kodu, podpowiadanie najlepiej pasujących do kontekstu metod na początku, podpowiadanie pasujących nazw do nowo tworzonych zmiennych, więc ten CoPilot aktualnie nawet nie analizowałem.

Poza tym CoPilot ponoć generuje kod bardzo niebezpieczny:

2

Czy programista rozumie dokładnie każdą linijkę wpisaną przez Github Copilot?
Jeśli tak: Mógłby napisac ją sam.
Jeśli nie: Nie może jej zatwierdzić, póki nie zrozumie, bo nie można Copilotowi ufać w ciemno (a więc musi np. Googlować nieznane mu funkcje itp, czyli dokładnie to, przed czym copilot miał chronic, czyli zmiany kontekstu)

Nie ująbym tego lepiej. Kod powinniśmy pisać samemu, jeśli brakuje nam czasu lub umiejętności rozglądajmy się za bibliotekami. Aspekty są te same jak przy bezmyślnym kopiowaniu z SO, tylko Copilot jest wygodniejszy. Wyszukiwanie opisów funkcji na bieżąco (sam najczęściej zapominam kolejność argumentów, i w tym celu sprawdzam) pozornie nie wygląda dobrze, ale czytając opisy po sto razy w końcu wszystko zapamiętamy i to dużo lepiej niż sposobem "szkolnym" - najpierw czysta teoria, potem czysta praktyka.

0

Używam copilita od jakiś dwóch tygodni. Generalnie całkiem niezła pomoc i wklepuje zauważalnie mniej kodu, bo naprawdę świetnie się domyśla co chcę osiągnąć. Ale najlepiej wychodzi mu podpowiadanie komentarzy dokumentujacych publiczne api ;)

Jak ktoś ma tendencje do kopiowania kodu z Internetu bez zrozumienia, to narzędzie nie sprawi, że nagle jego kod będzie lepszy. Będzie tak samo zły.

Co nie znaczy, że doświadczony, samodzielny programista nie jest w stanie skorzystać z tego narzędzia by podnieść swoją produktywność.

Pracy koncepcyjnej programisty nie zastąpi, ale z nudnym kodem pomoże.

1

Napisanie kodu to tylko jeden z wielu etapów procesu produkcji oprogramowania, który zaczyna się od jakiejś mglistej wizji co to oprogramowanie miałoby robić, a kończy się gdzieś w okolicach wsparcia klienta końcowego. Nawet jeżeli ograniczymy się wyłącznie do pracy programisty, to pisanie kodu nie jest ani jedyną, ani nawet najbardziej czasochłonną częścią pracy, bo większość czasu jest poświęcana na zrozumienie wymagań, zastanawianie się jak wpasować nową funkcjonalność w to co już jest napisane, testowanie, identyfikowanie błędów i ich przyczyn, code review, utrzymanie narzędzi DI/CD itd. Uważam, że korzystanie z takich narzędzi dość szybko przechodzi do poziomu na którym programista pisze "działający, ale nie wiadomo jak" kod. Czyli automatyzowany jest jedynie kawałek "junior developer C/P process". Takie narzędzie z jednej strony może być bardzo przydatne, z drugiej, w nieodpowiedzialnych rękach jest jak danie małpie brzytwy.

kazało się, ze szybciej ja pisałem jakąś linijkę kodu niż mogłem sprawdzić, czy to, co wpisuje mi VS, ma jakikolwiek sens. Mniej więcej w połowie przypadków sugestie VS miały sens, w drugiej połowie były kompletnie od czapy.

No właśnie o to mi chodzi. Tylko naprawdę ludzi, którzy kopiują kod ze SO i nie są w stanie przeczytać co on naprawdę robi, jest w branży całkiem sporo.
Z automatyzacji cenię jak na razie głównie wszelkie SonarQube, Lint, Coverity itd, które moim zdaniem są w stanie mocno poprawić jakość i bezpieczeństwo kodu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1