Lasso - альтернатива PHP и ASP.NET

В мире web-программирования наметились некоторые подвижки. Самый популярный инструмент программистов в этой области, PHP, теряет свои позиции, подпираемый, с одной стороны, ASP.NET, а с другой - Ruby (имеется в виду фреймворк Ruby On Rails). В то же время есть ещё некоторая доля рынка у Perl'а и ColdFusion... В общем, сейчас в мире Web-программирования имеется тенденция к разброду и шатанию. Пока победитель не определился, самое время обратить внимание на другие технологии, менее раскрученные и менее известные. Именно поэтому я и решил сейчас рассказать об одной из них - Lasso.

Официальный адрес разработчиков Lasso во Всемирной паутине - www.lassosoft.com. Там можно узнать все подробности об этом программном продукте, скачать пробную версию, а также найти различные дополнительные приложения для работы с Lasso и необходимую для этого же документацию. Сайт сделан качественно, и разобраться в нём несложно. Обратите, кстати, внимание, что главная страница - не index.php, а index.lasso. То, что сами разработчики пользуются собственной технологией - первый знак того, что в её сторону имеет смысл смотреть.

Итак, что же такое Lasso? Это кросс-платформенный сервер, позволяющий выполнять сценарии на одноименном языке, который, по словам его разработчиков, отличается простотой и понятностью. В качестве поддерживаемых операционных систем авторы указывают Windows, MacOS X и, конечно же, главную из серверных ОС - Linux. MacOS поддерживается как для PowerPC, так и для Intel'овских процессоров.

В списке поддерживаемых возможностей стоит на первом месте, конечно же, самое магическое из всех современных WWW-слов - AJAX. В чём именно заключается поддержка, авторы не уточняют, но, судя по сути этой технологии, это какие-то особые методы обработки XML-данных, специально "заточенные" под асинхронный JavaScript с XML'ем.

Что касается самого языка, то он включает более 1400 тегов и более 30 типов данных. Впрочем, это только кажется, что много, - на самом деле вспомните количество функций и типов в PHP. Естественно, есть специальные типы для строк, для работы с базами данных, есть и то, что названо "математическими типами" - целые числа и числа с плавающей точкой. Поддерживаются регулярные выражения, строки в кодировке Unicode, имеются встроенные функции перекодировки текста из одной кодовой страницы в другую. Предусмотрены отдельные типы данных для IP-адресов, HTTP-заголовков, кодировок и прочих подобных вещей. Для работы с изображениями тоже предусмотрены отдельные функции и типы данных - с их помощью картинки можно масштабировать, поворачивать, переводить из одного формата в другой и многое другое. Отдельно поддерживаются календари формата iCalendar, которые поддерживаются и многими другими аналогичными программами: для работы с ними в стандартную библиотеку включён специальный набор функций. Поддержку XML, которая подразумевает парсинг потока данных в этом формате, дополняет поддержка XML-парсинга для DOM. По словам авторов, Lasso показывает очень хорошие результаты в плане производительности как при парсинге, так и при генерации XML. Интересно, что поддерживается ещё и PDF - Lasso умеет создавать файлы этого формата из текста и рисунков, а также читать готовые и добавлять какое-либо содержимое в них. Поддерживается шифрование PDF-файлов. О поддержке стандартной библиотекой работы с POP и SMTP-серверами, думаю, можно даже и не упоминать. Как и о поддержке автоматизации работы по протоколам SSL, TLS и другим, обеспечивающим безопасное соединение. Сам язык Lasso поддерживает встроенные составные типы а-ля массивов, списков, хэш-таблиц, деревьев, очередей, стеков и прочих подобных вещей.

 

Современные web-приложения практически всегда работают с базами данных, поэтому, полагаю, читателям будет небезынтересно, что в этом плане может предложить разработчику Lasso. Во-первых, вместе с Lasso производители предлагают инструмент администрирования баз данных Database Browser, который умеет работать со всеми теми же СУБД, которые поддерживаются библиотекой, поставляемой вместе с Lasso. Во-вторых, для MySQL и SQLite имеется визуальный конструктор БД "с нуля". Ну а в-третьих, это, конечно же, список самих поддерживаемых СУБД и технологий для работы с ними. Поддерживаются File Maker 7, 8, 9 (через XML-интерфейс), а также умеет работать со старыми версиями этой СУБД - 4, 5, 6. Поддерживается прямое соединение с Microsoft SQL Server, MySQL, OpenBase SQL, Oracle, PostgreSQL, SQLite. Также Lasso умеет работать с различными серверами баз данных при помощи JDBC и ODBC, а также собственной технологии разработчиков Lasso - LDAP (Lightweight Data Access Protocol). Разработчики Lasso обещают пользователям своего продукта возможность одновременной работы с несколькими источниками данных, даже при разных СУБД, независимо от способа доступа к ним.

