Krok bliżej do programowania maszynowego

Naukowcy ze Stanów Zjednoczonych opracowują silnik sztucznej inteligencji, który może analizować podobieństwa i różnice w kodzie aplikacji i na tej podstawie ustalać, co ten kod robi. To krok w kierunku automatyzacji tworzenia oprogramowania.

Silnik sztucznej inteligencji, który będzie w stanie zrozumieć, jak działają i do czego służą poszczególne elementy kodu, może znacząco zmienić sposób, w jaki tworzone jest oprogramowanie. Narodzi się programowanie maszynowe – dzięki niemu każdy będzie mógł, z pomocą SI, napisać własny program. Wystarczy przedstawić swoje intencje i oczekiwany rezultat (aplikację), na przykład za pomocą tradycyjnych instrukcji albo systemu przetwarzania języka naturalnego, a SI opracuje zgodny z tymi założeniami kod.

W projekcie Machine Inferred Code Similarity, którego celem jest opracowanie takiego systemu, uczestniczą badacze z firmy Intel oraz dwóch amerykańskich uczelni technicznych: Massachusetts Institute of Technology i Georgia Institute of Technology.

Zobacz również:

Badacze z Intel Labs i MIT użyli terminu "programowanie maszynowe" w pracy The Three Pillars of Machine Programming. Ich zdaniem

poziom złożoności współczesnych systemów informatycznych, tak na poziomie sprzętowym, jak i programowym, w połączeniu z niedoborami wykwalifikowanych programistów zdolnych do tworzenia aplikacji dla różnych platform i architektur, wymaga zmiany w podejściu do pisania oprogramowania.

Zmiana ta powinna polegać na zastosowaniu zautomatyzowanych narzędzi programistycznych. A technologią u podstawy takich narzędzi jest analiza porównawcza poszczególnych bloków kodu.

Proste systemy analizy porównawczej są już stosowane – na przykład do wykrywania plagiatów. To, co odróżnia MICS od takich narzędzi, to możliwość analizy kontekstowej. Kontekstowa struktura semantyczna silnika może być skonfigurowana na potrzeby konkretnego kontekstu, umożliwiając bardziej szczegółową analizę kodu. Silnik może ocenić, czy dane fragmenty kodu wykonują te same zadania, nawet gdy bazują na innych algorytmach. Innymi słowy, jeżeli dwa fragmenty kodu wyglądają inaczej pod względem strukturalnym, ale są podobne funkcjonalnie, silnik – znając rezultaty ich działania – uzna je za w dużej mierze zbliżone.

Krok bliżej do programowania maszynowego

Jak działa system MISIM (źródło: Intel, MIT, Georgia Tech)

Ponadto silnik może działać bez konieczności używania kompilatora, tłumaczącego zrozumiały dla człowieka kod źródłowy na kod maszynowy wykonywany przez komputer. Oznacza to możliwość wykonywania niekompletnych bloków kodu – fragmentów oprogramowania, nad którym wciąż trwają prace programistyczne.

Tym samym sztuczna inteligencja, proponując programistom użycie bardziej funkcjonalnych – lub zoptymalizowanych dla danej sytuacji – bloków kodu może przyczynić się do skrócenia czasu potrzebnego na rozwój oprogramowania oraz jego debugowania.

Jak twierdzą zaangażowani w projekt naukowcy, pierwsze testy MICS-a wykazały jego ponad 40-krotnie wyższą skuteczność w identyfikowaniu podobnych bloków kodu w porównaniu do zbliżonych, a powstałych wcześniej systemów.

Więcej informacji o projekcie Machine Inferred Code Similarity.


TOP 200