Sztuczna inteligencja już dziś pisze kod za programistę, czy jutro go zastąpi?

Strona główna Aktualności

O autorze

Komputerowe wspomaganie programowania to nic nowego. Współczesne środowiska deweloperskie prowadzą programistów praktycznie za rękę. Dodajmy do tego jeszcze serwis StackOverflow, zawierający wszystkie chyba możliwe rozwiązania wszystkich możliwych programistycznych problemów, a widać, że poprzeczka dla programistów jest dziś zawieszona o wiele niżej, niż w czasach aktywności zawodowej ich ojców i dziadów. Czy można ją obniżyć jeszcze bardziej? Informatycy z Rice University w Teksasie uważają że tak. Przedstawili narzędzie o nazwie Bayou, które w dużym stopniu zastępuje programistę w pisaniu kodu w Javie.

Automatyczne uzupełnianie kodu widział chyba każdy, kto miał okazję skorzystać z IDE takich jak VisualStudio czy Eclipse. Bayou potrafi jednak znacznie więcej – podany mu szkielet programu w Javie przekształca w pełen działający kod, wykorzystując zasygnalizowane mu przez programistę nazwy metod i typy zmiennych. Wykorzystuje w tym celu sieć neuronową – i najwyraźniej potrafi znacznie więcej, niż zastąpienie kikutu kodu jednym poprawnym rozwiązaniem.

Jak wyjaśniają w artykule pt. Neural Sketch Learning for Conditional Program Generation twórcy Bayou, amerykańscy informatycy Vijayaraghavan Murali, Letao Qi, Swarat Chaudhuri i Chris Jermaine, wykorzystywana jest w tym celu nowatorska sieć neuronowa, gaussowski koder-dekoder, działającym na zbiorze próbek kodu źródłowego, pobranych z GitHuba. Podczas szkolenia Bayou przekształca kod źródłowy w syntaktyczne, drzewiaste modele kodu, tzw. szkice, z których znikają wszystkie niskopoziomowe nazwy i operacje, zachowana zaś zostaje struktura kodu, kolejność wywoływania metod interfejsów oraz typy przyjmowanych i zwracanych danych.

Następnie sieć neuronowa wykorzystuje te dane do dopasowania wyuczonych modeli do wprowadzonego zapytania i zwraca najlepiej pasujące rezultaty. Póki co z pewnymi ograniczeniami – obsługuje tylko trzy API ( java.lang, java.io i java.util), nie radzi sobie z dzikimi kartami w typach generycznych, zwraca też tylko najbardziej typowe rozwiązania, najczęściej spotykane wśród programistów.

import java.io.File;
public class Test {
void read(File file) {
{
/// call:readLine
}
}
}
Kod wpisany przez programistę...

Dostępne jednak w sieci interaktywne demo AskBayou pokazuje, że już dziś rozwiązanie to sporo potrafi. Po stworzeniu szkicu kodu zawierającego jedną „dziurę” – brakujący blok kodu, sieć neuronowa zamieni podane jej w specjalnej notacji zapytanie w prawdopodobnie najlepszy kod wybrany ze zbiór najbardziej dostępnych rozwiązań zawierających wskazane metody i typy danych.

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.io.FileReader;
public class TestIO {
void read(File file) {
{
FileReader fr1;
BufferedReader br1;
String s1;
try {
fr1 = new FileReader(file);
br1 = new BufferedReader(fr1);
s1 = br1.readLine();
} catch (FileNotFoundException _e) {
} catch (IOException _e) {
}
return;
}
}
}
...i jego uzupełnienie przez Bayou

W przyszłości Bayou przyniesie jeszcze więcej. Już niebawem ma zyskać interaktywność, wbudowany w środowiska deweloperskie będzie sugerował całe fragmenty kodu gdy programista pisze swój kod. Docelowo ma być w stanie generować całe grupy metod czy klas. Doczeka się nawet obsługi języka naturalnego zamiast specjalnych notacji zapytań, tak aby uczynić programowanie dostępnym jeszcze większej liczbie ludzi.

No cóż, niewykluczone, że za 10-15 lat zawód korporacyjnego programisty po prostu przestanie istnieć: wystarczą kompetentni analitycy, którzy sieciom neurowym będą przedstawiali wystarczająco precyzyjne specyfikacje potrzeb biznesu. Kod aplikacji napisze się wówczas sam, i to bez tej całej magii scrum masterów.

© dobreprogramy
s