لاسو (زبان برنامه‌نویسی)

**لاسو** یک سرور کاربری و رابط مدیریت سرور است که برای توسعه دادن نرم‌افزارهای کاربردی اینترنتی به کار می‌رود. لاسو یک زبان برنامه‌نویسی عمومی و سطح بالاست. در ابتدا لاسو فقط یک ابزار اتصال به منابع داده وب، برای **[[فایل‌میکر]]** بود و بعداً در FileMaker 4.0 Apple Computer و صفحه اصلی Claris به عنوان CDML از آن استفاده شد. از آن زمان تا کنون لاسو به یک زبان پیچیده تبدیل شده که برای توسعه نرم‌افزارهای کاربردی اینترنتی مقیاس بزرگ و صفحات وب به کار می‌رود.

لاسو شامل یک سیستم قالب ساده است که به کد اجازه کنترل نسل **[[اچ‌تی‌ام‌ال]]** و سایر انواع محتوا را می‌دهد. لاسو شی گرا است و هر مقدار ،شیء است. لاسو همچنین از برنامه‌نویسی رویه ای از طریق روش‌های *غیر وابسته* پشتیبانی می کند. این زبان از متدهای چندگانه به‌طور گسترده استفاده می‌کند.

لاسو یک سیستم پویا دارد، که در آن اشیاء را می‌توان در زمان اجرا بارگذاری و افزوده کرد. مدیریت حافظه به صورت خودکار، کتابخانه استاندارد همه‌جانبه و سه روش کامپایل: پویا (قابل مقایسه با پی اچ پی - پایتون)، کامپایل درجا (قابل مقایسه با جاوا یا NET Framework.)، و از پیش کامپایل شده (قابل مقایسه با C) است. لاسو همچنین از عبارات Query پشتیبانی می‌کند، که به عناصر در آرایه‌ها و انواع دیگر دنباله‌ها اجازه می‌دهد با استفاده از سینتکس یک زبان طبیعی شبیه SQL ,تکرار، فیلتر، و دستکاری شوند. لاسو شامل پشتیبانی کامل از کاراکترهای Unicode در شیء استاندارد رشته‌ای است که به آن اجازه می‌دهد کاراکترهای چند بایتی مانند ژاپنی و سوئدی را پشتیبانی کند، و از تبدیل UTF-8 هنگام نوشتن داده در شبکه یا سیستم فایل پشتیبانی می‌کند.

لاسو اغلب به عنوان یک زبان اسکریپت نویسی استفاده می‌شود و همچنین در طیف گسترده‌ای از زمینه‌های غیر اسکریپت نویسی هم از آن استفاده می‌شود. کد لاسو را می‌توان به برنامه‌های اجرایی مستقل به نام "LassoApps" دسته‌بندی کرد، که در آن ساختار پوشه‌ها به فایل‌های تک تک کامپایل می‌شوند.

سرور کاربردی لاسو به عنوان یک سرویس سیستم اجرا می‌شود و درخواست‌ها از سرور وب را از طریق سرور FastCGI دریافت می‌کند. سپس درخواست را به قسمت مربوطه لاسو ارجاع می‌کند که پاسخ را فرموله می‌کند. چندین نمونه از قسمت‌های مستقل پشتیبانی می‌شوند، که به سرور این اجازه را می‌دهد که چندین سایت را (هر کدام به عنوان فرایندهای مستقل) مدیریت کند. سرور از یک سیستم تردینگ با عملکرد بالا که بر اساس IO است و برای سیستم‌های چند هسته ای طراحی شده، استفاده می‌کند.

لاسو را می‌توان با زبان‌های اسکریپت نویسی سمت سرور مثل PHP و '''پایتون''' , ColdFusion، روبی و غیره مقایسه کرد.

لاسو برای توسعه، رایگان است و اجازه دسترسی جزئی به کد منبع خود و اضافه کردن یا تغییر اجزای مهم زبان (به عنوان مثال، اجرای Ke Carlton DS Lasso Inline) را می‌دهد. مجوز در هر دو نسخه SAS و مستقل ارائه می‌شود.

## تاریخچه
لاسو در اواسط دهه ۹۰ میلادی آغاز به کار کرد، زمانی که توسعه دهندگان اولیه وب سعی در اتصال پایگاه داده FileMaker Pro اپل با شبکه جهانی وب داشتند. در پلتفرم Mac دو راه حل وجود داشت: WEB-FM اریک بیکفورد و FileMaker CGI راسل اوونز (ROFM) که هر دو در **[[اپل اسکریپت]]** ساخته شده بودند و نیازمند استفاده از زمینه‌های محاسباتی FileMaker Pro برای قالب بندی بودند. (وب-FM بعداً به زبان C بازنویسی شد).

