Лассо (язык программирования) - Lasso (programming language)

Лассо
LassoSoft and Lasso Logo.png
Логотип LassoSoft Inc.
Парадигма Мультипарадигма : структурированная объектно-ориентированная ( мультидисциплинарная ),

императивные : процедурные , параллельные , ориентированные на опыт ,

Мета : отражающий
Разработано Кайл Джессап
Разработчик LassoSoft Inc.
Впервые появился 1995 ; 25 лет назад ( 1995 )
Стабильный выпуск
9.3.1 / 23 октября 2015 г . ; 4 года назад ( 2015-10-23 )
Печатная дисциплина Динамический с ограничениями (строгий гибрид), именительный падеж , утка (гибрид)
Язык реализации C , Лассо
Платформа Кроссплатформенность
Операционные системы ( OS X , Windows , Linux )
Лицензия Проприетарный
Расширения имени файла .lasso, .LassoApp
Интернет сайт www .lassosoft .com
Основные реализации
Лассо 8, Лассо 9
Под влиянием
Дилан , Smalltalk , Scala

Lasso является сервер приложений интерфейс и управление сервером используется для разработки интернет - приложений и является универсальным , язык программирования высокого уровня . Первоначально инструмент подключения к веб-источникам данных для Filemaker, а затем включенный в FileMaker 4.0 Apple Computer и домашнюю страницу Claris как CDML, с тех пор он превратился в сложный язык, используемый для разработки и обслуживания крупномасштабных интернет-приложений и веб-страниц.

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

Lasso имеет систему динамических типов , в которой объекты можно загружать и дополнять во время выполнения, автоматическое управление памятью , всеобъемлющую стандартную библиотеку и три методологии компиляции : динамическую (сравнимую с PHP - Python ), своевременную компиляцию (сравнимую с Java. или .NET Framework ) и предварительно скомпилированный (сопоставимый с C ). Lasso также поддерживает выражения запросов, позволяя выполнять итерацию, фильтрацию и обработку элементов в массивах и других типах последовательностей с использованием синтаксиса естественного языка, подобного SQL . Lasso включает полную поддержку символов Юникода в стандартном строковом объекте, что позволяет ему обслуживать и поддерживать многобайтовые символы, такие как японский и шведский, а также поддерживает прозрачное преобразование UTF-8 при записи строковых данных в сеть или файловую систему.

Лассо часто используется как язык сценариев , а также в широком диапазоне контекстов, не связанных со сценариями. Код лассо может быть упакован в отдельные исполняемые программы, называемые «LassoApps», в которых структуры папок скомпилированы в отдельные файлы.

Сервер приложений Lasso Server работает как системная служба и получает запросы от веб-сервера через FastCGI . Затем он передает запрос соответствующему экземпляру лассо, который формулирует ответ. Поддерживаются несколько отдельных экземпляров, что позволяет одному серверу обрабатывать несколько сайтов, каждый как отдельный процесс. В сервере используется высокопроизводительная система « зеленых» потоков на основе ввода-вывода, разработанная для многоядерных систем.

Лассо можно сравнить с серверными языками сценариев PHP и Python , ColdFusion , Ruby и т. Д.

Бесплатная для разработки, Lasso предоставляет частичный доступ к своему исходному коду, позволяя разработчикам добавлять или изменять основные компоненты языка (например, реализацию Lasso Inline в DS Ke Carlton). Лицензирование предоставляется как для SAS, так и для автономной версии.

История

Лассо началось в середине 1990-х годов, когда первые веб-разработчики пытались создать веб-сайты на базе баз данных с помощью Apple FileMaker Pro. На платформе Mac было два решения: WEB-FM Эрика Бикфорда и FileMaker CGI (ROFM) Рассела Оуэнса , оба построенные на AppleScript и требующие использования расчетных полей FileMaker Pro для форматирования. (WEB-FM был впоследствии переписан на C).

Осенью 1995 года независимый разработчик Винс Бонфанти написал новый CGI на основе ROFM, используя C / C ++ для повышения производительности и используя понятие «шаблонов» на основе HTML вместо того, чтобы полагаться на поля вычислений. Это оказалось очень популярным в сообществе FileMaker и было доведено до сведения Билла Доррфельда, владельца Blue World Communications Inc. , фирмы по разработке печати и веб-сайтов из Иссакуа, штат Вашингтон , который купил исходный код .

В это время Blue World экспериментировал с улучшениями CGI в среде сценариев Frontier , что послужило вдохновением для названия «Лассо». Дальнейшая потребность в улучшении привела к созданию CGI на основе C, который позже был выпущен как "Lasso 1.0". На данный момент Lasso работает только с FileMaker Pro 3.x и WebSTAR и работает только на Apple Mac OS 8 и выше.