Рассказав довольно подробно о возможностях стандартной библиотеки Lasso, я, тем не менее, умудрился практически ничего не сказать о самом языке программирования. А ведь синтаксис языка - тоже не менее важная часть программирования, чем стандартная библиотека функций.

Как и скрипты на PHP, Lasso-скрипты внедряются прямо в HTML-код страниц. Думаю, приведённый ниже небольшой листинг проиллюстрирует процесс внедрения лучше, чем если бы я описывал его словами.

<?LassoScript
Var: 'PageTitle' = 'My Lasso Page';
Var: 'PageLink' = '/Default.Lasso';
?>
<a href="[Var: 'PageLink']">[Var: 'PageTitle']</a>

Как видите, все параметры заключаются в квадратные скобочки - это "родной" для Lasso способ работы с ними. Правда, есть возможность и написания в стиле JavaScript'а: Имя_тега (список параметров). В принципе, такая гибкость может помешать в больших проектах, зато для тех, кому не понравится традиционный для Lasso синтаксис, она очень даже полезна. Для иллюстрации второго способа написания приведу ещё один листинг.

if: !(lasso_tagexists: 'ljax_include');
define_tag('include', -namespace='ljax_', -required='file');
local('inc' = null, 'incFile' = params->first);
ljax_target(params->removeFirst &);
#inc = include(#incFile);
/ljax_target;
return: #inc;
/define_tag;

Как и в большинстве скриптовых языков программирования, типизация совсем не строгая: одни и те же операторы могут прекрасно складывать и числа, и строки, и строку с числом. При этом Lasso является объектно-ориентированным языком, поддерживающим наследование, перегрузку членов классов, иерархическую структуру объектов. Синтаксис обращения к объектам похож на C++ (имеется в виду оператор "->"). Об этом же языке программирования напоминают и пространства имён - namespaces по-английски. В Lasso они используются точно так же, как и в C++, поэтому подробно на них останавливаться вряд ли стоит.

Разработчики Lasso утверждают, что их продукт очень хорошо подходит для разных крупных проектов, особенно таких, которые объединяют одновременно несколько сайтов. Каждый из них будет иметь собственный набор источников данных, и, более того, будет запущен в виде отдельного процесса с собственными глобальными переменными, очередями сообщений и кэшами. Таким образом достигается стабильность работы каждого сайта независимо от остальных. Для координации работы сайтов предлагается инструмент Server Administrator.

Очень важный вопрос для любого серверного приложения - его производительность. Поскольку Lasso - не просто приложение, а интерпретатор других приложений, то к нему требования особенно высоки. Как и в большинстве других современных интерпретаторов, перед началом выполнения скрипт компилируется в промежуточный байт-код. Байт-код для каждой страницы кэшируется, а при изменении исходного текста страницы происходит его перекомпиляция и повторная запись в кэш. Кроме того, дополнительно кэшируются перед запуском скрипта все вызываемые им функции (или, в терминах Lasso, теги). Также, по словам разработчиков, интерпретатор Lasso умеет отлавливать скрипты, способные серьёзно затормозить работу остальных скриптов путём захвата значительного процента процессорного времени.

Ещё одна, не менее любимая тема для сетевых и серверных приложений - безопасность. О ней разработчики Lasso тоже позаботились. Код приложения может быть написан таким образом, чтобы запускаться только с определённой группой привилегий для сервера Lasso. В целом, настройки сервера, опции доступа к БД и возможность доступа к файлам объединяются в единую среду безопасности, в которой и работает приложение. Lasso умеет шифровать пароли и поддерживает базовые механизмы аутентификации, что удобно для программиста и конечного пользователя web-приложения.

Это всё, конечно, хорошо, но вот удобно ли создавать приложения на Lasso? Имеется в виду, конечно же, современная и качественная среда разработки. Удобно, хотя свою среду разработки авторы Lasso так и не выпустили. Вместо этого пользователям этого программного продукта предлагаются специальные дополнения к известным пакетам Dreamweaver, Eclipse, GoLive, которые позволяют работать с Lasso в этих средах так же полноценно, как и с другими, уже имеющимися в них языками web-программирования. Пробные версии всех этих дополнений также можно найти на указанном в начале статьи сайте.

Что ж, пожалуй, это всё, что я хотел рассказать о Lasso. Безусловно, это очень интересная разработка, а главное - уже сформировавшаяся и проверенная на практике многими пользователями, хотя и не слишком известная в нашей стране и вообще на постсоветском пространстве.

Вадим СТАНКЕВИЧ,
dreamdrusch@tut.by

Версия для печатиВерсия для печати

Номер: 

44 за 2007 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!