Menu

Sketch - нова мова програмування, здатний самостійно оптимізувати і завершувати незакінчені ділянки коду

Sketch - новый язык программирования, способный самостоятельно оптимизировать и завершать незаконченные участки кода


Ще під час перебування аспірантом, Армандо Солар-Лесама (Armando Solar-Lezama), нині ад'юнкт-професор Відділу електротехніки і штучного інтелекту Массачусетського технологічного інституту, працював над розробкою нової мови програмування під назвою Sketch. Вся принадність цієї мови полягає в тому, що він дозволяє програмістам при написанні програм опускати деякі з ділянок коду і заповнює ці проміжки самостійно, оптимізуючи при цьому отримані конструкції.

Головною метою створення мови Sketch є полегшення долі програмістів. Тим не менш, творці цієї мови переслідують ще одну більш глобальну мету, яка полягає у створенні програмних інструментів, що виконують функцію автоматичного синтезу програм, створення програм самими комп'ютерами без участі в цьому ділі людини.

За допомогою створеного компілятора мови Sketch фахівцями Лабораторії інформатики і штучного інтелекту вже були реалізовані кілька проектів. Одним з таких проектів є система, призначена для навчальних класів з інформатики, здатна перетворити довільно намальовані діаграма та блок-схеми алгоритмів у виконуваний машинний код. Ще одним з проектів є система, що виробляє код запитів до бази даних SQL на мові Java.

Дослідження, проведені фахівцями різних підрозділів Массачусетського технологічного інституту, показали, що найбільш висока ефективність використання мови Sketch досягається при вирішенні складних багатосторонніх завдань. Більш того, компілятор мови Sketch можна використовувати в якості свого роду коригувальника коду, остання версія цього компілятора виявилася здатною самостійно усунути помилки, допущені студентами в коді написаних ними програм.

Основною ідеєю, реалізованої у вигляді компілятора мови Sketch, є метод пошуку оптимального вирішення певної задачі. Відомо, що будь-яка логічна і математична задача може бути вирішена декількома шляхами, кількість яких, в деяких випадках, може прагнути до нескінченності. І якщо оцінювана компілятором програма досить складна, то кількість рішень її реалізації дуже і дуже велике, а пошук оптимального рішення може зайняти дуже багато часу. Творці мови Sketch знайшли спосіб значно звузити область пошуку рішень, завдяки чому пошук оптимального рішення займає вимірюване мілісекундами час.

Розробники бачать подальший шлях розвитку мови Sketch у наданні можливостей програмісту задати набір критеріїв, яким повинні задовольняти ділянки коду, окремі функції і вся програма в цілому, після чого компілятор Sketch зможе скласти функції і ділянки коду, що відповідають цим критеріям. Фактично це може стати більш складним завданням для самого програміста, якого в деяких випадках доведеться описувати безліч різнопланових критеріїв. Тим не менш, такий підхід дозволить вирішувати за допомогою мови Sketch досить складні завдання, при цьому набагато швидше, ніж при традиційному програмуванні.

Розробники мови Sketch визнають, що їм належить ще "перевернути гори", перш ніж мова Sketch зможе вийти на рівень практичного застосування. У деяких тестах компілятору потрібно багато часу для синтезу машинного коду і це пов'язано спочатку з недостатньою точністю опису задачі. "Поки все це вимагає від програміста глобального розуміння всієї задачі в цілому та вміння використовувати всі тонкощі процесу автоматичного синтезу програм. Але по мірі подальшого розвитку наш компілятор і наш язик будуть ставати все більш інтелектуальними, що дозволить здійснити швидкий і безболісний перехід на мову Sketch з більшості популярних мов програмування".

|