Sketch - новый язык программирования, способный самостоятельно оптимизировать и завершать незаконченные участки кода
Еще во время бытности аспирантом Армандо Солар-Лесама (Armando Solar-Lezama), ныне адъюнкт-профессор Отдела электротехники и искусственного интеллекта Массачусетского технологического института, работал над разработкой нового языка программирования под названием Sketch. Вся прелесть этого языка заключается в том, что он позволяет программистам при написании программ опускать некоторые из участков кода и заполняет эти промежутки самостоятельно, оптимизируя при этом получившиеся конструкции.
Главной целью создания языка Sketch является облегчение участи программистов. Тем не менее, создатели этого языка преследуют еще одну более глобальную цель, заключающуюся в создании программных инструментов, выполняющих функцию автоматического синтеза программ, создания программ самими компьютерами без участия в этом деле человека.
При помощи созданного компилятора языка Sketch специалистами Лаборатории информатики и искусственного интеллекта уже были реализованы несколько проектов. Одним из таких проектов является система, предназначенная для учебных классов по информатике, способная преобразовать произвольно нарисованные диаграммы и блок-схемы алгоритмов в исполняемый машинный код. Еще одним из проектов является система, производящая код запросов к базе данных SQL на языке Java.
Исследования, проведенные специалистами различных подразделений Массачусетского технологического института, показали, что самая высокая эффективность использования языка Sketch достигается при решении сложных многосторонних задач. Более того, компилятор языка Sketch можно использовать в качестве своего рода корректировщика кода, последняя версия этого компилятора оказалась способной самостоятельно устранить ошибки, допущенные студентами в коде написанных ими программ.
Основной идеей, реализованной в виде компилятора языка Sketch, является метод поиска оптимального решения определенной задачи. Известно, что любая логическая и математическая задача может быть решена несколькими путями, количество которых, в некоторых случаях, может стремиться к бесконечности. И если оцениваемая компилятором программа весьма сложна, то количество решений ее реализации очень и очень велико, а поиск оптимального решения может занять огромное время. Создатели языка Sketch нашли способ значительно сократить область поиска решений, благодаря чему поиск оптимального решения занимает исчисляемое миллисекундами время.
Разработчики видят дальнейший путь развития языка Sketch в предоставлении возможностей программисту задать набор критериев, которым должны удовлетворять участки кода, отдельные функции и вся программа в целом, после чего компилятор Sketch сможет составить функции и участки кода, соответствующие этим критериям. Фактически это может стать более сложной задачей для самого программиста, которому в некоторых случаях придется описывать множество разноплановых критериев. Тем не менее, такой подход позволит решать при помощи языка Sketch весьма сложные задачи, при этом гораздо быстрее, чем при традиционном программировании.
Разработчики языка Sketch признают, что им предстоит еще "перевернуть горы", прежде чем язык Sketch сможет выйти на уровень практического применения. В некоторых тестах компилятору требуется много времени для синтеза машинного кода, и это связано с изначально недостаточной точностью описания задачи. "Пока все это требует от программиста глобального понимания всей задачи в целом и умения использовать все тонкости процесса автоматического синтеза программ. Но по мере дальнейшего развития наш компилятор и наш язык будут становиться все более интеллектуальными, что позволит осуществить быстрый и безболезненный переход на язык Sketch с большинства популярных языков программирования".