Lasso (język programowania)
Paradygmat |
Wieloparadygmat : ustrukturyzowany zorientowany obiektowo ( multi-dis ), imperatyw : proceduralny , współbieżny , zorientowany na doświadczenie , Meta : refleksyjny |
---|---|
Zaprojektowany przez | Kyle'a Jessupa |
Deweloper | LassoSoft Inc. |
Po raz pierwszy pojawiły się | 1995 |
Wersja stabilna | 9.3.1 / 23 października 2015 r
|
Dyscyplina pisania | Dynamiczny z ograniczeniami (ścisła hybryda), mianownik , kaczka (hybryda) |
Język implementacji | C , Lasso |
Platforma | Międzyplatformowe |
system operacyjny | ( OS X , Windows , Linux ) |
Licencja | Prawnie zastrzeżony |
Rozszerzenia nazw plików | .lasso, .lassoapp |
Strona internetowa | |
Główne wdrożenia | |
Lasso 8, Lasso 9 | |
Inspiracje | |
Dylan , Smalltalk , Scala |
Lasso to serwer aplikacji i interfejs zarządzania serwerem używany do tworzenia aplikacji internetowych i jest językiem programowania wysokiego poziomu ogólnego przeznaczenia . Pierwotnie narzędzie do łączenia internetowych źródeł danych dla Filemaker , a później włączone do Apple Computer 's FileMaker 4.0 i Claris Homepage jako CDML, od tego czasu przekształciło się w złożony język używany do tworzenia i obsługi aplikacji internetowych i stron internetowych na dużą skalę.
Lasso zawiera prosty system szablonów pozwalający kodowi kontrolować generowanie HTML i innych typów treści . Lasso jest zorientowane obiektowo , a każda wartość jest obiektem . Obsługuje również programowanie proceduralne za pomocą metod niezwiązanych . Język szeroko wykorzystuje cechy i wielokrotne wysyłanie .
Lasso ma dynamiczny system typów , w którym obiekty mogą być ładowane i rozszerzane w czasie wykonywania, automatyczne zarządzanie pamięcią , wszechstronną bibliotekę standardową i trzy metodologie kompilacji : dynamiczna (porównywalna z PHP - Python ), kompilacja just-in-time (porównywalna z Javą lub .NET Framework ) i wstępnie skompilowany (porównywalny z C ). Lasso obsługuje również wyrażenia zapytań, umożliwiając powtarzanie, filtrowanie i manipulowanie elementami w tablicach i innych typach sekwencji przy użyciu składni języka naturalnego podobnej do SQL . Lasso zawiera pełną Unicode w standardowym obiekcie łańcuchowym, umożliwiając obsługę i obsługę znaków wielobajtowych, takich jak japoński i szwedzki, oraz obsługuje przezroczystą konwersję UTF-8 podczas zapisywania danych łańcuchowych w sieci lub systemie plików.
Lasso jest często używany jako język skryptowy , a także używany w wielu kontekstach niezwiązanych ze skryptami. Kod Lasso można spakować do samodzielnych programów wykonywalnych o nazwie „LassoApps”, w których struktury folderów są kompilowane w pojedyncze pliki.
Serwer aplikacji Lasso Server działa jako usługa systemowa i odbiera żądania z serwera WWW za pośrednictwem FastCGI . Następnie przekazuje żądanie do odpowiedniej instancji Lasso, która formułuje odpowiedź. Obsługiwanych jest wiele pojedynczych instancji, dzięki czemu jeden serwer może obsługiwać wiele witryn, z których każda jest oddzielnym procesem. Serwer wykorzystuje wysokowydajny zielonych wątków oparty na IO , przeznaczony dla systemów wielordzeniowych .
Lasso można porównać do języków skryptowych po stronie serwera PHP i Python , ColdFusion , Ruby itp.
Darmowe do programowania, Lasso umożliwia częściowy dostęp do swojego kodu źródłowego, umożliwiając programistom dodawanie lub zmianę głównych komponentów języka (na przykład implementacja Lasso Inline Ke Carltona w DS). Licencjonowanie jest dostępne zarówno w wersji SAS, jak i samodzielnej.
Historia
Lasso zaczęło się w połowie lat 90., kiedy pierwsi twórcy stron internetowych próbowali budować strony internetowe oparte na bazach danych przy użyciu FileMaker Pro firmy Apple. Na platformie Mac dostępne były dwa rozwiązania: WEB-FM Erica Bickforda i FileMaker CGI (ROFM) Russella Owensa , oba wbudowane w AppleScript i wymagające użycia pól obliczeniowych FileMaker Pro do formatowania. (WEB-FM został następnie przepisany w C).
Jesienią 1995 roku niezależny programista Vince Bonfanti napisał nowy CGI oparty na ROFM, używając C / C++ w celu poprawy wydajności i używając pojęcia „szablonów” opartych na HTML zamiast polegania na polach obliczeniowych. Okazało się to bardzo popularne w społeczności FileMaker i zwróciło na to uwagę Bill Doerrfeld, właściciel Blue World Communications Inc. , firmy zajmującej się drukowaniem i tworzeniem stron internetowych z siedzibą w Issaquah w stanie Waszyngton , który kupił kod źródłowy .
W tym czasie Blue World eksperymentował z ulepszeniami CGI w środowisku skryptowym Frontier , co zainspirowało nazwę „Lasso”. Dalsza potrzeba ulepszeń doprowadziła do stworzenia CGI opartego na C, który został później wydany jako „Lasso 1.0”. W tym momencie Lasso działało tylko z FileMaker Pro 3.x i WebSTAR i działało tylko na Apple Mac OS 8 i nowszych.
Popularność Lasso wzrosła przede wszystkim dzięki recenzjom w publikacjach drukowanych [ dyskutuj ] oraz hostingowi i uczestnictwu w wielu e-mailowych listach dyskusyjnych, z których wiele dotyczyło konkretnie FileMaker Pro. Blue World również często się pojawiał i był znany jako wiodąca firma na konferencjach MacWorld .
Po wydaniu serii Lasso 1.2 w styczniu 1997 roku, Blue World i Bonfantis rozpoczęli prywatne rozmowy z Claris , działem oprogramowania Apple Computer i właścicielem FileMaker Pro. Claris ostatecznie uzyskała licencję na kod źródłowy Lasso po wersji 1.2 iz pomocą Vince'a i Paula Bonfanti wydała FileMaker Web Companion jako składnik FileMaker Pro 4.0. Język programu FileMaker Web Companion, CDML (Claris Dynamic Markup Language), różnił się od LDML Lasso 1.2 (Lasso Dynamic Markup Language), ale był na tyle zbliżony, że oferował łatwe przejście programistom, którzy chcą obsługiwać z FileMaker Pro przez serwery innych firm, i oferował bardziej atrakcyjne funkcje.
Włączenie podobnego do Lasso Web Companion do FileMaker 4.0 pomogło zwiększyć popularność Lasso w szybko rozwijającej się społeczności programistów sieciowych komputerów Macintosh . Blue World kontynuował rozwój Lasso, a Kyle Jessup został głównym programistą Lasso . Lasso 2.0 zostało wydane w lipcu 1997 roku, wprowadzając kilka fundamentalnych zmian w sposobie używania Lasso.
26 lutego 2002 roku Blue World wypuścił Lasso 5, radykalne odejście od dotychczasowego języka zorientowanego na FileMakera. (Nigdy nie było wydania Lasso 4; numer wersji został pominięty z 3 do 5.) Lasso 5 zawierało, wśród wielu aktualizacji, całkowicie przepisaną architekturę (dla OS X, Windows, Linux) oraz osadzony MySQL Baza danych. Chociaż Lasso 5 nadal komunikował się z bazą danych FileMaker (ale nie z serwerem FileMaker), FileMaker jako źródło danych pozostawał stosunkowo wolny w porównaniu z silnikiem SQL i był znacznie droższy. Od wersji 2.0 Lasso było w pełni wielowątkowe, pozwalając na wiele połączeń jednocześnie, ale ulegało opóźnieniom lub opóźnieniom FileMakera w niektórych operacjach i nie było innego sposobu na niezawodne obejście tego niż wprowadzenie poważnych zmian w źródle danych.
Lasso 5 dodało również natywną obsługę Apache HTTP Server w systemach OS X, Windows i Linux, dołączając do Webstar 5, AppleShare IP (który został zastąpiony przez OS X Server) i iTools (od Tenon). (Mac OS 9, na którym Lasso było używane przez wiele lat, nie był obsługiwany). To zacieśniło powiązania z klasyczną LAMP . [ potrzebne źródło ]
Firma Blue World Communications wydała serię wtyczek do popularnych pakietów do tworzenia stron internetowych firm Macromedia i Adobe. Lasso Studio 1.5 dla Dreamweaver zajęło drugie miejsce w konkursie Editors 'Choice Awards for Internet and Development magazynu MacWorld w 2001 roku, przegrywając z Adobe Dreamweaver 3. Lasso Studio dla Dreamweaver 1.5 zostało również pozytywnie ocenione przez magazyn MacWorld, uzyskując 4 + 1 / 2 myszy. Późniejsza wersja Lasso Studio obsługiwała zarówno Macromedia Dreamweaver, jak i Adobe GoLive w tym Lasso Studio 7 dla Dreamweaver i GoLive w dniu 26 marca 2004 r.
Wraz z wydaniem FileMaker Server i FileMaker Server Advanced w wersji 7 w 2004 r. FileMaker zasygnalizował zasadniczą zmianę w swojej strategii dostarczania danych do witryn internetowych. Kładli nacisk na łączność XML-XSLT, ODBC i JDBC, ale tylko za pośrednictwem droższego produktu FileMaker Server Advanced. Blue World zaczął dystansować język Lasso od FileMakera i Apple. W 2005 roku Lasso Pro otrzymało certyfikat MySQL Network potwierdzający znaczenie popularnej bazy danych typu open source dla przyszłości Lasso.
1 sierpnia 2004 roku Bill Doerrfeld oficjalnie sprzedał linię produktów Lasso firmie OmniPilot Software, Inc. w Ft. Lauderdale na Florydzie. Lasso 7.0.3 była ostatnią wersją Lasso wydaną przez Blue World.
25 października 2004 r. OmniPilot oficjalnie ogłosił wydanie Lasso 8, wersji obejmującej piaskownicę dla wielu witryn na tym samym serwerze i łączność z wieloma nowymi źródłami danych. Obejmuje to również pierwszą „darmową” wersję Lasso ograniczoną do adresów IP. OmniPilot uzupełnił to wydanie o wiele produktów uzupełniających, w tym Lasso Studio 8 dla Dreamweaver i GoLive z 28 marca 2005 r., Lasso Studio dla Eclipse , integrację z ChartFX i wiele bezpłatnych rozwiązań opartych na Lasso.
W 2007 roku trzech pracowników OmniPilot, Kyle Jessup (pierwotny twórca Lasso 1.0), Fletcher Sandbeck (wczesny pracownik Blue World znany z regularnych porad i wskazówek) oraz Kerry Adams (pracownik OmniPilot) utworzyło nową firmę, LassoSoft LLC , aby zakupić własność intelektualną Lasso od OmniPilot i kontynuować rozwój. Uznanie potrzeby konkurowania z dużo bardziej popularnymi językami, takimi jak PHP i ASP radykalne zmiany w architekturze, składni i strukturze zostały wprowadzone i wydane jako Lasso 9.0. Wyzwania techniczne spowodowane tymi zmianami, w połączeniu z ograniczonymi zasobami marketingowymi, doprowadziły do znacznego spadku społeczności, ponieważ firma walczyła o wydanie dokumentacji i wsparcia dla nowego języka.
W grudniu 2010 roku powstała nowa kanadyjska firma LassoSoft Inc., która kupiła i dużo zainwestowała w język, marketing i dokumentację Lasso 9.0. Kyle Jessup zgodził się pozostać zarówno głównym programistą Lasso, jak i życzliwym dyktatorem na całe życie . Kilka wydań (9.1 i 9.2) wydało dalsze zmiany w ostatnich latach.
Historia wydania
Kolor | Oznaczający | Rozwój |
---|---|---|
Czerwony | Stare wydanie | Brak rozwoju |
Żółty | Wersja stabilna | Poprawki bezpieczeństwa |
Zielony | Wersja stabilna | Poprawki błędów i bezpieczeństwa |
Niebieski | Przyszłe wydanie | Nowe funkcje |
Wersja | Data wydania | Notatki |
---|---|---|
ROFM | >14.03.1994 | FileMaker CGI Russella Owensa, wczesne złącze oparte na AppleScript dla baz danych FileMaker Pro |
0,1 | wrzesień-1995 | Złącze CGI napisane przez Vince'a Bonafontiego w C/C++ do łączenia FileMaker Pro z siecią |
1.0 | 27-wrzesień-1996 | Złącze dla FileMaker Pro 3.x i WebSTAR |
1.1 | grudzień 1996 | Wtyczka WebSTAR, informacje o przeglądarce klienta, pełna warstwa bezpieczeństwa GUI |
1.2 | styczeń-1997 | Kod źródłowy licencjonowany dla Claris (Apple Computer Inc), nazwany CDML, zainstalowany na Claris Homepage |
2 | 17 lipca 1997 | Obejmuje obliczenia matematyczne, zmienne, złożone typy danych, uwzględnienie po stronie serwera, informacje nagłówka klienta, zaawansowane instrukcje warunkowe, interfejs klienta Java, kontrolę Apple Events dla innych aplikacji na serwerze sieciowym, wiele akcji bazodanowych i błyskawiczne publikowanie w Internecie |
2.5 | 1 grudnia 1997 r | Dodano standaryzację tagów i interoperacyjność, możliwość komunikacji z serwerem WebTen (port Apache HTTP Server na Mac OS przez Tenon Intersystems) |
3.0 | 07-październik-1998 | Dodano filtry sprawdzania poprawności danych, makra, zarządzanie plikami/katalogami, kontrole daty/czasu, zmienne listy, wiele nazwanych tokenów, niezawodną obsługę błędów, wiadomości e-mail MIME, załączniki do wiadomości e-mail, rozszerzone procedury matematyczne, ulepszone funkcje łańcuchowe, ulepszone kontrole kodowania |
3.5 | 14 kwietnia 1999 r | Dodano autoring WYSIWYG przy użyciu Macromedia Dreamweaver 2 i Adobe GoLive 4, wielowątkowość, LJAPI, opcjonalny serwer HTTP, obsługę serwera Netscape, JavaScript, XML i zaawansowany parser tagów z wbudowanymi kontrolkami debugowania |
3.6 | 5 stycznia 2000 r | Obsługa źródeł danych FileMaker 5, kreatora SQL do interaktywnych zapytań SQL, konfigurowalnych globalnych stron błędów i programu Studio for MacroMedia DreamWeaver |
3.6.5 | 1 października 2000 r | Dodano złącze do obsługi MySQL, Red Hat i OS X |
5 | 26-lut-2002 | Przepisana architektura dla OS X, Windows, Linux, z wbudowanym MySQL; dodane sesje, manipulacja plikami, natywny konektor dla Apache i LassoScript (dodanie metodologii „skryptowania” do języka) |
6 | 17-wrzesień-2002 | Dodano obrazowanie, manipulację PDF, natywny XML, integrację FTP, matematykę dat, czasy trwania |
7 | 30 sierpnia 2004 | Zewnętrzny MySQL (z powodu licencji), zamknięte złącze FileMaker |
7.1 | 13-wrzesień-2004 | Dodano kompatybilność z Filemaker Pro 7 |
8 | 25-paź-2004 | Serwer Lasso podzielony na osobne „strony” dla dostawców usług hostingowych |
8.1 | 19-wrzesień-2005 | Dodano buforowanie dokumentów, poprawki stabilności |
8.5 | 9 czerwca 2006 | Dodano pełną integrację AJAX, preinstalowane złącza wielu źródeł danych dla FileMaker, FileMaker Server Advanced, MySQL, SQLite, MS SQL Server, Sybase, Oracle, PostgreSQL, OpenBase, ODBC i silnik Spotlight firmy Apple |
9 | 29-stycznia-2010 | Poważna zmiana w architekturze: więcej składni, silne pisanie kontra słabe pisanie, kompilacja JIT, natywna serializacja, obsługa 64-bitów |
8.6 | 20-kwi-2011 | Zwiększona prędkość, stabilność |
9.1 | 11-lip-2011 | Nowy interfejs administracyjny, złącze 64-bitowe, nowe licencje SAS |
9.2 | 1 czerwca 2012 r | Dodano obsługę systemu Windows, zintegrowane debugowanie, zintegrowane profilowanie kodu |
9.3 | 23 stycznia 2015 r | Nowy interfejs administratora, nowa metodologia kompilacji, scentralizowane wdrażanie serwerów |
Przykłady kodu
Witaj świecie
Oto trzy sposoby powiedzenia „Witaj, świecie!” na stronie Lasso.
<?lasso 'Witaj, świecie!' ?> [ 'Witaj, świecie!' ] Witaj świecie!
Nawiasy kwadratowe są zarezerwowane w Lasso, więc elementy HTML muszą być używane do wyświetlania nawiasów kwadratowych na stronach Lasso w innych celach niż oznaczanie tagów Lasso. Alternatywnie, drukowanie nawiasów kwadratowych może być wykonane przez Lasso lub wyłączone przez dodanie [no_square_brackets] na górze pliku.
W liniach
+ column('url') + '">' // Znajdź wszystkie rekordy w tabeli ( -database = ' nazwa_bazy danych' , -table = 'nazwa_tabeli' , -findall ) => { // Iteruj i przetwarzaj każdy wiersz rows => { // Wypisz każdy wiersz do bieżącego żądanie internetowe content_body += ' <a i=23><a i=24><a i=25><a i=26><a i=27><a i=28><a i=29><a href="' + kolumna ( 'url' ) + '"> + kolumna (
'tytuł' ) + '</a>' } }
Inline to podstawowe narzędzie Lasso do akcji bazodanowych. Polecenia bazy danych mogą być wydawane jak powyżej, w metajęzyku Lasso niezależnym od baz danych, w którym to przypadku ten sam kod wyszukiwania działa dla MySQL, FileMaker Pro lub dla dowolnego innego zaplecza bazy danych, z którym Lasso może się połączyć.
W razie potrzeby instrukcję SQL można oczywiście osadzić w wierszu, gdy używany jest serwer bazy danych obsługujący SQL:
inline instrukcję SQL ( -database = 'nazwa_bazy danych' , -sql = 'SELECT * FROM nazwa_tabeli' ) ...
W powyższym przykładzie kreski (-) przed poleceniami oznaczają parametry opcjonalne. Można je określić w dowolnej kolejności i generować dynamicznie; ostatni ze zduplikowanych parametrów ma pierwszeństwo. Polecenie wbudowane obsługuje szeroki zakres parametrów, umożliwiając programistom interakcję z bazami danych, o których mogą nie mieć dogłębnej wiedzy.
Można tworzyć niestandardowe łączniki bazy danych, co pozwala wykorzystać abstrakcyjny charakter polecenia wbudowanego.
99 butelek piwa
Następny przykład proceduralny drukuje tekst piosenki „99 butelek piwa”.
// Zdefiniuj kilka użytecznych metod zdefiniuj br => '<br/>' zdefiniuj butelki ( n ::integer ) => #n != 1 ? 'butelki' | ' bottle' // Deklaracja lokalnego, który będzie przechowywać teksty jako ciąg znaków local ( out = '' ) // Użyj składni zapytania Lasso, aby wygenerować tekst z n w 99 do 1 przez
- 1 do { #out += #n + butelki ( #n ) + ' piwa na ścianie, ' + br #out += #n + butelki ( #n ) + ' piwa; ' + br #n -- #out += 'Weź jedną i podaj dalej, ' + br #out += #n + butelki ( #n
) + ' piwa na ścianie. ' + ( br * 2 ) } // Wygeneruj wynik #out
W następnym przykładzie zastosowano podejście OOP do wydrukowania tekstu, gdy obiekt jest reprezentowany jako ciąg znaków:
// Zdefiniuj typ zdefiniuj butelki_piwa => typ { // Zdefiniuj dane wewnętrzne data private bottles = 99 // Zdefiniuj metody prywatne private br => '<br/>' private s => . butelki != 1 ? 's' | '' // Wygeneruj tekst, gdy obiekt jest reprezentowany jako ciąg znaków public asstring => { local
( out = '' ) // Użyj składni zapytania Lasso, aby wygenerować tekst z n w 99 do 1 na -1 do { . butelki = #n #out += . butelki + „butelka” + . s + ' piwa na ścianie, ' + . br #out += . butelki + „butelka”
+ . s + ' piwa; ' + . br . butelki -- #out += 'Weź jedną i podaj dalej,' + . br #out += . butelki + „butelka” + . s + ' piwa na ścianie. ' + ( . br * 2 ) } // Zwróć wynik return # out } }
butelki_piwa
Narzędzia programistyczne, środowiska
Linki zewnętrzne
- Oficjalna strona internetowa , LassoSoft
- Oficjalna strona internetowa , LassoGuide
- LassoReference
- FileMaker
- ListSearch — silnik ListSearch firmy LassoSoft
- Archiwum LassoTalk na Nabble
- Archiwum LassoTalk w Grupach dyskusyjnych Google
- ExecuChoice — Pakiet tagów PDF — PassThru — ShortString
- Knop - platforma aplikacji internetowych typu open source dla Lasso 8 i 9
- LassoFusebox - port Lasso popularnej platformy aplikacji internetowych Fusebox typu open source dla Lasso 8 i 9
- LassoBin - PasteBin dla Lasso
- LassoForge - Projekty Lasso OpenSource
- tagSwap — publiczna wymiana niestandardowych tagów Lasso
- L-Debug - Pakiet do debugowania dla Lasso 8 i Lasso 9
- Ten wpis w Wikipedii opiera się w dużej mierze na wczesnych ogłoszeniach i wielu godnych uwagi źródłach, które nie są już dostępne w sieci.