В MIT создали язык программирования Ur/Web, объединяющий возможности HTML, CSS и JavaScript
Создание относительно сложной веб-страницы требует понимания целого ряда языков, включая HTML, CSS и JavaScript. Исследователи из Массачусетского технологического института утверждают, что интегрировали все эти технологии в новый единый язык программирования, позволяющий упростить и ускорить разработку веб-сайтов и сделать их надежнее и безопаснее.
Язык под названием Ur/Web позволит разработчикам создавать веб-страницы как самостоятельные замкнутые программы. А, так как он включает большинство самых популярных из современных веб-технологий, разработчик будет освобожден от работы с каждым из языков по отдельности.
«Я думаю, что этот язык может найти очень широкое применение, так как он способен сократить издержки на веб-разработку во многих случаях», — заявил создатель Ur/Web Адам Члипала (Adam Chlipala), помощник профессора из Массачусетского технологического института.
Ur/Web включает в себя функции и возможности всех отдельных языков, на которых пишутся веб-сайты, и компилирует их в исполняемый машинный код. Так как код Ur/Web скомпилирован заранее, производительность получается гораздо более высокой по сравнению с традиционными методами разработки веб-сайтов, утверждает Члипала. В одном из тестов Ur/Web показал в два раза более высокую скорость по сравнению с PHP.
«В Ur/Web все базируется на транзакциях, когда каждый клиентский запрос обрабатывается поочередно своего рода центральной функцией, — объяснил автор. — Язык при этом оптимизирован с той целью, чтобы он мог обрабатывать одновременно множество параллельных запросов на физических серверах».
Помимо облегчения для части разработчиков, новый язык привносит некоторые новые механизмы, помогающие повысить надежность и безопасность сайтов. Так, он позволяет исключить возможность взаимодействия между различными элементами на одной странице — например, кодом рекламного объявления и виджетом календаря.
Кроме того, как и традиционные языки программирования, такие как C, Pascal и Java, и в отличие от веб-языков, таких как JavaScript, Ur/Web имеет жесткую типизацию. То есть все переменные связываются с определенным типом данных в самом начале, и затем этот тип уже нельзя изменить. Это затрудняет взлом сайта посредством отправки специальным образом сформированных команд с помощью форм на веб-страницах. Ur/Web также поддерживает задание областей видимости переменных, то есть позволяет ограничить те места, из которых переменная в программе может быть вызвана.
Но есть у нового языка и недостаток. Он требует освоения функционального программирования. Эта задача будет сложной для тех, кто привык иметь дело с процедурными и объектно-ориентированными языками (С, Pascal). Члипала сравнил Ur/Web с функциональным языком программирования Haskell. Многие программисты считают его чем-то потусторонним, но небольшая группа разработчиков любит и почитает этот язык за его вычислительные возможности.