Популярность Лассо особенно выросла из обзоров в печатных публикациях, а также благодаря размещению и участию в дискуссионных списках по электронной почте Blue World, многие из которых относятся к FileMaker Pro. Blue World также часто появлялась и была известна как ведущая компания на конференциях MacWorld .

После выпуска линейки Lasso 1.2 в январе 1997 года Blue World и Bonfantis вступили в частные переговоры с Claris , программным подразделением Apple Computer и владельцем FileMaker Pro. В конечном итоге Claris лицензировала исходный код Lasso после версии 1.2 и с помощью Винса и Пола Бонфанти выпустила FileMaker Web Companion в качестве компонента FileMaker Pro 4.0. Язык FileMaker Web Companion, CDML (язык динамической разметки Claris), отличался от языка LDML (язык динамической разметки Lasso 1.2) в Lasso 1.2, но был достаточно близок к тому, чтобы предлагать разработчикам, желающим работать с FileMaker Pro, через сторонние серверы, простой переход. и предлагал более привлекательные функции.

Включение Lasso-like Web Companion в FileMaker 4.0 помогло повысить популярность Lasso в быстрорастущем сообществе веб-разработчиков Macintosh . Blue World продолжила разработку Lasso, а Кайл Джессап стал ведущим программистом Lasso . Lasso 2.0 был выпущен в июле 1997 года и внес некоторые фундаментальные изменения в то, как можно использовать Lasso.

26 февраля 2002 года Blue World выпустила Lasso 5, радикальный отход от языка, ориентированного на FileMaker на сегодняшний день. (Выпуск Lasso 4 никогда не производился; номер версии пропущен с 3 до 5.) Lasso 5 включал, среди многих обновлений, полностью переписанную архитектуру (для OS X, Windows, Linux) и встроенную базу данных MySQL . Хотя Lasso 5 по-прежнему взаимодействовал с базой данных FileMaker (но не с сервером FileMaker), FileMaker в качестве источника данных оставался относительно медленным по сравнению с механизмом SQL и был непомерно дороже. Начиная с версии 2.0, Lasso был полностью многопоточным, позволяя сразу несколько подключений, но уступал задержкам или задержкам FileMaker в определенных операциях, и не было другого надежного способа обойти это, кроме внесения серьезных изменений в источник данных.

Lasso 5 также добавил поддержку Apache HTTP Server изначально под OS X, Windows и Linux, присоединившись к Webstar 5, AppleShare IP (который был заменен на OS X Server) и iTools (от Tenon). (Mac OS 9, на которой Lasso использовалась много лет, не поддерживалась). Это укрепило связи с классической серверной архитектурой LAMP .

Blue World Communications выпустила серию подключаемых модулей для популярных пакетов веб-разработки от Macromedia и Adobe. Lasso Studio 1.5 для Dreamweaver заняла второе место в конкурсе Editors 'Choice Awards журнала MacWorld в области Интернета и разработки в 2001 году, уступив Adobe Dreamweaver 3. Lasso Studio для Dreamweaver 1.5 также получила положительную оценку журнала MacWorld, получив 4 с половиной балла. Более поздняя версия Lasso Studio поддерживала Macromedia Dreamweaver и Adobe GoLive, включая Lasso Studio 7 для Dreamweaver и GoLive 26 марта 2004 г.

С выпуском FileMaker Server и FileMaker Server Advanced версии 7 в 2004 году FileMaker ознаменовал серьезные изменения в своей стратегии обслуживания данных на веб-сайтах. Они сделали упор на возможности подключения XML-XSLT, ODBC и JDBC, но только через более дорогой продукт FileMaker Server Advanced. Blue World начал дистанцировать язык лассо от FileMaker и Apple. В 2005 году Lasso Pro получила сертификат MySQL Network, демонстрирующий важность популярной базы данных с открытым исходным кодом для будущего Lasso.

1 августа 2004 года Билл Доррфельд официально продал линейку продуктов Lasso компании OmniPilot Software, Inc. в Ft. Лодердейл, Флорида. Lasso 7.0.3 была последней версией Lasso, выпущенной Blue World.

25 октября 2004 года OmniPilot официально объявила о выпуске Lasso 8, версии, включающей песочницу для нескольких сайтов на одном сервере и возможность подключения ко многим новым источникам данных. Это также включало первую «бесплатную» версию Lasso, ограниченную IP-адресами. OmniPilot последовал за этим выпуском с рядом дополнительных продуктов, включая Lasso Studio 8 для Dreamweaver и GoLive 28 марта 2005 г., Lasso Studio для Eclipse , интеграцию ChartFX и ряд бесплатных решений на основе Lasso.