در پاییز سال ۱۹۹۵، وینس بونافونتی (توسعه دهنده)،CGI جدید را بر اساس ROFM، با استفاده از C / C ++ و از مفهوم «قالب» مبتنی بر HTML به جای تکیه بر زمینه‌های محاسباتی، برای بهبود عملکرد نوشت. این امر در انجمن FileMaker بسیار محبوب بود و توجه بیل دررفلد، صاحب شرکت Blue World Communications Inc.، یک شرکت چاپ و توسعه وب در خارج از ایساوا، واشینگتن، که کد منبع را خریداری کرد، را به خود جلب کرد.

در این زمان، جهان آبی با پیشرفت‌های انجام شده برای CGI در محیط اسکریپت Frontier آزمایش‌هایی انجام داد، که نام لاسو را الهام بخشید. نیاز به پیشرفت بیشتر باعث ایجاد CGI مبتنی بر C شد که بعدها به عنوان "Lasso 1.0" منتشر شد. در این مرحله، لاسو فقط با **[[فایل‌میکر]]** پرو 3.x و WebSTAR کار می‌کرد و تنها در سیستم عامل اپل Mac OS 8 و بالاتر اجرا می‌شد.

محبوبیت لاسو به‌طور قابل ملاحظه ای از بررسی در نشریات چاپی و همچنین میزبانی جهان آبی و مشارکتش در بسیاری از لیست‌های بحث ایمیل است که بسیاری از آن‌ها به‌طور خاص مربوط به FileMaker Pro بود. جهان آبی همچنین به صورت مداوم در همه جا حضور داشت و به عنوان یک شرکت پیشرو در کنفرانس MacWorld شناخته شد.

