Curl — рефлексивный объектно-ориентированный язык программирования, созданный для написания интерактивных веб-приложений. Объединяет возможности разметки текста (как у HTML), написание сценариев (как JavaScript), а также достаточно мощный вычислительный механизм (как у Java, C# и C++), причём внутри единого унифицированного фреймворка. Используется главным образом для решений внутрикорпоративных задач, B2B- и B2C-приложений.
Является языком разметки как HTML, то есть обычный текст показывается именно как текст; но в то же время, язык включает средства объектно-ориентированного программирования, среди которых — поддержка множественного наследования. Curl-приложения не требуют соблюдения разделения информации, стиля и поведения, как это сделано для HTML, CSS и JavaScript, хотя этот стиль программирования вполне может быть использован в Curl в случае необходимости.
С одной стороны язык может использоваться как замена HTML для представления форматированного текста, с другой стороны — близок по возможностям к компилируемым, строго типизированным объектно-ориентированным системным языкам программирования. Как средства разметки (HTML-уровень), так и программные конструкции языка могут быть расширены в пользовательском коде.
Язык проектировался так, чтобы Curl-приложения могли компилироваться в родной код клиентской машины за счёт использования JIT-компиляции, и благодаря чему выполняться на достаточно высокой скорости.
Апплеты Curl можно просматривать при помощи Curl RTE — среды выполнения с дополнениями для веб-браузеров; поддерживаются платформы Microsoft Windows, Linux и Macintosh. Язык обладает возможностью независимой работы апплетов в течение нескольких лет, то есть веб-апплет, исполняющийся на рабочем столе пользователя, не зависит от окна браузера, как это сделано в Silverlight 3 и Adobe AIR. Curl-апплеты также могут быть написаны таким способом, чтобы они выполнялись офлайн при отключении от сети (вычисления с редким подключением или occasionally-connected computing). Фактически, Curl IDE — это приложение, написанное на самом Curl.
Синтаксис Является гомоиконичным языком, то есть использует общий синтаксис для кода и данных.
Простой Curl-апплет «HelloWorld» может выглядеть так: {Curl 5.0, 6.0, 7.0 applet} {text color = "blue", font-size = 16pt, Hello World} Данный код выполнится, если пользователь имеет установленный Curl по крайней мере одной из версий 5.0, 6.0 или 7.0.
Язык обеспечивает поддержку и макросов, и обработку текста в дополнение к безымянным процедурам и методам именования.
Альтернативой использованию текстовой процедуры paragraph может являться:
{paragraph paragraph-left-indent=0.5in, {text color = "red", font-size = 12pt, Hello} {text color = "green", font-size = 12pt, World}}
Этот стиль разметки был взят на вооружение «построителями» () в языке Groovy для JVM, что весьма удобно и для пользователей, привыкших к CSS или Tcl/Tk. Большинство возможностей RIA, созданных за счет комбинации библиотек JavaScript + HTML + CSS, уже давно реализовано в языке Curl, включая такие возможности, которые обычно ассоциируются с Prototype + Scriptaculous, как например, набор вкладок (accordion panes).
Curl выполняет обратные вызовы в том же стиле, что принят в Groovy:
{CommandButton width=100pt, height = 50pt, label = {center {bold Invokes an event handler when clicked}}, control-color = "orange", || Attach the following event handler to this CommandButton {on Action do {popup-message title = "Ваше сообщение", "Это сообщение диалога с пользователем."
Для комментирования кода используется вертикальная черта в нескольких вариантах, например:
{text A comment can be on a line by itself, || Строчный комментарий на отдельной строке or it can be at the end || Комментарий на той же строке, что и код of a line.}
Условия распространения Язык разрабатывается компанией Curl, принадлежащей японскому конгломерату Sumitomo, штаб-квартира — в Кембридже (Массачусетс). Наибольшее число из 400 коммерческих пользователей языка находится в Японии и других азиатских странах, но определённое распространение язык получил и на Западе.
Curl бесплатен для некоммерческого и ограниченно коммерческого использования. Существует также и платная профессиональная версия, поддерживающая дополнительные возможности для корпоративных заказчиков.
Примечания
Ссылки MIT Curl Project — результаты исследовательского проекта Curl в лаборатории по информатике Массачусетского технологического института. Curl, Inc. и Curl International Corp. занимаются развитием и распространением пакета коммерческих продуктов, основывающихся на результатах исследований МТИ. Были выкуплены компанией Sumisho Computer Systems Corp., дочерним подразделением Sumitomo Corp. Обзор Curl 6.0 от InfoWorld, написанный Мартином Хеллером. InfoWorld присудил языку Curl награду «Технология 2008 года» в категории RIA.
Категория:Функциональные языки программирования Категория:Языки разметки Категория:Декларативные языки программирования