Sztuczna inteligencja w programowaniu

Meow moi kochani mistrzowie od kodowania.

Dzisiejszy wpis będzie poświęcony ukochanej sztucznej inteligencji 💚 Oczywiście póki co nie ma co się bać tym że AI zastąpi programistów, przecież jeszcze nie umieją się domyślać o co chodzi w założeniach biznesowych 😄 Ale! Można zacząć się zaopatrywać jako operator sztucznej inteligencji albo uczyć się ją.. uczyć? – no pewnie programować.

Weżniemy pod lupę GitHub Copilot oraz Tabnine i omówię ich darmowe wersje.

Będę od czasu do czasu pisać o szczegółach technicznych, ale gdyby coś było niezrozumiałe to sekcja komentarzy jest wasza 😀

Na co AI w programowaniu?

A no właśnie, dobre pytanie. Cel wykorzystania AI w programowaniu jak i wszędzie indziej jest podobny – ułatwić sobie życie. Wygląda to na taki ewolucyjny „must have”, abyśmy jako cywilizacja mogli dalej prężnie rozwijać się. Więc skoro to jest do ułatwiania życia to tak: w programowaniu ułatwia pisanie kodu zgodnie ze sztuką i pewnymi zasadami 🙂

Tabnine

Jest to pierwsze AI jakie się natknąłem w świecie programowania. Generalnie w wersji darmowej podpowiada nam kod, że tak to uproszczę, jedno-linijkowo. Jego instalacja i użytkowanie jest bajecznie proste.

Tabnine: szeroka gama integracji z różnymi środowiskami

Tabnine potrafi się domyśleć z kontekstu twojego kodu to jaki masz zamiar. Dosyć często upraszcza pisanie tzw. nudnego kodu, czyli rzeczy, które wiadomo że muszą być i zawsze wynikają z innego fragmentu kodu.

Technicznej rzecz biorąc to po tym jak zaczniesz pisać danią linie kodu (lub jej fragment np. argumenty) to AI pokaże listę propozycji tego jak można zakończyć tą linie kodu. Ja stosując z PHP 7.4, gdzie nie da się jeszcze w argumencie konstruktora zrobić zasięg i przypisanie własności klasy jestem zmuszony pisać to po staremu, ale dzięki temu że mam wcześniej własności napisane to AI podpowiada mi co przyjmuje konstruktor oraz w jego ciele podpowiada mi przypisanie do własności i to tylko pisząc jeden znak co jedną linię kodu – nieźle tabnine. Oczywiście gettery i settery gdy tylko sobie je zacznę pisać też nieźle podpowiada. Jeszcze potrafi podpowiadać wykorzystanie innych obiektów i ich metod oraz własności.

Jeśli chodzi o to ile razy to AI mi się przydało to powiem, że około 36% kodu napisałem dzięki niemu:
– Ale chwila! – krzyknął pan w tylnym rzędzie – przecież tak chwaliłeś to AI, a tu tylko 36% kodu?
– No tak – zacząłem – ale proszę wziąć pod uwagę to, że ja dziennie tego kodu piszę dosyć sporo, nawet do 500 linijek dziennie, co po przeliczeniu daje nam około 180 linijek wspomaganych przez AI. Też są dni, kiedy wykorzystuję to AI bardziej, a tez dni kiedy dużo mniej, a i też zaznaczam że to darmowa wersja. Płatna jest o wiele wiele lepsza i wykorzystuje cały kod z internetu (a dokładnie to tylko z GitHub) do podpowiadania.

Czy polecam Tabnine? Tak, ale nie początkującym programistom. Takie podpowiadanie wiąże się z tym, że się człowiek gorzej uczy, ale jeśli chcesz albo musisz coś szybciej wykonać no to wtedy masz to 😉

Czy Tabnine ma wady? W moim przypadku jest jedna rażąca wada, ale to nie jest jakieś straszne: nie podpowiada mi namespaców (przestrzeni nazw), ale tutaj nie ma co płakać, bo to umie robić sam z siebie mój edytor, w którym pisze kod 😁

GitHub Copilot

To AI jest bardzo potężne! Miałem ten zaszczyt wypróbować wersję trail na 3 miesiące i o cie, jakie to mocne! Mogę powiedzieć, że Tabnine to przy tym pryszcz (aczkolwiek da się używać obu na raz). Copilot na podstawie nazwy klasy i całego kodu (nie tylko twojego) podpowiadać zgodnie ze sztuką i z pewnymi Twoimi zamiarami listę własności, całe metody, instrukcje warunkowe – ogólnie to co zaczynasz pisać to podpowiada jak tego użyć i z czym. Ledwo zaczynasz pisać nazwę klasy, a ten myk podpowiada własności i konstruktor. Piszesz command handler? Myk i gotowy!

Przykład Copilota ze strony GitHub

Załóżmy że masz Bundle (taki segregator pod różny kod) o nazwie UserBundle i tam masz encję User, repozytorium UserRepository i chcesz napisać Command i Command handler pod utworzenie nowego Usera. No to na spokojnie – tworzysz sobie foldery i inne tego typu, a w nich plik Command i co się dzieje? Ledwo napiszesz słowo class, a to już podpowiada nazwę CreateUserCommand oraz własności, jakby po prostu czytał w myślach że chcesz napisać DTO – ok akceptujesz to co ci się podoba, resztę wywalasz (dosyć często podpowiadanie jest nadmiarowe) i masz w 1 sekundę coś co się pisze trochę dłużej 😄

Czy po tych bardziej skomplikowanych nazwach czujecie co się dzieje? Czujecie tę moc?

Osobiście po utracie tego triala zacząłem lamentować, bo mój przyjaciel od kodu zniknął. Jednakże jest promień nadziei, że kiedyś sobie wykupię dostęp do tego narzędzia, do tego AI.

Komu polecam GitHub Copilot? No chyba leniom, co chcą pisać dużo kodu, w dobrej jakości w relatywnym krótkim czasie. Natomiast też odradzam początkującym, którzy na pewno nie będą wiedzieć co z tego kodu jest potrzebne, a co można wywalić i też nie będą do końca wiedzieć o co w nim chodzi.

Inne AI podpowiadające kod

Wiem że jest jeszcze Kite, ale to pominąłem ze względu na to, że ani razu tego nie użyłem. Wiecie: trudno się pisze o czymś czego się nie poznało. No ale może ktoś z was już próbował? Dajcie znać 😎

Podsumowanie

Oto jest nagroda za przeczytanie mojego wpisu 😘

To jak działa sztuczna inteligencja i jak bardzo jest trafna oczywiście wymaga czasu, ale już dzisiaj potrafi bardzo wiele. Tak jak widzieliście, odradzam stosowanie AI początkującym programistom, ale tylko dlatego, aby mieli większą szansę więcej się nauczyć. Osobom, które znają podstawy w tym OOP i kilka wzorców projektowych oraz przynajmniej kilka zasad programowania (przynajmniej samo SOLID) mogę takie AI polecić – wtedy czuć, że ten kod coś znaczy 😄

Dziękuję bardzo, że jesteście ze mną i do następnego!

Subscribe
Powiadom o
guest
0 komentarzy
Inline Feedbacks
View all comments
Włączyć powiadomienia? Bardzo pragnę Dam sobie radę