GitHub Copilot, czyli podpowiadanie kodu wspomagane przez AI jest dostępne dla wszystkich, bez zapisów, bez oczekiwania. Niestety, jest płatne – $10 za miesiąc.
Używałem od kilku miesięcy Technical Preview i jak dla mnie działało zadziwiająco fajnie. Ale zastanawiam się teraz czy ta cena nie jest jednak nieco zbyt wygórowana.
@piotrpo: bo w przypadku gdy Ty weźmiesz kod, który jest na GPL to Ty odpowiadasz przed firmą. Jeśli będzie to Github Copilot, to kto będzie odpowiadał?
Poza tym - https://twitter.com/mitsuhiko/status/1410886329924194309
i bardzo dobrze, powinno być jeszcze droższe, żeby w nikomu w moich projektach nie wpadło do głowy by to używać
No ostatnio widziałem większy kawałek kodu napisany wraz z użyciem wspomagania AI. Koszmar, już projekty legacy wyglądają lepiej. Kilka konwencji kodowania, różne rozwiązania tego samego problemu. Całość wygląda jakby ktoś skakał po repozytoriach i losowo kopiował kawałki kodu. Kiedyś to AI będzie faktycznie do czegoś przydatne, teraz to jest antywzorzec.
@hauleth: Ja nie piszę o "braniu" kodu, w sensie kopiowania, czy przepisywania. Piszę o tym, że czytam ten kod w celu nauczenia się czegoś. W sensie, że np. patrzę sobie na jakąś implementację R-tree, żeby zrozumieć jak działa i zaimplementować samodzielnie po swojemu. I faktyczni - nie wygląda na to, żeby copilot to robił w ten sposób jak twierdzi, że robi.
no i jaki to problem rozwiązuje? Z przykładów, które oni sami podają oraz które widziałem na filmikach Youtube (gdzie użytkownicy to testowali), wynika, że rozwiązuje to problemy 1. trudne w zapamiętaniu i wymagające pisania boilerplate'a API (pytanie czemu jako globalna społeczność programistów, zamiast naciskać na twórców API/bibliotek, to sięgamy po AI, żeby je obeszło? Brzmi jak porażka komunikacyjna) 2. braki w bibliotekach standardowych, jeśli ludzie muszą pisać powtarzalne rutyny do tego, co mogłoby być out of the box
Ogólnie brzmi jak rozwiązywanie w sprytny sposób niewłaściwych problemów (albo odwrotnie - rozwiązywanie właściwych problemów w niewłaściwy sposób. Zamiast porozmawiać nad kształtem API, żeby były przyjazne programistom, to łup - jexać to i robimy AI).
@LukeJL: no i jaki to problem rozwiązuje?
- to się przyda gdy danego kawałka kodu użyjesz raz i tylko raz. Fajnie np. gdy nie trzeba pamiętać, jak dorzucić padding. Problem się zaczyna, gdy zamiast wydzielać takie kawałki kodu AI za każdym razem będzie ci generowało inny kod, robiący to samo (właśnie z tym się zderzyłem), wtedy zostajesz z metodami na kilkaset linijek, które praktycznie nie robią zbyt wiele.
GitHub Copilot is free until August 22
więc można jeszcze sprawdzić jak ktoś nie miał okazji.
Już to widzę jakby było darmowe i za parę lat wysyp junior copilotów, którzy nie będą w stanie nic napisać bez tego XDD
to jest śmieszny przykład z ich stronki. pokazuje co jest złego z JS oraz z copilotem za jednym zamachem.
Prawdziwy problem: obsługa czasu ssie w JS.
Poprzednie rozwiązania: powstało kilka bibliotek JSowych do obsługi czasu.
Proponowane nowe rozwiązanie: tool, który będzie za pomocą AI dodawał boilerplate związany z obsługą tego czasu. xD kurczę, to miałoby sens, gdyby w ogóle zrobili narzędzie do generowania kodu o niskiej abstrakcji (coś jak kompilator). Piszesz w jakimś wygodnym języku, który wszystko ma, i kompiluje się to do prymitywnego JSa, to miałoby jeszcze sens
Proponuję wszystkim sceptykom jednak skorzystać z triala i samemu sobie sprawdzić czy Copilot jest śmieszny czy nie. Ja nie mam zdania, przed chwilą uruchomiłem dopiero i napisałem proste API w Express pisząc prawie same komentarze, więc robi całkiem pozytywne wrażenie.
@Saalin: no właśnie to zrobiłem. "wywaliło" się przy najprostszym DTO. Chciałem wygenerować klasę Task
z polami string name
i double value
- wygenerowany kod dorzucił gettery dla obu pól, ale już nie setter stworzył tylko dla jednego pola. Nie potrafił stworzyć metody hashCode (chyba zaliczył zonka bo Task
dla Copilota składa się z int id
i string name
. Tak jak pisałem wcześniej - to jest spoko narzędzie bo nie musisz szukać snippetów, ale kod wygląda dziwnie (np. dla dwóch podejść wygenerował mi toString w innym formacie).
Taki dalszy test: dla komentarza If name starts with "A" then value is multiplied by 2
wygenerowało mi konstruktor z wstrzyknięciem name
i value
.
Na stronie Copilota w przykładach (parse_expenses.py
) jest wyrażenie line.startswith("#")
. To można przecież uprościć do line[0] == "#"
(a gdyby to było C, to nawet do *line == '#'
).
Już czekam na nowe wpisy w "rekrutacyjnym WTF", jak to kogoś ośmielili się zapytać o napisanie funkcji, która doda 2 parametry do siebie, bez używania AI...
Ja tego bardziej używam jako podpowiedzi, piszę część kodu i Copilot podpowiada resztę. Czasem bez sensu, ale czasem zaskakująco dobrze i można sporo czasu oszczędzić na klepaniu. I wiadomo, że to jeszcze niedoskonałe narzędzie, ale z czasem będzie coraz lepsze. Trochę dziwię się podejściu niektórych, którzy nawet nie próbowali a krytykują. Cóż, to ten typ ludzi, co wolą pisać w notatniku bez kolorowania składni, a jadąc autem nie używają GPS, bo wiadomo, że technologia jest niedoskonała i można wjechać do jeziora...
@Fanquilen: wiesz, w kodzie produkcyjnym ja nawet nie mogę tego spróbować, a po godzinach piszę w języku, którego Copilot nie wspiera. Ale nawet wtedy nie widzę za bardzo sensu takiego rozwiązania, bo ono powoduje problemy z legalnością.
@Manna5: oba przykłady, które podałeś są dość dziwnie przez ciebie interpretowane.
Popatrz na to, tu używasz własnych sposobów logicznych żeby porównać czy jakiś znak występuje, za każdym razem inaczej to sprawdzasz, a takie coś łamie metody DRY, jest zapisane logicznie przez co jest trudniejsze w analizie i kod wygląda gorzej, intuicyjnie to czuć.
A jak masz obiekt i on ma już metody zaimplementowane do danej czynności, dobrze sama siebie nazwą dokumentuje, dodatkowo o testowana no i jest to zapisane naturalnym językiem. Nie widzę powodu, żeby nie korzystać, w dodatku możliwe jest sprawdzanie dłuższych ciągów znaków niż jak pojedynczy char lub nawet long.
Jest gdzieś jakiś punkt w regulaminie, w którym zgadzam się uczyć to dziadostwo na moim kodzie posiadając tylko darmowe konto na GH? Czy po prostu dobierają repozytoria z luźną licencją?
@several: zgodnie z tweetem od @hauleth (https://twitter.com/mitsuhiko/status/1410886329924194309) to niekoniecznie z luźną licencją :P
powinni jeszcze drożej dać, im mniej osób będzie z tego korzystało, tym lepiej. Wyobraźmy sobie te wszystkie projekty pisane z użyciem Copilota, które będą miały mnóstwo nadmiarowego kodu, bo AI taki kod wygenerowało. Jak to potem utrzymywać?