Исследовательская группа, возглавляемая Джонатаном Олдричем, доцентом Института исследований программного обеспечения (ISR), разрабатывает язык программирования под названием Wyvern, который позволяет создавать программы с использованием различных целевых, предметно-ориентированных языков, таких как SQL для запросов. базы данных или HTML для создания веб-страниц в качестве подъязыков, а не для написания всей программы с использованием языка общего назначения.Wyvern определяет, какой подъязык используется в программе, в зависимости от типа данных, которыми манипулирует программист.
Типы определяют формат данных, например буквенно-цифровые символы, числа с плавающей запятой или более сложные структуры данных, такие как веб-страницы и запросы к базе данных.Тип обеспечивает контекст, позволяющий Wyvern определять подъязык, связанный с этим типом, так же, как человек мог бы понять, что разговор об ужине для гурманов может включать некоторые французские слова и фразы, объяснил Джошуа Саншайн, системный ученый ISR.«Виверн похож на опытного международного переговорщика, который может плавно переключаться между языками, чтобы собрать вместе целую команду людей», — сказал Олдрич. «Такой человек может быть чрезвычайно эффективным, и я также думаю, что наш новый подход может иметь большое влияние на создание программных систем».Многие задачи программирования могут включать несколько языков; при создании веб-страницы, например, HTML может использоваться для создания основной части страницы, но программист может также включать SQL для доступа к базам данных и JavaScript для обеспечения взаимодействия с пользователем.
По словам Олдрича, с помощью языков, зависящих от типа, Wyvern может упростить эту задачу для программиста, а также избежать обходных путей, которые могут привести к уязвимостям безопасности.Одна из распространенных, но проблемных практик — это склеивание строк символов для формирования команды на специализированном языке, таком как SQL, в программе.
Однако, если эта практика не будет реализована должным образом, компьютеры могут стать уязвимыми для двух наиболее серьезных угроз безопасности в Интернете сегодня — атак с использованием межсайтовых сценариев и атак с использованием SQL-инъекций. В последнем случае, например, кто-то со знанием компьютерных систем может использовать форму логина / пароля или форму заказа на веб-сайте, чтобы ввести команду DROP TABLE, которая может стереть базу данных.
«Wyvern сделает ненужным использование строк для этой цели и тем самым устранит всевозможные уязвимости, связанные с инъекциями», — сказал Олдрич.Предыдущие попытки разработать языки программирования, которые могли бы понимать другие языки, наталкивались на компромисс между компоновкой и выразительностью; они были либо ограничены в своей способности однозначно определять, какой встроенный язык использовался, либо ограничены в том, какие встроенные языки могут использоваться.«С Wyvern мы позволяем вам использовать эти языки и определять новые, не беспокоясь о композиции», — сказал Сайрус Омар, доктор философии. студент факультета компьютерных наук и ведущий разработчик типо-ориентированного языкового подхода Wyvern.
Омар отметил, что Wyvern еще не полностью спроектирован, но это проект с открытым исходным кодом, готовый для экспериментального использования ранними последователями. Дополнительная информация доступна на http://www.cs.cmu.edu/~aldrich/wyvern/.
Этот документ можно найти в Интернете по адресу: http://www.cs.cmu.edu/~aldrich/papers/ecoop14-tsls.pdf.
