Sztuczna inteligencja potrafi już debugować swój własny kod
Wieszczenie rychłego całkowitego zastąpienia ludzkich programistów przez sztuczną inteligencję to sprawdzony sposób na clickbait. Jest to rzeczna jasna mało prawdopodobne, niemniej szybkie doskonalenie sztucznej inteligencji w zakresie pisania kodu, a nawet coraz częściej rozwiązywania problemów jest faktem. Przykład może stanowić opracowane przez Microsoft narzędzie Jigsaw.
AI jak przeciętny developer
Trzeba przyznać, że to właśnie Microsoft bodaj najśmielej eksperymentuje z zastosowaniami sztucznej inteligencji w maszynowej produkcji oprogramowania, ale duże osiągnięcia ma także Google. W lutym poruszaliśmy temat algorytmu AlphaCode, o czym można poczytać tutaj. AI uczyło się na bazie 715 GB kodu między innymi w C++, C#, Go, Javie, JS czy Pythonie i trzeba przyznać, że rezultaty był imponujące.
Na bazie DeepMind udało się zbudować sztuczną inteligencję wyspecjalizowaną w pisaniu kodu na poziomie porównywalnym z przeciętnym developerem. Wówczas jednak chodziło o programowanie kompetytywne, co może nieco wypaczać rezultaty. Nie zmienia to faktu, że udział w konkurencji wymagał już nie tylko generowania kodu, ale także „obmyślenia” algorytmu i na tym polu AlphaCode także wypadł bardzo dobrze.
Microsoft Jigsaw – automatyczne debugowanie kodu AI
Opracowanie AI, które będzie rozwiązywać problemy, tworzyć algorytmy i maszynowo generować kod może się jednak okazać dopiero pierwszym krokiem. W teorii mogłoby się bowiem wydawać, że maszyna będzie pisać kod idealny, pozbawiony jakichkolwiek mankamentów, bezpieczny i wydajny. W praktyce jednak każde z tych zagadnień wymaga kolejnych procesów głębokiego uczenia i praca nad nimi zajmie raczej lata niż miesiące.
Microsoft wyszedł więc z założenia, że konieczne jest opracowanie oddzielnego od kodującego AI narzędzia, które pozwoli na… automatyzację debugowania kodu napisanego przez maszynę. W rezultacie powstał Microsoft Jigsaw – skaner, który ma zatroszczyć się o jakość generowanego przez AI kodu w ramach post-processingu. Zadaniem Jigsaw jest zatem w pełny zautomatyzowane przetwarzanie składni i semantyki i wdrażanie poprawek. Więcej na ten temat można przeczytać tutaj.
Powiedz, przyjacielu i Jigsaw sam wygeneruje kod
Jigsaw sam w sobie nie stanowi novum, lecz wykorzystuje do analizy uznane już modele, np. GPT-3 oraz OpenAI Codex. To z kolei pozwala nie tylko na automatyczne debugowanie kodu, ale docelowo także na przetwarzanie języka naturalnego na kod i jego automatyczne debugowanie! Może to w przyszłości zrewolucjonizować platformy low-code i no-code. Niewykluczone, że w przyszłości pisać proste aplikacje będzie można z użyciem angielskiego – „napiszemy” maszynie, o co chodzi, a ona sama wygeneruje odpowiadający algorytmowi kod, a osobne AI, np. Jigsaw, dodatkowo będzie je debugować.
Rzecz jasna jest to wizja cokolwiek odległa, wręcz futurystyczna. Nie sposób jednak zaprzeczyć, że w ostatnich lat dokonał się ogromny postęp w zakresie automatyzacji wielu zadań stojących przed programistami i testerami z użyciem elementów wyspecjalizowanej sztucznej inteligencji. Rozbudowanie autosugestie w IDE i edytorach, narzędzia do automatyzacji wielu procesów to tylko pojedyncze przykłady. Jest więc duże prawdopodobieństwo, że AI będzie także wykorzystywane do wspomagania procesu debugowania.