
Чтобы упростить разработку программ, поддерживаемый Национальным научным фондом (NSF) проект под названием Expeditions in Computer Augmented Program Engineering (ExCAPE) разрабатывает технологию, которая предоставляет операторам автоматизированную помощь.
«Компьютеры произвели революцию в нашей повседневной жизни, и все же то, как мы программируем компьютеры, мало изменилось за последние несколько десятилетий», — сказал Раджив Алур, профессор кафедры информатики и информатики Университета Пенсильвании.
Алур возглавляет команду исследователей, представляющих девять ведущих программ по информатике в США.S. — который сотрудничает в проекте ExCAPE. NSF поддерживает ExCAPE с пятилетней премией Expeditions in Computing в размере 10 миллионов долларов, которая финансирует междисциплинарные исследовательские группы, работающие над преобразованием вычислений и технологий.
Алур сказал, что команда решает давнюю проблему: «Разработка программного обеспечения остается утомительной и подверженной ошибкам деятельностью."
Однако, используя модель программирования, называемую автоматическим синтезом программ, компьютеры могут генерировать фрагменты кода на основе намерений пользователя, выраженных с использованием различных форм, не основанных на коде, таких как примеры, демонстрации или команды естественного языка.
«ExCAPE стремится превратить программирование с чисто ручной задачи в задачу, в которой программист и инструмент автоматического синтеза программ могут сотрудничать для создания программного обеспечения, соответствующего его спецификации», — сказал Алур.
Устраняя потребность потенциальных программистов в изучении эзотерических языков программирования, этот метод может значительно расширить число людей, занимающихся программированием в различных дисциплинах, от персонализированного обучения до робототехники.
Инструменты программирования
Появляющаяся технология, известная как программно-определяемые сети (SDN), позволяет операторам сети адаптировать компьютерную сеть к проходящему в ней трафику, тем самым повышая эффективность. Однако большинство сетевых операторов не являются традиционными программистами и, как следствие, не могут в полной мере воспользоваться всеми предлагаемыми технологиями.
Чтобы устранить этот недостаток, команда ExCAPE разработала инструмент под названием NetEgg, который позволяет оператору сети определять желаемую функциональность коммутатора на примерах. Затем NetEgg автоматически генерирует код, необходимый для реализации этого поведения, обеспечивая при этом максимальную пропускную способность для сетевого трафика.
Запатентованный продукт NetEgg уже был протестирован в учебных классах и составляет основу проекта NSF I-Corps, в котором рассматривается переход продукта к коммерческому развертыванию.
Компьютерное образование и не только
Глядя на растущую область онлайн-обучения, команда ExCAPE также признала роль, которую инструменты синтеза программ могут играть в генерировании автоматической обратной связи для студентов — анализе их решений, оценке их заданий и предоставлении значимых объяснений их ошибок.
Вот почему команда создала Automata Tutor, которым воспользовались более 5000 студентов из более чем 10 университетов по всему миру.
Алур и его коллеги представили результаты раннего развертывания Automata Tutor в транзакциях ACM по взаимодействию компьютера и человека и на Международной совместной конференции по искусственному интеллекту.
Группа создала другие инструменты, в том числе AutoProf, который предоставляет отзывы о вводных заданиях по программированию на компьютерных языках, таких как Python.
Другой инструмент, CPSgrader, автоматически оценивает лабораторные курсы по киберфизическим системам и предоставляет обратную связь.
В более широком смысле, команда ExCAPE смогла разработать метод, который формализовал и стандартизировал основную вычислительную проблему в новых инструментах синтеза. Новый метод, получивший название Syntax-Guided Synthesis, позволил команде создать несколько прототипов решателей за последние два года.
«Эти усилия сыграли важную роль в продвижении новейших вычислительных подходов и облегчили новые применения программного синтеза, например, в автоматической оптимизации программ для квантовых компьютеров», — сказал Алур.
Принятие в отрасли
Исследование команды ExCAPE повлияло и на мир коммерческого программного обеспечения. Идея синтеза на основе синтаксиса вдохновила Microsoft на создание автоматизированных программных синтезаторов для своего набора программного обеспечения.
«В Microsoft мы вложили значительные средства в сферу синтеза программ, особенно в программирование на основе примеров, и в приложения для программирования конечных пользователей», — сказал Сумит Гулвани из Microsoft Research, США.
Microsoft начала с разработки синтезаторов для конкретных предметных областей, таких как FlashFill и FlashExtract, каждый из которых использует примеры для генерации настраиваемого кода, повышающего эффективность.
FlashFill, который был выпущен как функция Microsoft Excel 2013, позволяет вводить данные, введенные в один столбец таблицы рабочего листа, в новый столбец таблицы, используя всего несколько нажатий клавиш. FlashExtract, который был включен в Microsoft PowerShell и Operations Management Suite, извлекает структурированные данные из полуструктурированных файлов журнала на примерах.
Технологический гигант также разработал универсальный синтезатор на основе примеров под названием FlashMeta.
«Все наши текущие разработки синтезаторов-примеров в Microsoft для различных областей теперь выполняются на основе FlashMeta», — сказал Гулвани. «Фактически, мы создали целую группу исследователей и инженеров для разработки этого фреймворка под названием PROSE. Это позволило повысить эффективность всего процесса разработки на порядок."
В ближайшие годы процесс использования языков кодирования для программирования можно будет рассматривать как эволюционный шаг в вычислениях, так же как другие методы заменили перфокарты и языки ассемблера, используемые для программирования ранних компьютеров.
«Этот проект основан на десятилетиях фундаментальных достижений в области формальных методов и языков программирования», — говорит Нина Амла, программный директор отдела вычислительных и коммуникационных основ NSF. "Это свидетельствует о смене парадигмы в том, как мы обучаем основным принципам программирования и разрабатываем надежные программные системы."
