В Массачусетском технологическом институте разрабатывают язык программирования Sketch, позволяющий при реализации некоторой функциональности только указывать условие задачи, а код для ее решения генерируется автоматически. Авторы Sketch называют этот процесс «синтезом программ». Со временем, когда Sketch доработают и сделают более дружественным пользователю, он сможет облегчить труд программистов, а пока язык используется в основе других инструментов. В частности, на базе Sketch созданы система автоматического выставления оценок за выполнение учебных заданий по программированию, система преобразования в код нарисованных от руки блок-схем и транслятор кода на Java в SQL-запросы.
Sketch работает, оценивая огромное количество вариантов реализации заданной функции и отыскивая тот из них, который отвечает условиям, поставленным программистом. Когда задача сложная, процесс перебора может затянуться слишком надолго. Недавно разработчики Sketch сообщили об усовершенствовании, благодаря которому язык стал гораздо эффективнее справляться со сложными задачами синтеза кода. В частности, в случаях, когда система автоматического оценивания «зависала», в новой версии Sketch оценка выставляется мгновенно.
Авторы признают, что понадобится еще немало труда, чтобы Sketch cмогли пользоваться разработчики коммерческого программного обеспечения; пока что, если вы не знаете внутренних особенностей системы, трудно составить условие задачи так, чтобы код генерировался быстро и был высокоэффективным.
Источник: Christine Daniloff/MIT |