Lasso es un servidor de aplicaciones y una interfaz de gestión de servidores diseñados para desarrollar aplicaciones de Internet. También es un lenguaje de programación de alto nivel y propósito general . Originalmente era una herramienta de conexión de fuentes de datos web [1] para Filemaker y luego se incluyó en FileMaker 4.0 de Apple Computer y Claris Homepage como CDML, [2] [3] desde entonces ha evolucionado hasta convertirse en un lenguaje complejo que se utiliza para desarrollar y ofrecer aplicaciones de Internet y páginas web a gran escala.
Lasso incluye un sistema de plantillas simple que permite que el código controle la generación de HTML y otros tipos de contenido . Lasso es un lenguaje de programación orientado a objetos en el que cada valor es un objeto . También admite la programación procedimental a través de métodos no vinculados . El lenguaje utiliza rasgos y envío múltiple de forma extensiva.
Lasso tiene un sistema de tipos dinámico , donde los objetos se pueden cargar y aumentar en tiempo de ejecución, administración automática de memoria , una biblioteca estándar integral y tres metodologías de compilación : dinámica (comparable a PHP - Python ), compilación justo a tiempo (comparable a Java o .NET Framework ) y precompilada (comparable a C ). Lasso también admite expresiones de consulta, [4] lo que permite iterar, filtrar y manipular elementos dentro de matrices y otros tipos de secuencias utilizando una sintaxis de lenguaje natural similar a SQL . [5] Lasso incluye soporte completo de caracteres Unicode en el objeto de cadena estándar, lo que le permite servir y admitir caracteres multibyte como japonés y sueco, y admite la conversión UTF-8 transparente al escribir datos de cadena en la red o el sistema de archivos.
Lasso se utiliza a menudo como lenguaje de scripting y también en una amplia gama de contextos que no son de scripting. El código Lasso se puede empaquetar en programas ejecutables independientes llamados "LassoApps", en los que las estructuras de carpetas se compilan en archivos individuales. [6]
El servidor de aplicaciones Lasso Server se ejecuta como un servicio del sistema y recibe solicitudes del servidor web a través de FastCGI . Luego, envía la solicitud a la instancia Lasso correspondiente, que formula la respuesta. Se admiten varias instancias individuales, lo que permite que un servidor gestione varios sitios, cada uno como procesos separados. El servidor utiliza un sistema de subprocesos ecológicos basado en E/S de alto rendimiento diseñado para sistemas de múltiples núcleos .
Lasso se puede comparar con los lenguajes de programación del lado del servidor PHP [7] [8] y Python , ColdFusion , Ruby , etc. [9] [10]
Lasso comenzó a funcionar a mediados de los años 90, cuando los primeros desarrolladores web intentaban crear sitios web respaldados por bases de datos utilizando FileMaker Pro de Apple. En la plataforma Mac, había dos soluciones: WEB-FM de Eric Bickford y FileMaker CGI (ROFM) de Russell Owens, ambas creadas en AppleScript y que requerían el uso de campos de cálculo de FileMaker Pro para el formato. (WEB-FM se reescribió posteriormente en C).
En el otoño de 1995, el desarrollador independiente Vince Bonfanti escribió un nuevo CGI basado en ROFM, utilizando C / C++ para mejorar el rendimiento y utilizando el concepto de "plantillas" basadas en HTML en lugar de depender de campos de cálculo. Esto resultó muy popular en la comunidad de FileMaker y llamó la atención de Bill Doerrfeld, propietario de Blue World Communications Inc., una empresa de desarrollo de sitios web e impresión con sede en Issaquah, Washington , que compró el código fuente . [11]
En ese momento, Blue World experimentó con mejoras para el CGI en el entorno de scripting de Frontier, lo que inspiró el nombre "Lasso". La necesidad de mejoras adicionales impulsó la creación de un CGI basado en C que luego se lanzó como "Lasso 1.0". En ese momento, Lasso solo funcionaba con FileMaker Pro 3.x y WebSTAR , y solo se ejecutaba en Apple Mac OS 8 y superiores. [12]
El uso de Lasso creció notablemente a partir de las revisiones en publicaciones impresas [13] [ discutir ] y el alojamiento y la participación de Blue World en muchas listas de discusión por correo electrónico, muchas de las cuales se referían específicamente a FileMaker Pro. Blue World también hizo apariciones frecuentes y era conocida como una empresa líder en las conferencias MacWorld . [14]
Tras el lanzamiento de la línea Lasso 1.2 en enero de 1997, Blue World y Bonfanti iniciaron conversaciones privadas con Claris , la división de software de Apple Computer y propietaria de FileMaker Pro. Finalmente, Claris licenció el código fuente de Lasso posterior a la versión 1.2 y, con la ayuda de Vince y Paul Bonfanti, lanzó FileMaker Web Companion como un componente de FileMaker Pro 4.0. El lenguaje de FileMaker Web Companion, CDML (Claris Dynamic Markup Language), [15] difería del LDML (Lasso Dynamic Markup Language) de Lasso 1.2, pero era lo suficientemente parecido como para ofrecer una transición sencilla para los desarrolladores que buscaban servir desde FileMaker Pro a través de servidores de terceros [16] y ofrecía funciones más atractivas. [17]
La inclusión de Web Companion, similar a Lasso, en FileMaker 4.0 también estimuló el crecimiento de Lasso dentro de la comunidad de desarrollo web de Macintosh . Blue World continuó desarrollando Lasso y Kyle Jessup se convirtió en el programador principal de Lasso. Lasso 2.0 se lanzó en julio de 1997 e introdujo algunos cambios fundamentales en la forma en que se podía utilizar Lasso. [18]
El 26 de febrero de 2002, Blue World lanzó Lasso 5, un cambio radical respecto del lenguaje centrado en FileMaker hasta la fecha (nunca hubo un lanzamiento de Lasso 4; el número de versión pasó del 3 al 5). Lasso 5 incluía, entre muchas actualizaciones, una arquitectura completamente reescrita (para OS X, Windows, Linux) y una base de datos MySQL incorporada . [19] Aunque Lasso 5 todavía se comunicaba con una base de datos FileMaker (pero no con un servidor FileMaker), FileMaker como fuente de datos seguía siendo relativamente lento en comparación con un motor SQL, y era prohibitivamente más caro. Desde la versión 2.0, Lasso era totalmente multiproceso, lo que permitía muchas conexiones a la vez, pero sucumbía a la latencia o el retraso de FileMaker en ciertas operaciones, y no había forma de evitarlo de manera confiable, salvo realizar cambios importantes en la fuente de datos. [20]
Lasso 5 también agregó soporte para Apache HTTP Server de forma nativa en OS X, Windows y Linux , uniéndose a Webstar 5, AppleShare IP (que fue reemplazado por OS X Server) y iTools (de Tenon [21] ). (Mac OS 9, en el que Lasso se había utilizado durante muchos años, no tenía soporte). Esto impulsó vínculos más estrechos con una arquitectura de servidor LAMP clásica . [ cita requerida ]
Blue World Communications lanzó una serie de complementos para los paquetes de desarrollo web más populares de Macromedia y Adobe. Lasso Studio 1.5 para Dreamweaver quedó en segundo lugar en los premios Editors' Choice Awards para Internet y desarrollo de la revista MacWorld [22] en 2001, perdiendo ante Adobe Dreamweaver 3. Lasso Studio para Dreamweaver 1.5 [23] también recibió críticas favorables de la revista MacWorld, que le valió un 4+1 ⁄ 2 ratones. Las versiones posteriores de Lasso Studio admitieron tanto Macromedia Dreamweaver como Adobe GoLive, incluido Lasso Studio 7 para Dreamweaver y GoLive [24] el 26 de marzo de 2004.
Con el lanzamiento de FileMaker Server y FileMaker Server Advanced versión 7 en 2004, FileMaker marcó un cambio importante en su estrategia para servir datos a sitios web. Hicieron hincapié en la conectividad XML-XSLT, ODBC y JDBC, pero sólo a través del producto más caro FileMaker Server Advanced. [25] Blue World comenzó a distanciar el lenguaje Lasso de FileMaker y Apple. En 2005, Lasso Pro recibió la certificación MySQL Network [26], lo que demuestra la importancia de la popular base de datos de código abierto para el futuro de Lasso.
El 1 de agosto de 2004, Bill Doerrfeld vendió oficialmente la línea de productos Lasso a OmniPilot Software, Inc. en Ft. Lauderdale, Florida. Lasso 7.0.3 fue la última versión de Lasso lanzada por Blue World. [27]
El 25 de octubre de 2004, OmniPilot anunció oficialmente el lanzamiento de Lasso 8, una versión que incluye sandboxing para múltiples sitios en el mismo servidor y conectividad a muchas nuevas fuentes de datos. [28] Esto también incluyó la primera versión "gratuita" de Lasso limitada a direcciones IP. [29] OmniPilot siguió este lanzamiento con una serie de productos complementarios, incluyendo Lasso Studio 8 para Dreamweaver y GoLive [30] el 28 de marzo de 2005, Lasso Studio para Eclipse , integración ChartFX y una serie de soluciones gratuitas basadas en Lasso. [31]
En 2007, tres empleados de OmniPilot, Kyle Jessup (el desarrollador original de Lasso 1.0), Fletcher Sandbeck (uno de los primeros empleados de Blue World conocido por sus consejos y trucos habituales) y Kerry Adams (un empleado de OmniPilot) crearon una nueva empresa, LassoSoft LLC, para comprar la propiedad intelectual de Lasso de OmniPilot y continuar con el desarrollo. [32] [33] Reconociendo la necesidad de ser competitivo contra lenguajes mucho más populares como PHP y ASP , se realizaron cambios radicales en la arquitectura, la sintaxis y la estructura y se lanzó como Lasso 9.0. Los desafíos técnicos causados por estos cambios, junto con los recursos de marketing limitados, llevaron a un declive significativo de la comunidad mientras la empresa luchaba por publicar documentación y soporte para el nuevo lenguaje. [34] [35]
En diciembre de 2010 se formó una nueva empresa canadiense, LassoSoft Inc., que compró e invirtió fuertemente en el lenguaje, el marketing y la documentación de Lasso 9.0. Kyle Jessup aceptó quedarse como desarrollador principal de Lasso y dictador benévolo de por vida . Varias versiones (9.1 y 9.2) han lanzado desarrollos adicionales en los últimos años. [36]
Aquí hay tres formas de decir "¡Hola mundo!" en una página Lasso.
<?lasso '¡Hola mundo!' ?> [ '¡Hola Mundo!' ]¡Hola Mundo!
Los corchetes están reservados en Lasso, por lo que se deben usar entidades HTML para mostrar corchetes en páginas Lasso con otros fines que no sean marcar etiquetas Lasso. Alternativamente, la impresión de corchetes se puede realizar mediante Lasso o se puede deshabilitar incluyendo [no_square_brackets] en la parte superior del archivo.
// Buscar todos los registros en una tabla en línea ( -database = 'db_name' , -table = 'table_name' , -findall ) => { // Iterar y procesar cada fila rows => { // Enviar cada fila a la solicitud web actual content_body += ' <a href="' + column ( 'url' ) + '"> ' + column ( 'title' ) + '</a>' } }
Las líneas son la herramienta básica de Lasso para las acciones de bases de datos. Los comandos de bases de datos se pueden emitir como se indicó anteriormente, en el metalenguaje independiente de la base de datos de Lasso, en cuyo caso el mismo código de búsqueda funciona para MySQL, FileMaker Pro o para cualquier otro backend de base de datos con el que Lasso pueda conectarse.
Si es necesario, se puede incorporar una declaración SQL en línea cuando se utiliza un servidor de base de datos que admita SQL:
// Ejecutar declaración SQL en línea ( -database = 'db_name' , -sql = 'SELECT * FROM table_name' ) ...
En el ejemplo anterior, los guiones (-) antes de los comandos indican parámetros opcionales. Estos pueden especificarse en cualquier orden y generarse dinámicamente; el último de los parámetros duplicados tiene prioridad. El comando inline admite una amplia gama de parámetros [56], lo que permite a los desarrolladores interactuar con bases de datos de las que quizás no tengan un conocimiento profundo.
Se pueden crear conectores de base de datos personalizados que permitan aprovechar la naturaleza abstracta del comando en línea.
El siguiente ejemplo de procedimiento imprime la letra de la canción "99 botellas de cerveza".
// Definir un par de métodos útilesdefine br => '<br/>' define botellas ( n :: entero ) => #n != 1 ? ' botellas' | ' botella' // Declara el local que almacenará la letra como una cadenalocal ( salida = '' ) // Utilice la sintaxis de consulta Lasso para generar la letracon n en 99 a 1 por - 1 hacer { #out += #n + botellas ( #n ) + ' de cerveza en la pared, ' + br #out += #n + botellas ( #n ) + ' de cerveza; ' + br #n -- #out += 'Toma una, pásala, ' + br #out += #n + botellas ( #n ) + ' de cerveza en la pared. ' + ( br * 2 ) } // Resultado de salida#afuera
El siguiente ejemplo utiliza un enfoque OOP para imprimir la letra cuando el objeto se representa como una cadena:
// Definir tipo define botellas_de_cerveza => tipo { // Definir datos internos datos privados botellas = 99 // Definir métodos privados private br => '<br/>' private s => . botellas != 1 ? 's' | '' // Generar letras cuando el objeto se representa como una cadena public asstring => { local ( out = '' ) // Utilice la sintaxis de consulta Lasso para generar la letra con n en 99 a 1 por - 1 hacer { . botellas = #n #fuera += . botellas + ' botella' + . s + ' de cerveza en la pared, ' + . br #fuera += . botellas + ' botella' + . s + ' de cerveza; ' + . br . botellas -- #fuera += 'Toma una, pásala, ' + . br #fuera += . botellas + ' botella' + . s + ' de cerveza en la pared. ' + ( . br * 2 ) } // Devolver resultado return #out } } botellas_de_cerveza