Curl (язык программирования)

Поделись знанием:
Перейти к: навигация, поиск
Curl
Класс языка:

мультипарадигменный: объектно-ориентированный, разметка

Появился в:

1998

Автор:

Стив Уорд, MIT

Выпуск:

7.0.0

Система типов:

строгая

Испытал влияние:

HTML, JavaScript

Сайт:

[www.curl.com/ l.com]

Curl — рефлексивный объектно-ориентированный язык программирования, созданный для написания интерактивных веб-приложений. Он объединяет в себе возможности разметки текста (как у HTML), написание скриптов (как JavaScript), а также достаточно мощный вычислительный механизм (как у Java, C# и C++), причем все это внутри одного унифицированного фреймворка. Язык используется главным образом для решений внутрикорпоративных задач, B2B- и B2C-приложений.

Curl — язык разметки как HTML, то есть обычный текст показывается именно как текст; но в то же время, Curl включает в себя возможности объектно-ориентированного языка программирования, среди которых — поддержка множественного наследования. Curl-приложения не требуют соблюдения разделения информации, стиля и поведения, как это сделано для HTML, CSS и JavaScript, хотя этот стиль программирования вполне может быть использован в Curl в случае необходимости.

С одной стороны язык Curl может использоваться как замена HTML для представления форматированного текста, с другой стороны, его возможности охватывают не уступают возможностям компилируемых, строго типизированным объектно-ориентированным системным языкам программирования.[1] Как «украшательства» (HTML-уровень), так и программные конструкции Curl могут быть расширены в пользовательском коде.

Язык проектировался так, чтобы Curl-приложения могли компилироваться в родной код клиентской машины за счет использования JIT-компиляции, и благодаря чему выполняться на достаточно высокой скорости.

Апплеты Curl можно просматривать при помощи Curl RTE — среды исполнения с дополнениями для веб-браузеров. На данный момент, поддерживаются платформы Microsoft Windows, Linux и Macintosh.

Curl обладает возможностью независимой работы апплетов в течение нескольких лет, то есть веб-апплет, исполняющийся на рабочем столе пользователя, не зависит от окна браузера, как это сделано в 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.

Curl обеспечивает поддержку и макросов, и обработку текста в дополнение к безымянным процедурам и методам именования.
Альтернативой использованию текстовой процедуры paragraph может являться:

{paragraph
   paragraph-left-indent=0.5in,
   {text color = "red", font-size = 12pt,
     Hello}
   {text color = "green", font-size = 12pt,
     World}}

Не так давно этот стиль разметки был взят на вооружение 'конструкторами' (builders) в языке Groovy для JVM, что весьма удобно и для пользователей, привыкших к CSS или Tcl/Tk. Большинство возможностей RIA, созданных за счет комбинации библиотек JavaScript + HTML + CSS, уже давно реализовано в языке Curl, включая такие возможности, которые обычно ассоциируются с Prototype + Scriptaculous, как например, набор вкладок (accordion panes).

Curl выполняет обратные вызовы (callbacks) в том же стиле, что принят в 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 = "Ваше сообщение",
           "Это сообщение диалога с пользователем."
       }
   }}

Для комментирования кода в Curl используется вертикальная черта в нескольких вариантах. Вот самый простой пример:

{text A comment can be on a line by itself,
|| Строчный комментарий на отдельной строке
or it can be at the end || Комментарий на той же строке, что и код
of a line.}

Условия распространения

Штаб-квартира Curl, Inc. расположена в Кембридже, штат Массачусетс, и является дочерней компанией [www.scs.co.jp/english/index.html Sumisho Computer Systems Corp.]. Наибольшее число из [www.curl.com/customers.php 400 коммерческих пользователей Curl] находится в Японии и других азиатских странах, но Curl вполне доступен и на Западе.

Curl бесплатен для некоммерческого и ограниченно коммерческого использования (см. [www.curl.com/download/ide/license.php лицензирование]). Существует также и профессиональная версия, поддерживающая дополнительные возможности промышленного класса.

См. также

Напишите отзыв о статье "Curl (язык программирования)"

Примечания

  1. [www.cag.lcs.mit.edu/curl/wwwpaper.html Curl Paper (WWW Journal Draft)]

Ссылки

  • [www.cag.lcs.mit.edu/curl/ MIT Curl Project] — результаты исследовательского проекта Curl в лаборатории по информатике Массачусетского технологического института.
  • [curl.com Curl, Inc.] и [curlap.com Curl International Corp.] занимаются развитием и распространением пакета коммерческих продуктов, основывающихся на результатах исследований МТИ. Были выкуплены компанией [www.scs.co.jp/english/index.html Sumisho Computer Systems Corp.], дочерним подразделением [www.sumitomocorp.co.jp/english/ Sumitomo Corp.]
  • [infoworld.com/d/developer-world/product-review-curl-60-enrichens-rich-internet-toolkit%C2%A0-029 Обзор Curl 6.0 от InfoWorld], написанный Мартином Хеллером. InfoWorld присудил языку Curl награду «Технология 2008 года» в категории RIA.

Отрывок, характеризующий Curl (язык программирования)

