| ||
Curl, как он естьНовое творение от изобретателя HTML - удастся ли этому языку завоевать популярность или его применением будет узкий круг специализированных задач? Юрий Кулешов Остановившийся на достигнутом — заживо мертвец. Вероятно, именно этим руководствовалась такая известный в околоинтернетовских кругах компания, как Curl Corporation. Немного найдётся людей, которые после изобретения такой эпохальной вещи, как HTML, пошли бы дальше (Curl Corp. основал Тим Беренс-Ли — человек, изобретший HTML). Но некоторые поступают именно так… Мне кажется, что результат того стоит. Итак, Curl. ВпечатлениеCurl — принципиально новый язык для web, позволяющий разработчику представлений проделывать вещи, ранее неслыханные, или требующие невероятной изобретательности в реализации своих идей: тут есть пример, демонстрирующий распространение волн в упругой среде; а вот здесь — визуализация результатов исследования интернет-трафика. При сравнительно высокой степени сложности этих задач, время написания программы (а Curl — настоящий, полноценный язык программирования) весьма мало. Так, разработчики утверждают, что первый пример создан за время, чуть большее, чем один рабочий день. Возьмусь утверждать, что аналогичных результатов невозможно достичь применением ни одной современной технологии «активизации» содержимого страниц. Да, на самом деле, даже после небольшого знакомства с возможностями, которые предоставляет нынешняя, весьма далёкая от финальной, версия языка, мало у кого останутся сомнения в прогрессивности и удобстве Curl. Текущая реализацияСейчас Curl можно заполучить свободно с сайта www.Curl.com. Комплект «начального уровня» включает в себя plug-in для современных браузеров, а разработчики также могут загрузить и установить средства и инфраструктуру разработки (естественно, никто не проверяет, разработчик ли вы или нет; в настоящее время — на 26/09/2001 — любой мог установить Curl целиком). Версия Curl (Curl-ps-1-6-0-1241-dor-signed.exe) доступна только для Windows, но разработчики обещают пошевелиться и вскоре выпустить реализации для Mac и Linux (вот только зачем?). После установки всей системы целиком, вместе со средствами разработчика, пользователю становятся доступны:
Curl для пользователяКонцептуально [1], программы, написанные с использованием Curl, могут выполняться тремя различными способами:
Однако, поскольку нельзя объять необъятного «за раз», то в версии 1.6 (текущей) поддержки последних двух режимов нет. Это легко объяснимо: Curl позиционируется прежде всего как новый язык для web, видимо именно поэтому управляющие проектом решили не распылять свои силы. Это правильная тактика. Апплет, написанный на Curl, может содержать любые комбинации следующих элементов:
Не желая вводить в читателя заблуждение, скажу, что в отличии от апплетов на Java, к которым некоторые из нас успели привыкнуть за последние 6 лет, апплеты Curl не компилируются ни в какой P-код, а исполняются, интерпретируясь на лету. Другими словами, текущая версия Curl — интерпретируемая, и механизм интерпретации, за исключением некоторых деталей (preprocessed Curl source files), не отличается от того, которым пользуются популярные нынешние scripting engines. Работа с текстомCurl умеет всё, что необходимо для работы с текстом: он может отображать текст разными шрифтами и стилями, значительно превосходя все средства, которые сейчас доступны (dhtml + css). Здесь даже нечего сказать кроме: «он делает всё». Работа с графикойКаждый, кто хоть раз создавал свой элемент управления ActiveX для web знает, что это не очень просто — добиться гладкого, качественного отображения графических сцен, особенно, если они таковы, что требуют работы с источниками света и полупрозрачностью. Многие десятки часов кропотливого труда уходят на то, чтобы пользователь, наконец, остался доволен. Долгое время казалось, что счастливые времена наступят нескоро, однако, извольте: Curl умеет работать (и даёт возможность этим воспользоваться разработчику!) с такими, прямо скажем, не совсем тривиальными вещами, как:
Очень жаль, что на листе бумаги невозможно показать то, что происходит в демонстрационном окне при выполнении одного из аплетов; просто посмотрите на чистоту работы:
Можете посмотреть текст кода, который порождает и управляет этой сценой. Замечу, что размер импортируемого файла SceneUtils.curl едва превышает 6 КБ. Естественно, что Curl работает и с двумерными объектами, но это, право, такой пустяк… Работа с даннымиCurl имеет богатые средства для работы с XML-документами, поддерживая SAX (The Simple API for XML, прочитать об этом можно здесь: www.megginson.com/SAX), что делает его подходящим средством и для разбора/отображения XML документов в браузере. Обработка происходит в той же единообразной [2] манере, да так, что само чтение кода доставляет удовольствие. На рис. 3 — визуализация XML-документа (см. код документа):
А такжеВ Curl поддерживается работа с файлами и каталогами посредством классов HttpFile, LocalFile, StringFile, LocalDirectory, HttpDirectory, ObjectDirectory. Нетрудно догадаться, для каких видов доступа используются эти классы. В настоящее время не поддерживается работа с ftp-файлами и каталогами. Почему этого нет — неизвестно, вероятно из-за потенциальных проблем, связанных с возможностью применения вредоносных апплетов, но это уж как-то очень сурово. Особенно, в свете разрешения доступа к локальным дисковым ресурсам пользователя. В Curl есть мощная поддержка работы с сетью. Чтение файлов с удалённых серверов осуществляется так же, как и в случае с локальными файлами. Однако, есть существенные ограничения на использование сетевого взаимодействия:
Также введены и действуют аналогичные запрещения на работу с портами UDP (список их несколько отличается, от тех, используются при соединении по TCP). А теперь предположим, что некий менеджер, связанный с управлением работой по созданию web-сайтов, спросил меня: «И что, этот "завиток" может сократить время разработки?». Долго думать над ответом я не буду: «Да». Среди всех средств организации представлений для клиента Curl выглядит наиболее внушительно и эффектно. Curl для программистаВсё имеет обратную сторону. Удобство пользователей компонентов Visual Basic оборачивается напряжённой работой разработчиков этих компонентов на Visual C++, в радость от чтения новой книги вложены месяцы напряжённой работы писателя, а чтобы компьютер включился, нужно, чтобы кто-то круглосуточно дежурил на электростанции. Словом, очень часто удобства одних оборачиваются неудобствами или стеснениями для других. Посмотрим, что Curl предлагает программистам для использования ими всех этих замечательных возможностей, и насколько сложно всё это применять. Типы данныхКаждая переменная внутри программы на Curl связан с определённым типом данных. Предлагается большое количество встроенный, «примитивных» типов данных, а также все средства для конструирования классов и их последующего применения. Целочисленные типыК целочисленным типам в Curl относят следующие: int, int8, int16, int32, int64, uint8, uint16, byte. Каждая объявленная переменная автоматически инициализируется нулём (0). В случае, если значение превышает верхнюю либо нижнюю границу, происходит «заворачивание», как и в большинстве современных языков программирования. Числа с плавающей точкойТаких типов всего два: float и double. Они различаются размерностью (32 и 64 бита, соответственно), имея при инициализации значение по умолчанию 0.0 Принимается, что в случае, когда, когда не указан суффикс числа с плавающей точкой, оно принимается имеющим тип double. Для того, чтобы указать, что некоторое число имеет тип float, нужно использовать суффикс f. Примечательно, что в Curl существует такое понятие, как «бесконечность». «Бесконечности» различаются как положительные и отрицательные (+∞, -∞) [3] Логические типыТаковой только один: bool. Занимает один бит. СимволыРазмер одного символа в Curl — 16 бит, значение по умолчанию \u0000. ВеличиныПохоже, что авторы языка стремились охватить все возможные варианты применения Curl и в порыве энтузиазма додумались до такой вещи, как специальный тип для физических и математических величин. К встроенным относят следующие величины:
Внутреннее представление величин — double или float, однако, внешне всё выглядит так, будто бы это совершенно разные вещи. Например, категорически невозможно вычесть из расстояния скорость: Отмечу, что существует возможность расширять список «предопределённых» значений, используя type-of: КлассыКак и абсолютное большинство современных языков программирования, Curl предоставляет все средства для комфортной работы с классами. В поставке есть также некоторое количество встроенных классов: для строк, массивов, множеств и хэш-таблиц. Поскольку класс — это тип данных, то для экземпляров этого типа существует спец. значение по умолчанию — null. Ничего нового в смысле классов Curl не открывает, однако в нём есть всё, к чему привыкли (и от чего, с приходом .NET будут понемногу отвыкать) программисты на C++:
Всё прочее, касающееся функций доступа и модификаторов просто доведено до совершенства. Модификаторы управляют использованием класса. Различают 4 модификатора:
Все понятия выражены в синтаксисе. Например: Ознакомиться с теорией объектного программирования в настоящее время можно где угодно, поэтому я не буду на этом акцентироваться, а замечу для интересующихся, что в Curl существует специальный абстрактный класс Object, от которого неявно порождаются все классы этого языка. Таким образом, всякая иерархия в Curl имеет лишь один корень. ПроцедурыПонятие класса является существенным, но не абсолютным в Curl. Другими словами, вполне возможно и программирование с применением обычного процедурного подхода. Этому в языке служит ключевое слово define-proc. Вот, например, максимальное определение процедуры: Здесь объявлена процедура foo с аргументом типа int, не возвращающая значения и являющая общедоступной(public) и встраиваемой (в смысле C++). В целом, процедуры в Curl очень похожи на процедуры в других языках программирования, но вместе с этим существует целый ряд отличий:
ПрочееВ Curl присутствуют и такие элементы, как:
ЗаключениеCurl — мощный современный язык программирования, предназначенный для создания высокоэффективного клиентского ПО для нетривиальных задач. К его достоинствам относятся простота синтаксиса и зрелость заложенных в язык концепций. Curl показывает себя с наилучшей стороны и для любых других задач, связанных с программированием клиентской части web-ориентированного ПО. Поддержка работы с графикой, мощный математический аппарат языка и скорость работы дают ему большое преимущество перед другими. В то же время, вряд ли Curl уготована судьба могильщика HTML, как об этом говорят его авторы. Скорее всего, он останется в рамках оригинального, но мало применяемого средства, из-за того, что уж слишком поздно Curl появился: HTML уже повсюду, а способов совместить одно с другим я не вижу. Тут уж «либо, либо…» и мне почему то кажется, что этим «либо» будет HTML (вероятно, более зрелый) и навязчивые эффекты, сделанные во Flash. [1] — Объяснение, почему «концептуально» — ниже по тексту, к которому относится сноска. [2] — Поверьте, это большой комплимент с моей стороны. [3] — Если в скобках вы увидите нечто, отличное от математического символа бесконечности, то знайте - ваш браузер не поддерживает стандарт W3C — прим.ред. Источник - SoftТерра, http://www.softerra.ru
| ||
Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com |