В 2007 году трое сотрудников OmniPilot, Кайл Джессап (первоначальный разработчик Lasso 1.0), Флетчер Сэндбек (один из первых сотрудников Blue World, известный своими регулярными советами и уловками) и Керри Адамс (сотрудник OmniPilot) создали новую компанию, LassoSoft LLC. , приобрести интеллектуальную собственность Lasso у OmniPilot и продолжить разработку. Признавая необходимость конкурировать с гораздо более популярными языками, такими как PHP и ASP , радикальные изменения в архитектуре, синтаксисе и структуре были внесены и выпущены как Lasso 9.0. Технические проблемы, вызванные этими изменениями, в сочетании с ограниченными маркетинговыми ресурсами, привели к значительному упадку сообщества, поскольку компания изо всех сил пыталась выпустить документацию и поддержку нового языка.

В декабре 2010 года была создана новая канадская компания, LassoSoft Inc., которая приобрела и вложила значительные средства в язык, маркетинг и документацию Lasso 9.0. Кайл Джессап согласился остаться и ведущим разработчиком Лассо, и пожизненным доброжелательным диктатором . Несколько выпусков (9.1 и 9.2) за последние годы выпустили дальнейшие разработки.

История выпуска

Ключ
цвет Смысл Развитие
Красный Старый выпуск Нет развития
Желтый Стабильный выпуск Исправления безопасности
Зеленый Стабильный выпуск Исправления ошибок и безопасности
Синий Будущий выпуск Новые особенности
Версия Дата выхода Ноты
РОФМ > 1994-03-14 FileMaker CGI Рассела Оуэнса, ранний соединитель на основе AppleScript для баз данных FileMaker Pro
0,1 Сентябрь 1995 Коннектор CGI, написанный Винсом Бонафонти на C / C ++ для подключения FileMaker Pro к сети
1.0 27 сентября 1996 г. Коннектор для FileMaker Pro 3.x и WebSTAR
1.1 Декабрь 1996 г. Плагин WebSTAR, информация о браузере клиента, полный уровень безопасности графического интерфейса
1.2 Январь 1997 г. Исходный код под лицензией Claris (Apple Computer Inc), названный CDML, установлен на домашней странице Claris
2 17 июля 1997 г. Включены математические вычисления, переменные, сложные типы данных, серверная часть, информация заголовка клиента, расширенные условные операторы, интерфейс Java-клиента, элемент управления Apple Events для других приложений на веб-сервере, несколько действий с базой данных и мгновенная веб-публикация
2,5 1 декабря 1997 г. Добавлена ​​стандартизация тегов и совместимость, возможность взаимодействия с веб-сервером WebTen (порт HTTP-сервера Apache для Mac OS от Tenon Intersystems)
3.0 07 октября 1998 г. Добавлены фильтры проверки данных, макросы, управление файлами / каталогами, элементы управления датой / временем, переменные списка, несколько именованных токенов, надежная обработка ошибок, электронная почта MIME, вложения электронной почты, расширенные математические процедуры, расширенные строковые функции, улучшенные элементы управления кодированием
3.5 14 апреля 1999 г. Добавлено создание WYSIWYG с использованием Macromedia Dreamweaver 2 и Adobe GoLive 4, многопоточность, LJAPI, дополнительный HTTP-сервер, поддержка сервера Netscape, JavaScript, XML и расширенного парсера тегов со встроенными элементами управления отладкой
3,6 5 января 2000 г. Поддержка источников данных FileMaker 5, мастера SQL для интерактивных запросов SQL, настраиваемые страницы глобальных ошибок и Studio для MacroMedia DreamWeaver
3.6.5 1 октября 2000 г. Добавлен коннектор для поддержки MySQL, Red Hat и OS X
5 26 февраля 2002 г. Переписанная архитектура для OS X, Windows, Linux, со встроенным MySQL; добавлены сеансы, манипуляции с файлами, собственный соединитель для Apache и LassoScript (добавление методологии "сценариев" в язык)
6 17 сентября 2002 г. Добавлены изображения, обработка PDF-файлов, собственный XML, интеграция с FTP, математика даты, длительность
7 30 августа 2004 г. MySQL внешний (в связи с лицензированием), закрытый коннектор FileMaker
7.1 13 сентября 2004 г. Добавлена ​​совместимость с Filemaker Pro 7.
8 25 октября 2004 г. Сервер Lasso разбит на отдельные «сайты» для хостинг-провайдеров.
8.1 19 сентября 2005 г. Добавлено кеширование документов, исправления стабильности
8,5 9 июня 2006 г. Добавлена ​​полная интеграция с AJAX, несколько предварительно установленных коннекторов источников данных для FileMaker, FileMaker Server Advanced, MySQL, SQLite, MS SQL Server, Sybase, Oracle, PostgreSQL, OpenBase, ODBC и движка Apple Spotlight.
9 29-янв-2010 Существенное архитектурное изменение: больше синтаксиса, строгая типизация по сравнению со слабой типизацией, JIT-компиляция, встроенная сериализация, поддержка 64-разрядной версии
8,6 20 апреля 2011 г. Скорость, стабильность увеличены
9.1 11-июл-2011 Новый интерфейс администрирования, 64-битный коннектор, новое лицензирование SAS
9.2 1-июн-2012 Добавлена ​​поддержка Windows, интегрированная отладка, интегрированное профилирование кода
9,3 23-янв-2015 Новый интерфейс администратора, новая методология компиляции, централизованное развертывание сервера