– J'ai ete a Paris, j'y ai passe des annees, [Я был в Париже, я провел там целые годы,] – сказал Пьер.
– Oh ca se voit bien. Paris!.. Un homme qui ne connait pas Paris, est un sauvage. Un Parisien, ca se sent a deux lieux. Paris, s'est Talma, la Duschenois, Potier, la Sorbonne, les boulevards, – и заметив, что заключение слабее предыдущего, он поспешно прибавил: – Il n'y a qu'un Paris au monde. Vous avez ete a Paris et vous etes reste Busse. Eh bien, je ne vous en estime pas moins. [О, это видно. Париж!.. Человек, который не знает Парижа, – дикарь. Парижанина узнаешь за две мили. Париж – это Тальма, Дюшенуа, Потье, Сорбонна, бульвары… Во всем мире один Париж. Вы были в Париже и остались русским. Ну что же, я вас за то не менее уважаю.]
Под влиянием выпитого вина и после дней, проведенных в уединении с своими мрачными мыслями, Пьер испытывал невольное удовольствие в разговоре с этим веселым и добродушным человеком.
– Pour en revenir a vos dames, on les dit bien belles. Quelle fichue idee d'aller s'enterrer dans les steppes, quand l'armee francaise est a Moscou. Quelle chance elles ont manque celles la. Vos moujiks c'est autre chose, mais voua autres gens civilises vous devriez nous connaitre mieux que ca. Nous avons pris Vienne, Berlin, Madrid, Naples, Rome, Varsovie, toutes les capitales du monde… On nous craint, mais on nous aime. Nous sommes bons a connaitre. Et puis l'Empereur! [Но воротимся к вашим дамам: говорят, что они очень красивы. Что за дурацкая мысль поехать зарыться в степи, когда французская армия в Москве! Они пропустили чудесный случай. Ваши мужики, я понимаю, но вы – люди образованные – должны бы были знать нас лучше этого. Мы брали Вену, Берлин, Мадрид, Неаполь, Рим, Варшаву, все столицы мира. Нас боятся, но нас любят. Не вредно знать нас поближе. И потом император…] – начал он, но Пьер перебил его.
– L'Empereur, – повторил Пьер, и лицо его вдруг привяло грустное и сконфуженное выражение. – Est ce que l'Empereur?.. [Император… Что император?..]
– L'Empereur? C'est la generosite, la clemence, la justice, l'ordre, le genie, voila l'Empereur! C'est moi, Ram ball, qui vous le dit. Tel que vous me voyez, j'etais son ennemi il y a encore huit ans. Mon pere a ete comte emigre… Mais il m'a vaincu, cet homme. Il m'a empoigne. Je n'ai pas pu resister au spectacle de grandeur et de gloire dont il couvrait la France. Quand j'ai compris ce qu'il voulait, quand j'ai vu qu'il nous faisait une litiere de lauriers, voyez vous, je me suis dit: voila un souverain, et je me suis donne a lui. Eh voila! Oh, oui, mon cher, c'est le plus grand homme des siecles passes et a venir. [Император? Это великодушие, милосердие, справедливость, порядок, гений – вот что такое император! Это я, Рамбаль, говорю вам. Таким, каким вы меня видите, я был его врагом тому назад восемь лет. Мой отец был граф и эмигрант. Но он победил меня, этот человек. Он завладел мною. Я не мог устоять перед зрелищем величия и славы, которым он покрывал Францию. Когда я понял, чего он хотел, когда я увидал, что он готовит для нас ложе лавров, я сказал себе: вот государь, и я отдался ему. И вот! О да, мой милый, это самый великий человек прошедших и будущих веков.]
– Est il a Moscou? [Что, он в Москве?] – замявшись и с преступным лицом сказал Пьер.
Француз посмотрел на преступное лицо Пьера и усмехнулся.
– Non, il fera son entree demain, [Нет, он сделает свой въезд завтра,] – сказал он и продолжал свои рассказы.
Разговор их был прерван криком нескольких голосов у ворот и приходом Мореля, который пришел объявить капитану, что приехали виртембергские гусары и хотят ставить лошадей на тот же двор, на котором стояли лошади капитана. Затруднение происходило преимущественно оттого, что гусары не понимали того, что им говорили.
Капитан велел позвать к себе старшего унтер офицера в строгим голосом спросил у него, к какому полку он принадлежит, кто их начальник и на каком основании он позволяет себе занимать квартиру, которая уже занята. На первые два вопроса немец, плохо понимавший по французски, назвал свой полк и своего начальника; но на последний вопрос он, не поняв его, вставляя ломаные французские слова в немецкую речь, отвечал, что он квартиргер полка и что ему ведено от начальника занимать все дома подряд, Пьер, знавший по немецки, перевел капитану то, что говорил немец, и ответ капитана передал по немецки виртембергскому гусару. Поняв то, что ему говорили, немец сдался и увел своих людей. Капитан вышел на крыльцо, громким голосом отдавая какие то приказания.
Когда он вернулся назад в комнату, Пьер сидел на том же месте, где он сидел прежде, опустив руки на голову. Лицо его выражало страдание. Он действительно страдал в эту минуту. Когда капитан вышел и Пьер остался один, он вдруг опомнился и сознал то положение, в котором находился. Не то, что Москва была взята, и не то, что эти счастливые победители хозяйничали в ней и покровительствовали ему, – как ни тяжело чувствовал это Пьер, не это мучило его в настоящую минуту. Его мучило сознание своей слабости. Несколько стаканов выпитого вина, разговор с этим добродушным человеком уничтожили сосредоточенно мрачное расположение духа, в котором жил Пьер эти последние дни и которое было необходимо для исполнения его намерения. Пистолет, и кинжал, и армяк были готовы, Наполеон въезжал завтра. Пьер точно так же считал полезным и достойным убить злодея; но он чувствовал, что теперь он не сделает этого. Почему? – он не знал, но предчувствовал как будто, что он не исполнит своего намерения. Он боролся против сознания своей слабости, но смутно чувствовал, что ему не одолеть ее, что прежний мрачный строй мыслей о мщенье, убийстве и самопожертвовании разлетелся, как прах, при прикосновении первого человека.