Blog IT, Blog Marketing

MICS – nowy silnik semantycznej analizy porównawczej kodu prosto z MIT

MICS – nowy silnik semantycznej analizy porównawczej kodu prosto z MIT

Maciej Olanicki , 03.08.2020 r.

Regularnie w Sieci publikowane są doniesienia o kolejnych etapach algorytmów uczonych maszynowo w celu pisania programów, co miałoby docelowo prowadzić do bezrobocia technologicznego wśród ludzkich programistów. Na razie jest to jednak dość odległa wizja, co nie znaczy, że nie są opracowywane autonomiczne narzędzia dalece automatyzujące codzienne zadania programisty.

Machine Inferred Code Similarity

Jednym z nich jest Machine Inferred Code Similarity silnik opracowany przez ekspertów z MIT, Georgia Institute of Technology oraz pracowników Intela, który służy maszynowemu porównywaniu bloków kodu. Głównym zastosowaniem MICS jest sprawdzenie, czy dwa bloki kodu realizują te same zadania, nawet jeśli mają one zupełnie inną strukturę i wykorzystują inne algorytmy. Sami twórcy owoce swojej pracy podsumowują następująco:


Zaprezentowaliśmy MICS, system porównujący podobieństwo kodu end-to-end. MICS wnosi dwie główne nowości. Pierwszą jest kontekstowa struktura semantyczna (CASS) zaprojektowana tak, by obsługiwać znaczenia semantyczne dla składni kodu. Druga to neuronowy system szacowania podobieństw z użyciem CASS. Nasze eksperymenty wykazały, że MICS wielokrotnie przewyższa trzy inne systemy sprawdzania podobieństw kodu (jest skuteczniejszy nawet o 40,6 razy).

MICS ma stanowić odpowiedź na bieżące realia, kiedy coraz częściej mamy do czynienia z przeprowadzaniem obliczeń w środowisko heterogenicznym – coraz więcej urządzeń wykorzystuje układy w architekturze ARM, podczas gdy inne trwają przy x86, a to rodzi konkretne wyzwania. W jednym środowisku działać musi kod kompilowany na różne architektury i to między innymi w takich scenariuszach sprawdzić się ma MICS.

CASS, czyli context-aware semantic structure

Jak wspomnieli sami naukowcy, jedną z największych innowacji wprowadzonych przez Machine Inferred Code Similarity jest możliwość pracy silnika ze „świadomością” kontekstu, czy też po prostu kontekstualna semantyczna analiza przetwarzanego i porównywanego kodu. W pierwszym etapie fragmenty kodu (w eksperymencie posłużono się kodem w C/C++) są zatem przetwarzane wspomnianą metodologią CASS.

mics-1

W kolejnym etapie natomiast, na podstawie rezultatów CASS, wprowadzany jest szacowany współczynnik podobieństwa. I nie chodzi tu rzecz jasna o podobieństwo strukturalne, lecz funkcjonalne. MICS jest bowiem w stanie rozpoznać rezultaty działania kodu i poprawnie zidentyfikować, że rozwiązują one ten sam problem, nawet jeśli robią to w zupełnie inny sposób, wykorzystując zupełnie inną strukturę kodu i algorytm.

Rezultaty i zastosowania

Aktualnie trwają prace nad tym, by silnik MICS przeszedł z fazy testowej i demonstracyjnej do dojrzałości umożliwiającej stosowanie go w praktyce. Docelowo ma on znaleźć zastosowanie w takich zadaniach, jak sugerowanie programistom całych bloków kodu, podobnie jak ma to dziś z pojedynczymi elementami składni w takich mechanizmach, jak m.in. IntelliSens w IDE z rodziny Visual Studio czy ML Complete dla języka Dart.

mics-2

W rezultacie MICS mógłby analizować z uwzględnieniem kontekstu zastosowanie jakiegoś bloku kodu i sugerować lepsze, prostsze i bardziej zoptymalizowane rozwiązanie problemu. Nie tylko przełożyłoby się to zatem na jakość wytwarzanego oprogramowania, być może nawet na poziomie pozwalającym unikać takich problemów jak code smell, ale też zredukowało czas poświęcany na debugowanie kodu.

Najnowsze oferty pracy:

Polecane wpisy na blogu IT:

Szukasz pracownika IT?

Dostarczymy Ci najlepszych specjalistów z branży IT. Wyślij zapytanie

Wyrażam zgodę TeamQuest Sp. z o.o. na przetwarzanie moich danych osobowych w celu marketingu produktów i usług własnych TeamQuest, w tym na kontaktowanie się ze mną w formie połączenia telefonicznego lub środkami elektronicznymi.
Administratorem podanych przez Ciebie danych osobowych jest TeamQuest Sp. z o.o., z siedzibą w Warszawie (00-814), ul. Miedziana 3a/21, zwana dalej „Administratorem".
Jeśli masz jakiekolwiek pytania odnośnie przetwarzania przez nas Twoich danych, skontaktuj się z naszym Inspektorem Ochrony Danych (IOD). Do Twojej dyspozycji jest pod adresem e-mail: office@teamquest.pl.
W jakim celu i na jakiej podstawie będziemy wykorzystywać Twoje dane? Dowiedz się więcej