Примеры кода

Привет мир

Вот три способа сказать «Привет, мир!» на странице лассо.

<?lasso 'Hello World!' ?>

['Hello world!']

Hello world!

Квадратные скобки зарезервированы в лассо, поэтому объекты HTML должны использоваться для отображения квадратных скобок на страницах лассо для других целей, кроме маркировки тегов лассо. В качестве альтернативы, печать квадратных скобок может выполняться с помощью лассо или отключена включением [no_square_brackets] в начало файла.

Встроенные

// Find all records in a table
inline(		
	-database='db_name', 
	-table='table_name', 
	-findall	
) => {
	// Iterate through and process each row
	rows => {	
		// Output each row to the current web request
		content_body += '<a href="' + column('url') + '">' + column('title') + '</a>'
	}	
}

Встроенные строки - это основной инструмент лассо для действий с базой данных. Команды базы данных могут быть выполнены, как указано выше, на метаязыке Lasso, не зависящей от db, и в этом случае тот же код поиска работает для MySQL, FileMaker Pro или для любой другой серверной части базы данных, с которой может подключаться Lasso.

Если необходимо, SQL заявление , конечно , могут быть встроены в инлайн при использовании базы данных сервера , который поддерживает SQL:

 // Execute SQL statement
 inline(		
 	-database='db_name', 
 	-sql = 'SELECT * FROM table_name'	
 )...

В приведенном выше примере тире (-) перед командами обозначают необязательные параметры. Их можно указывать в любом порядке и генерировать динамически; последний из любых повторяющихся параметров имеет приоритет. Встроенная команда поддерживает широкий спектр параметров, позволяющих разработчикам взаимодействовать с базами данных, о которых они могут не знать.

Можно создавать настраиваемые соединители баз данных, что позволяет использовать абстрактную природу встроенной команды.

99 бутылок пива

Следующий пример процедуры распечатывает текст песни "99 Bottles of Beer".

// Define a couple of useful methods

	define br => '<br/>'
	define bottles(n::integer) => #n != 1 ? ' bottles' | ' bottle'

// Declare the local that will store the lyrics as a string

	local(out = '')

// Use Lasso query syntax to generate the lyric

	with n in 99 to 1 by -1 do {

		#out +=  #n + bottles(#n) + ' of beer on the wall, ' + br
		#out +=  #n + bottles(#n) + ' of beer; ' + br
		#n--
		#out += 'Take one down, pass it around, ' + br
		#out += #n + bottles(#n) + ' of beer on the wall. ' + (br * 2)
	}

// Output result

	#out

В следующем примере используется ООП-подход для вывода текста песни, когда объект представлен в виде строки:

// Define type
define bottles_of_beer => type {

	// Define internal data 
	data private bottles = 99

	// Define private methods
	private br => '<br/>'
	private s => .bottles != 1 ? 's' | ''
	
	// Generate lyrics when object represented as a string
	public asstring => {

		local(out = '')
	
		// Use Lasso query syntax to generate the lyrics
	

		with n in 99 to 1 by -1 do {
			.bottles = #n
			#out +=  .bottles + ' bottle' + .s + ' of beer on the wall, ' + .br
			#out +=  .bottles + ' bottle' + .s + ' of beer; ' + .br
			.bottles--
			#out += 'Take one down, pass it around, ' + .br
			#out += .bottles + ' bottle' + .s + ' of beer on the wall. ' + (.br * 2) 
		}

		// Return result
		return #out
	}
}

bottles_of_beer

Инструменты разработки, среды

  • ЛассоЛаб
  • Lasso Studio для Eclipse
  • Языковой режим лассо для Coda
  • Языковой модуль Lasso для BBEdit

Ссылки

внешние ссылки