پس از انتشار سری Lasso 1.2 در ماه ژانویه سال ۱۹۹۷، جهان آبی و Bonfantis با Claris، بخش نرم‌افزاری Apple Computer و مالک FileMaker Pro وارد گفتگوهای خصوصی شدند. Claris در نهایت مجوز کد منبع نسخه ۱٫۲ پست لاسو را صادر کرد، و با کمک وینس و پل بونفانتی از FileMaker همنشین وب به عنوان یک جزء از نرم‌افزار FileMaker 4.0 منتشر شده‌است. زبان، (CDML (Claris Dynamic Markup Language (زبان نشانه گذاری پویا clarys), از Lasso 1.2 LDML متفاوت بود، که به توسعه دهندگان که به دنبال به کار بردن FileMaker Pro از طریق سرورهای شخص ثالث بودند، یک گذار راحت را پیشنهاد می‌کرد و همچنین ویژگی‌های کامپایل بیشتری را ارائه می‌کرد.

اضافه کردن همنشین وب شبه لاسو در FileMaker 4.0 به محبوبیت لاسو در جامعه رو به رشد توسعه وب Macintosh کمک کرد. جهان آبی به توسعه لاسو همراه با Kyle Jessup که اکنون برنامه‌نویس رهبر لاسو شده بود، ادامه داد. Lasso 2.0 در ژوئیه سال ۱۹۹۷ منتشر شد و تغییراتی اساسی در نحوه استفاده از لاسو معرفی کرد

در تاریخ ۲۶ فوریه ۲۰۰۲، جهان آبی Lasso 5 را عرضه کرد، که این امر تا آن روز، جدایی رادیکال از زبانی بود که بر مبنای FileMaker ساخته شده بود. (نسخه آزمایشی Lasso 4هرگز عرضه نشد؛ شماره نسخه از ۳ به ۵ پرید) Lasso 5 شامل بسیاری از به روز رسانی‌ها، معماری کاملاً بازنویسی شده (برای OS X، ویندوز، لینوکس) بود و یک پایگاه داده MySQL در آن تعبیه شده بود. اگر چه Lasso 5 هنوز از پایگاه داده FileMaker استفاده می‌کرد (اما نه از سرور آن)، FileMaker به عنوان یک منبع داده نسبتاً کند در مقایسه با یک موتور SQL باقی ماند که به طرز غیرقابل قبولی گران‌تر بود. از آنجا که v2.0، لاسو کاملاً چند ریسه ای بود که اجازه اتصال‌های بسیاری در یک زمان را می‌داد، اما در زمان وقوع یا تأخیر در کارکردهای خاصی به FileMaker باخت و هیچ راهی دیگری برای جبران آن نبود مگر آن که تغییرات اساسی در منبع داده ایجاد شود.

Lasso 5 همچنین پشتیبانی از Apache HTTP Server را اساساً تحت سیستم عامل OS X، ویندوز و لینوکس ایجاد کرد، که Webstar 5، AppleShare IP (که توسط OS X Server جایگزین شده‌است) و iTools (از Tenon) را به هم پیوند می‌داد. (Mac OS 9، که در آن چند سال از لاسو استفاده شده بود، پشتیبانی نشده بود). که این باعث نزدیکی بیشتر به معماری کلاسیک سرور LAMP شد. 

ارتباطات جهان آبی همچنین یک سری از افزونه‌ها را برای بسته‌های محبوب وب توسعه یافته از Macromedia و Adobe منتشر کرد. Lasso Studio 1.5 برای Dreamweaver در مراسم اهدای جوایز به انتخاب ادیتورهای مجله MacWorld برای اینترنت و توسعه، دوم شد. در سال ۲۰۰۱ به **[[ادوبی دریم‌ویور]]** ۳ باخت. Lasso Studio برای Dreamweaver 1.5 نیز از نظر مجله MacWorld با موفقیت ۴ و نیم موش مورد بررسی قرار گرفت. نسخه بعدی Lasso Studio از هر دو Macromedia Dreamweaver و Adobe GoLive از جمله Lasso Studio 7 برای Dreamweaver و GoLive در تاریخ ۲۶ مارس ۲۰۰۴ پشتیبانی کرد.

با انتشار FileMaker Server و FileMaker Server Advanced نسخه ۷ در سال 2004 FileMaker یک استراتژی جدید برای ارائه داده به سایت‌های وب عرضه کرد. آن‌ها روی XML-XSLT, ODBC و اتصال JDBC تأکید داشتند، اما تنها از طریق نرم‌افزار پیشرفته FileMaker Server Advanced. جهان آبی شروع به دور کردن زبان لاسو از FileMaker و اپل کرد. در سال ۲۰۰۵، Lasso Pro گواهینامه شبکه MySQL را دریافت کرد که اهمیت پایگاه داده منبع باز را در محبوبیت لاسو در آینده نشان می‌داد.

در ۱ آگوست سال ۲۰۰۴، بیل دورفلد رسماً خط تولید Lasso را به OmniPilot Software, Inc. در Ft. لادردریل، فلوریدا فروخت. Lasso 7.0.3 آخرین نسخه لاسو منتشر شده توسط جهان آبی بود.

در ۲۵ اکتبر ۲۰۰۴، OmniPilot رسماً انتشار Lasso 8 را اعلام کرد، یک نسخه شامل جعبه شنی برای چند سایت در سرور یکسان و اتصال به بسیاری از پایگاه داده جدید است. این همچنین شامل اولین نسخه «رایگان» از لاسو است که محدود به آدرس‌های IP بود. OmniPilot این عرضه را با تعدادی محصول مکمل ادامه داد، از جمله Lasso Studio 8 برای Dreamweaver و GoLive در تاریخ ۲۸ مارس ۲۰۰۵، لاسو استودیو برای گرفتگی، ادغام ChartFX و تعدادی از راه حل‌های مبتنی بر لاسو.

در سال ۲۰۰۷، سه کارمند، Kyle Jessup (توسعه دهنده اصلی Lasso 1.0)، فلچر سندبک (کارمند اولیه جهان آبی شناخته شده برای نکات و ترفندهای معمول) و کری آدامز (کارمند OmniPilot) یک شرکت جدید را (LassoSoft LLC) برای خرید مالکیت فکری لاسو از OmniPilot و ادامه توسعه آن ایجاد کردند. شناخت نیاز به رقابت در برابر زبان‌های بسیار محبوب مانند PHP و ASP، باعث شد تا آن‌ها تغییرات رادیکال در معماری، سینتکس و ساختار لاسو ایجاد کنند و به عنوان Lasso 9.0 منتشر کنند. چالش‌های فنی ناشی از این تغییرات همراه با منابع محدود بازاریابی منجر به کاهش طرد شدن از طرف جامعه شد در حالیکه شرکت تلاش می‌کرد تا مستندات و پشتیبانی از زبان جدید را منتشر کند.

در دسامبر ۲۰۱۰، یک شرکت جدید کانادایی، LassoSoft Inc.، که Lasso 9.0 را خرید، روی آن، بازاریابی و مستنداتش سرمایه‌گذاری کرد. کایل جاسوپ موافقت کرد که به عنوان رهبر توسعه دهندگان Lasso و دیکتاتور خیرخواه برای زندگی باقی بماند. چندین نسخه (۹٫۱ و ۹٫۲) پیشرفت‌های بیشتری را در سال‌های اخیر منتشر کرده‌اند.

### تاریخ انتشار

## نمونه‌های کد
### سلام دنیا
در اینجا سه راه برای گفتن "Hello World" در یک صفحه Lasso. 
```lasso
<?lasso 'Hello World!' ?>

['Hello world!']

Hello world!
```
 براکت‌های مربعی در Lasso رزرو می‌شوند، بنابراین برای ساختن عناصر HTML باید علامت مربع در صفحات Lasso برای اهداف دیگر استفاده شود تا از علامت گذاری برچسب‌های لاسو. متناوباً، چاپ مربع می‌تواند توسط لاسو باشد یا توسط [no_square_brackets] در بالای فایل غیرفعال شود.

### خطوط

```lasso
// 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>'
}
}
```
 Inlines ابزار پایه لاسو برای اقدامات پایگاه داده‌است. دستورات پایگاه داده را می‌توان به صورت فوق در زبان Metz زبان مستقل از زبان Lasso صادر کرد، در این صورت همان کد جستجو برای MySQL, FileMaker Pro یا برای هر پایگاه داده دیگری که Lasso می‌تواند به آن متصل شود، کار می‌کند.

در صورت نیاز، در هنگام استفاده از یک سرور پایگاه داده‌ای که از SQL پشتیبانی می‌کند، بیانیه SQL می‌تواند به صورت خطی تعبیه شود: 
```lasso
// Execute SQL statement
 inline(
  -database='db_name',
  -sql = 'SELECT * FROM table_name'
 )...
```
 در مثال بالا، خط تیره (-) قبل از دستورات پارامترهای اختیاری را نشان می‌دهد. این‌ها را می‌توان در هر منظور مشخص کرد و به صورت پویا تولید کرد. آخرین پارامترهای هر تکراری برتری دارند. فرمان inline از طیف وسیعی از پارامترها پشتیبانی می‌کند اجازه می‌دهد که توسعه دهندگان با پایگاه‌های داده ارتباط برقرار کنند که ممکن است دانش آن‌ها را درک نکنند.

اتصال به پایگاه داده سفارشی ایجاد می‌شود که امکان استفاده از ماهیت انتزاعی فرمان inline را می‌دهد.

### ۹۹ بطری آبجو
مثال رویه بعدی شعرهای "۹۹ بطری آبجو" را چاپ می‌کند. 
```lasso
// 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 {
#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
```
 مثال بعدی از یک روش OOP برای چاپ اشعار استفاده می‌کند وقتی که شی به عنوان یک رشته نمایش داده می‌شود: 
```lasso
// Define type
define bottles_of_beer => type {

// Define internal data
data private bottles = 99

// Define private methods
private 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
```


## ابزارهای توسعه، محیط
* LassoLab
* لاسو استودیو برای گرفتگی
* حالت زبان Lasso برای Coda
* ماژول زبان Lasso برای BBEdit

## منابع

*  , LassoSoft
*  , LassoGuide
* LassoReference
* FileMaker
* ListSearch - موتور جستجوی فهرست LassoSoft
* بایگانی LassoTalk در Nabble 
* آرشیو LassoTalk در Google Groups
* ExecuChoice - PDF Tag Suite - PassThru - ShortString
* Knop - چارچوب وب برنامه Open Source برای Lasso 8 و ۹ است
* LassoFusebox - یک پورت Lasso از چارچوب برنامه وب Fusebox محبوب Open Source برای Lasso 8 و ۹ است
* LassoBin - یک PasteBin برای Lasso
* LassoForge - پروژه‌های OpenSource Lasso
* tagSwap - یک تبادل عمومی برای برچسب‌های سفارشی Lasso
* L-Debug - مجموعه اشکالزدایی برای Lasso 8 & Lasso 9
* این ورود ویکی‌پدیا به شدت بر اطلاعیه‌های اولیه و بسیاری از منابع قابل توجه دیگر که در وب موجود نیست، تکیه می‌کند.

رده:پسوند نام پرونده
رده:زبان‌های اسکریپت‌نویسی
رده:زبان‌های برنامه‌نویسی ساخته‌شده در ۱۹۹۵ (میلادی)
رده:زبان‌های برنامه‌نویسی سطح بالا
رده:زبان‌های برنامه‌نویسی شیءگرا
رده:زبان‌های برنامه‌نویسی کلاس محور
رده:زبان‌های برنامه‌نویسی ماشینی پویا
رده:صفحات با ترجمه بازبینی‌نشده
رده:مقاله‌ها با نحو منسوخ‌شده تصویر
رده:نرم‌افزارهای چندسکویی
رده:ویکی‌سازی رباتیک