Lasso (programming language)
   HOME

TheInfoList



OR:

Lasso is an
application server An application server is a server that hosts applications or software that delivers a business application through a communication protocol. An application server framework is a service layer model. It includes software components available to a ...
and server management interface used to develop internet applications and is a general-purpose,
high-level programming language In computer science, a high-level programming language is a programming language with strong Abstraction (computer science), abstraction from the details of the computer. In contrast to low-level programming languages, it may use natural language ...
. Originally a web datasource connection tool for Filemaker and later included in
Apple Computer Apple Inc. is an American multinational technology company headquartered in Cupertino, California, United States. Apple is the largest technology company by revenue (totaling in 2021) and, as of June 2022, is the world's biggest company b ...
's FileMaker 4.0 and
Claris Homepage Claris Home Page was one of the earliest true WYSIWYG HTML editors, developed from 1994 on. The project was code-named Loma Prieta. Claris purchased it from San Andreas Systems, reworked it to use the user interface common to all their products, ...
as CDML, it has since evolved into a complex language used to develop and serve large-scale internet applications and web pages. Lasso includes a simple template system allowing code to control generation of
HTML The HyperText Markup Language or HTML is the standard markup language for documents designed to be displayed in a web browser. It can be assisted by technologies such as Cascading Style Sheets (CSS) and scripting languages such as JavaScri ...
and other content types. Lasso is
object-oriented Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of pro ...
and every value is an
object Object may refer to: General meanings * Object (philosophy), a thing, being, or concept ** Object (abstract), an object which does not exist at any particular time or place ** Physical object, an identifiable collection of matter * Goal, an ...
. It also supports
procedural programming Procedural programming is a programming paradigm, derived from imperative programming, based on the concept of the ''procedure call''. Procedures (a type of routine or subroutine) simply contain a series of computational steps to be carried ...
through ''unbound'' methods. The language uses traits and
multiple dispatch Multiple dispatch or multimethods is a feature of some programming languages in which a function or method can be dynamically dispatched based on the run-time (dynamic) type or, in the more general case, some other attribute of more than one of ...
extensively. Lasso has a dynamic
type system In computer programming, a type system is a logical system comprising a set of rules that assigns a property called a type to every "term" (a word, phrase, or other set of symbols). Usually the terms are various constructs of a computer progra ...
, where objects can be loaded and augmented at runtime, automatic
memory management Memory management is a form of resource management applied to computer memory. The essential requirement of memory management is to provide ways to dynamically allocate portions of memory to programs at their request, and free it for reuse when ...
, a comprehensive
standard library In computer programming, a standard library is the library made available across implementations of a programming language. These libraries are conventionally described in programming language specifications; however, contents of a language's as ...
, and three
compiling In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs that ...
methodologies:
dynamic Dynamics (from Greek δυναμικός ''dynamikos'' "powerful", from δύναμις ''dynamis'' "power") or dynamic may refer to: Physics and engineering * Dynamics (mechanics) ** Aerodynamics, the study of the motion of air ** Analytical dyna ...
(comparable to
PHP PHP is a general-purpose scripting language geared toward web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by The PHP Group. ...
-
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (pro ...
),
just-in-time compilation In computing, just-in-time (JIT) compilation (also dynamic translation or run-time compilations) is a way of executing computer code that involves compilation during execution of a program (at run time) rather than before execution. This may cons ...
(comparable to
Java Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's List ...
or
.NET Framework The .NET Framework (pronounced as "''dot net"'') is a proprietary software framework developed by Microsoft that runs primarily on Microsoft Windows. It was the predominant implementation of the Common Language Infrastructure (CLI) until bein ...
), and pre-compiled (comparable to C). Lasso also supports Query Expressions, allowing elements within arrays and other types of sequences to be iterated, filtered, and manipulated using a natural language syntax similar to SQL. Lasso includes full
Unicode Unicode, formally The Unicode Standard,The formal version reference is is an information technology Technical standard, standard for the consistent character encoding, encoding, representation, and handling of Character (computing), text expre ...
character support in the standard string object, allowing it to serve and support multi-byte characters such as Japanese and Swedish, and supports transparent
UTF-8 UTF-8 is a variable-width encoding, variable-length character encoding used for electronic communication. Defined by the Unicode Standard, the name is derived from ''Unicode'' (or ''Universal Coded Character Set'') ''Transformation Format 8-bit'' ...
conversion when writing string data to the network or file system. Lasso is often used as a
scripting language A scripting language or script language is a programming language that is used to manipulate, customize, and automate the facilities of an existing system. Scripting languages are usually interpreted at runtime rather than compiled. A scripting ...
, and also used in a wide range of non-scripting contexts. Lasso code can be packaged into standalone executable programs called "LassoApps", in which folder structures are compiled into single files. The Lasso Server application server runs as a system service and receives requests from the
web server A web server is computer software and underlying hardware that accepts requests via HTTP (the network protocol created to distribute web content) or its secure variant HTTPS. A user agent, commonly a web browser or web crawler, initiate ...
through
FastCGI FastCGI is a binary protocol A communication protocol is a system of rules that allows two or more entities of a communications system to transmit information via any kind of variation of a physical quantity. The protocol defines the rules, s ...
. It then hands the request off to the appropriate Lasso Instance, which formulates the response. Multiple individual instances are supported, allowing one server to handle multiple sites, each as separate processes. The server uses a high performance IO-based green threading system designed for multi-core systems. Lasso can be compared to the
server-side scripting Server-side scripting is a technique used in web development which involves employing scripts on a web server which produces a response customized for each user's (client's) request to the website. The alternative is for the web server itself ...
languages
PHP PHP is a general-purpose scripting language geared toward web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by The PHP Group. ...
and
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (pro ...
,
ColdFusion Adobe ColdFusion is a commercial rapid web-application development computing platform created by J. J. Allaire in 1995. (The programming language used with that platform is also commonly called ColdFusion, though is more accurately known as CF ...
,
Ruby A ruby is a pinkish red to blood-red colored gemstone, a variety of the mineral corundum ( aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called sa ...
, etc. Free for development, Lasso allows partial access to its source code, allowing developers to add or change major components of the language (for example, Ke Carlton's DS implementation of the Lasso Inline). Licensing comes in both SAS and stand-alone versions.


History

Lasso began in the mid-1990s when early web developers were attempting to build database-backed websites using Apple's FileMaker Pro. On the Mac platform, there were two solutions: Eric Bickford'
WEB-FM
and Russell Owens

both built in
AppleScript AppleScript is a scripting language created by Apple Inc. that facilitates automated control over scriptable Mac applications. First introduced in System 7, it is currently included in all versions of macOS as part of a package of system automa ...
and requiring the use of FileMaker Pro calculation fields for formatting. (WEB-FM was subsequently rewritten in C). In the Fall of 1995, independent developer Vince Bonfanti wrote a new CGI based on ROFM, using C/
C++ C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
for improved performance, and using the notion of HTML-based "templates" instead of relying on calculation fields. This proved very popular in the FileMaker community, and was brought to the attention of Bill Doerrfeld, owner o
Blue World Communications Inc.
a print and website development firm based out of
Issaquah, Washington Issaquah ( ) is a city in King County, Washington, United States. The population was 40,051 at the 2020 census. Located in a valley and bisected by Interstate 90, the city is bordered by the Sammamish Plateau to the north and the "Issaquah Alp ...
, who bought the
source code In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the wo ...
. At this time, Blue World experimented with improvements for the CGI in the
Frontier A frontier is the political and geographical area near or beyond a boundary. A frontier can also be referred to as a "front". The term came from French in the 15th century, with the meaning "borderland"—the region of a country that fronts o ...
scripting environment, which inspired the name "Lasso". Further need for improvement drove the creation of a C-based CGI which was later released as "Lasso 1.0". At this point Lasso only worked with FileMaker Pro 3.x and
WebSTAR WebSTAR was a web server application for the classic Mac OS. It supported the common gateway interface (CGI) and its own AppleEvents-based W*API for plug-in support, as well as SSL and similar technologies used in most early web servers. Unlike m ...
, and only ran on
Apple An apple is an edible fruit produced by an apple tree (''Malus domestica''). Apple fruit tree, trees are agriculture, cultivated worldwide and are the most widely grown species in the genus ''Malus''. The tree originated in Central Asia, wh ...
Mac OS 8 Mac OS 8 is an operating system that was released by Apple Computer on July 26, 1997. It includes the largest overhaul of the classic Mac OS experience since the release of System 7, approximately six years before. It places a greater emphasis on ...
and above. Lasso's popularity grew most notably from reviews in print publications and Blue World's hosting of and participation in many email discussion lists, many of which specifically pertained to FileMaker Pro. Blue World also made frequent appearances and was known as a leading company at MacWorld conferences. Following the release of the Lasso 1.2 lineup in January 1997, Blue World and the Bonfantis entered private talks with
Claris Claris International Inc., formerly FileMaker Inc., is a computer software development company formed as a subsidiary company of Apple Computer (now Apple Inc.) in 1987. It was given the source code and copyrights to several programs that were ...
, the software division of
Apple Computer Apple Inc. is an American multinational technology company headquartered in Cupertino, California, United States. Apple is the largest technology company by revenue (totaling in 2021) and, as of June 2022, is the world's biggest company b ...
, and owner of FileMaker Pro. Claris eventually licensed the post-version-1.2 Lasso
source code In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the wo ...
, and with the help of Vince and Paul Bonfanti released the FileMaker Web Companion as a component of FileMaker Pro 4.0. FileMaker Web Companion's language, CDML (Claris Dynamic Markup Language), differed from Lasso 1.2's LDML (Lasso Dynamic Markup Language), but was close enough as to offer an easy transition for developers looking to serve from FileMaker Pro through third-party servers and offered more compelling features. Including the Lasso-like Web Companion in FileMaker 4.0 helped grow popularity for Lasso in the fast-growing Macintosh
web development Web development is the work involved in developing a website for the Internet (World Wide Web) or an intranet (a private network). Web development can range from developing a simple single static page of plain text to complex web applications ...
community. Blue World continued developing Lasso with Kyle Jessup becoming Lasso's
lead programmer In software development, a lead programmer is responsible for providing technical guidance and mentorship to a team of software developers. Alternative titles include ''development lead'', ''technical lead'', ''lead programmer'', or ''lead applicat ...
. Lasso 2.0 was released in July 1997, introducing some fundamental shifts in how Lasso could be used. On February 26, 2002, Blue World released Lasso 5, a radical departure from the FileMaker-centric language to date. (There was never a Lasso 4 release; the version number skipped from 3 to 5.) Lasso 5 included, among many updates, a completely rewritten architecture (for OS X, Windows, Linux), and an embedded
MySQL MySQL () is an open-source relational database management system (RDBMS). Its name is a combination of "My", the name of co-founder Michael Widenius's daughter My, and "SQL", the acronym for Structured Query Language. A relational database o ...
database. Though Lasso 5 still spoke to a FileMaker database (but not to a FileMaker Server), FileMaker as a data source remained relatively slow compared to an SQL engine, and was prohibitively more expensive. Since v2.0, Lasso was fully multithreaded, allowing many connections at once, but succumbed to FileMaker's latency or lag in certain operations, and there was no way to get around it reliably other than to make major changes to the data source. Lasso 5 also added support for
Apache HTTP Server The Apache HTTP Server ( ) is a free and open-source cross-platform web server software, released under the terms of Apache License 2.0. Apache is developed and maintained by an open community of developers under the auspices of the Apache So ...
natively under OS X, Windows, and Linux, joining Webstar 5, AppleShare IP (which was replaced by OS X Server), and iTools (from Tenon). (Mac OS 9, on which Lasso had been used for many years, was unsupported). This drove closer ties to a classic
LAMP Lamp, Lamps or LAMP may refer to: Lighting * Oil lamp, using an oil-based fuel source * Kerosene lamp, using kerosene as a fuel * Electric lamp, or light bulb, a replaceable component that produces light from electricity * Light fixture, or li ...
server architecture. Blue World Communications released a series of plug-ins for popular Web development packages from Macromedia and Adobe. Lasso Studio 1.5 for Dreamweaver was a runner-up in MacWorld magazine's Editors' Choice Awards for Internet and Development in 2001, losing out to
Adobe Dreamweaver Adobe Dreamweaver is a proprietary web development tool from Adobe Inc. It was created by Macromedia in 1997 and developed by them until Macromedia was acquired by Adobe Systems in 2005. Adobe Dreamweaver is available for the macOS and Windows o ...
3. Lasso Studio for Dreamweaver 1.5 was also reviewed favorably by MacWorld magazine, earning mice. Later version of Lasso Studio supported both
Macromedia Dreamweaver Adobe Dreamweaver is a Proprietary software, proprietary web development tool from Adobe Inc. It was created by Macromedia in 1997 and developed by them until Macromedia was acquired by Adobe Systems in 2005. Adobe Dreamweaver is available for t ...
and
Adobe GoLive Adobe GoLive was a WYSIWYG HTML editor and web site management application from Adobe Systems. It replaced Adobe PageMill as Adobe's primary HTML editor and was itself discontinued in favor of Dreamweaver. The last version of GoLive that Adobe ...
including Lasso Studio 7 for Dreamweaver and GoLive on March 26, 2004. With the release of FileMaker Server and FileMaker Server Advanced version 7 in 2004 FileMaker signaled a major change in their strategy for serving data to Web sites. They emphasized XML-XSLT, ODBC, and JDBC connectivity, but only through the more expensive FileMaker Server Advanced product. Blue World began to distance the Lasso language from FileMaker and Apple. In 2005, Lasso Pro received MySQL Network certification demonstrating the importance of the popular open source database to the future of Lasso. On August 1 of 2004, Bill Doerrfeld officially sold the Lasso product line to OmniPilot Software, Inc. in Ft. Lauderdale, Florida. Lasso 7.0.3 was the last version of Lasso released by Blue World. On October 25, 2004, OmniPilot officially announced the release of Lasso 8, a version including sandboxing for multiple sites on the same server and connectivity to many new datasources. This also included the first "free" version of Lasso limited to IP addresses. OmniPilot followed this release with a number of complementary products, including Lasso Studio 8 for Dreamweaver and GoLive on March 28, 2005, Lasso Studio for
Eclipse An eclipse is an astronomical event that occurs when an astronomical object or spacecraft is temporarily obscured, by passing into the shadow of another body or by having another body pass between it and the viewer. This alignment of three ce ...
, ChartFX integration and a number of free Lasso-based solutions. In 2007, three OmniPilot employees, Kyle Jessup (the original developer of Lasso 1.0), Fletcher Sandbeck (an early employee of Blue World known for regular Tips and Tricks) and Kerry Adams (an employee of OmniPilot) created a new company, LassoSoft LLC, to purchase the intellectual property of Lasso from OmniPilot and continue development. Recognizing the need to be competitive against much more popular languages such as
PHP PHP is a general-purpose scripting language geared toward web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by The PHP Group. ...
and ASP, radical changes in architecture, syntax and structure were made and released as Lasso 9.0. Technical challenges caused by these changes, coupled with limited marketing resources, led to significant community decline as the company struggled to release documentation and support for the new language. In December 2010, a new Canadian company was formed, LassoSoft Inc., which bought and invested heavily in the Lasso 9.0 language, marketing and documentation. Kyle Jessup agreed to stay on as both Lasso's Lead Developer and Benevolent Dictator for Life. Several releases (9.1 and 9.2) have released further developments in recent years.


Release history


Code examples


Hello World

Here are three ways to say "Hello world!" on a Lasso page. Hello world!' Hello world! Square brackets are reserved in Lasso, so HTML entities must be used to show square brackets on Lasso pages for other purposes than marking Lasso tags. Alternatively, printing square brackets can be by Lasso or be disabled by including o_square_bracketsat the file top.


Inlines

// Find all records in a table inline( -database='db_name', -table='table_name', -findall ) => Inlines are the basic Lasso tool for database actions
Database commands
can be issued as above, in Lasso's db-independent metalanguage, in which case the same search code works for MySQL, FileMaker Pro or for any other database backend with which Lasso can connect. If needed, a SQL statement can of course be embedded in the inline when using a database server that supports SQL: // Execute SQL statement inline( -database='db_name', -sql = 'SELECT * FROM table_name' )... In the above example, the dashes (-) before commands denote optional parameters. These can be specified in any order and generated dynamically; the last of any duplicate parameters take precedence. The inline command supports a large range of parameterslarge range of parameters
/ref> allowing developers to interact with databases that they may not have intimate knowledge of. Custom database connectors can be created which allows leveraging the abstracted nature of the inline command.


99 Bottles of Beer

The next procedural example prints out the lyrics for the song "99 Bottles of Beer". // Define a couple of useful methods define 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 // Output result #out
The next example uses an OOP approach to print out the lyrics when the object is represented as a string: // Define type define bottles_of_beer => type bottles_of_beer


Development tools, environments

*LassoLab *Lasso Studio for
Eclipse An eclipse is an astronomical event that occurs when an astronomical object or spacecraft is temporarily obscured, by passing into the shadow of another body or by having another body pass between it and the viewer. This alignment of three ce ...
*Lasso language mode for
Coda Coda or CODA may refer to: Arts, entertainment, and media Films * Movie coda, a post-credits scene * ''Coda'' (1987 film), an Australian horror film about a serial killer, made for television *''Coda'', a 2017 American experimental film from Na ...
*Lasso language module for
BBEdit BBEdit is a proprietary text editor made by Bare Bones Software, originally developed for Macintosh System Software 6, and currently supporting macOS. History The first version of BBEdit was created as a "bare bones" text editor to serve as a "p ...


References


External links

*, LassoSoft *{{Official website, www.LassoGuide.com, LassoGuide
LassoReferenceFileMakerListSearch - LassoSoft's ListSearch EngineLassoTalk Archive on Google GroupsExecuChoice - PDF Tag Suite - PassThru - ShortStringKnop - an open source web application framework for Lasso 8 and 9LassoFusebox - a Lasso port of the popular open source Fusebox web application framework, for Lasso 8 and 9LassoBin - A PasteBin for LassoLassoForge - OpenSource Lasso ProjectstagSwap - A public exchange for Lasso custom tagsL-Debug - Debugging suite for Lasso 8 & Lasso 9
*This Wikipedia entry relies heavily o

and man

no longer available on the web. Cross-platform software Object-oriented programming languages Scripting languages Dynamically typed programming languages Filename extensions High-level programming languages Programming languages created in 1995 Class-based programming languages