برای نرم‌افزار تحت خط فرمان کرل کرل (نرم‌افزار) را ببینید.
**کرل** زبان برنامه‌نویسی (به انگلیسی: Curl) شی‌گرای انعکاسی برای برنامه‌های کاربردی وب تعاملی است، هدف انتقال راحت بین قالب‌بندی و برنامه‌نویسی است. این امکان باعث می‌شود که به اشیاء پیچیده در اسناد ساده بدون نیاز به سوئیچ بین زبان‌های برنامه‌نویسی و پایگاه‌های پیشرفته بدهد.

زبان در صدد است به رفع یک مشکل طولانی مدت، بلوک‌های مختلف ساختمان که هر سند وب مدرن را تشکیل می‌دهند که اغلب نیاز به روش‌های بسیار مختلف پیاده‌سازی دارد؛ زبان‌های مختلف، ابزارهای مختلف، قالب‌های مختلف، اغلب گروه‌ها کاملاً متفاوت هستند. در نهایت (و اغلب دشوارترین) جمع‌آوری همه این بلوک‌ها در ارتباط با یکدیگر به شیوه‌ای سازگار است. کرل تلاش می‌کند برای اجتناب از این مشکلات توسط فراهم آوردن یک رابط نحوی و معنایی سازگار در تمام سطوح ایجاد محتوای وب (از HTML ساده تا برنامه‌نویسی شی‌گرا پیچیده).

کرل ترکیبی از متن نشانه گذاری (مشابه HTML) اسکریپتی (مشابه جاوا اسکریپت)، و محاسبات سنگین امری (مانند جاوا، #C، c++) در یک چارچوب واحد و یکپارچه است. به همین خاطر در طیف وسیعی از شرکت‌های داخلی، B2B B2C و برنامه‌های کاربردی استفاده می‌شود.

کرل یک زبان نشانه گذاری شبیه HTML است که متنی ساده به عنوان متن نشان داده شده‌است؛ در همان زمان، کرل شامل یک زبان برنامه‌نویسی شی‌گرا است که از ارث‌بری چندگانه پشتیبانی می‌کند. برنامه‌های کاربردی کرل به رعایت تفکیک اطلاعات، سبک و رفتار که HTML، شیوه نامه آبشاری (CSS)، و جاوا اسکریپت وضع کرده‌اند احتیاجی ندارد، همچنین آن سبک برنامه‌نویسی را می‌توان در صورت دلخواه در کرل استفاده کرد.

در حالی که زبان کرل را می‌توان به عنوان یک جایگزین HTML برای ارائه متن فرمت شده استفاده کرد، محدودهٔ توانایی‌های آن در روش کامپایل، نوع داده‌ای قوی، سیستم زبان برنامه‌نویسی شی‌گرا هم می‌باشد. 

هر دو تألیف (در سطح HTML) و ساختار برنامه در کرل را می‌توان در کد کاربر توسعه داد. زبان طراحی شده برنامه‌های کاربردی کرل می‌توانند به کد محلی ماشین مشتری توسط کامپایلر همزمان و اجرا با سرعت بالا ترجمه کنند.

مشاهده شده‌است که اپلت‌های کرل از کرل RTE که یک محیط زمان اجرا با یک افزونه برای مرورگر وب است استفاده می‌کنند. در حال حاضر، در مایکروسافت ویندوز، لینوکس و مک او اس پشتیبانی می‌شود.

کرل یکی از ویژگی‌های اپلت‌های جدا را برای چندین سال داشت، که یک اپلت وب گسترده شده‌است که به صورت مستقل روی کامپیوتر کاربر، یک پنجره مرورگر اجرا می‌شود همانند سیلورلایت ۳ و Adobe AIR. همچنین مرورگر مخصوص سایت را مشاهده کنید. اپلت‌های کرل نیز می‌توانند نوشته شوند به طوری که آن‌ها را آفلاین اجرا خواهد کرد. در واقع، IDE کرل یک برنامه نوشته شده به کرل است.

نحو
---

یک اپلت سادهٔ کرل برای hello world هست:

````
{Curl 5.0, 6.0, 7.0 applet}
{text
   color = "blue",
   font-size = 16pt,
   Hello World}
````

این کد را اجرا خواهد کرد در صورتی که کاربر حداقل یکی از نسخه‌های حلقه ۵٫۰، ۶٫۰، یا ۷٫۰ نصب کرده باشد.

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

````
{paragraph
   paragraph-left-indent=۰٫۵in,
   {text color = "red", font-size = 12pt,
     Hello}
   {text color = "green", font-size = 12pt,
     World}}
````

به تازگی این سبک از طرح توسط "سازندگان" در زبان Groovy برای JVM به تصویب رسیده است، اما همچنین برای کاربران CSS و Tcl / TK آشنا است. بیشترین امکانات را برای برنامه‌های کاربردی وب در حال حاضر از طریق ترکیبی از کتابخانه‌های جاوا اسکریپت + HTML + CSS در زبان کرل پیاده‌سازی کرد، از جمله ویژگی‌های معمول آن با نمونه اولیه + script.aculo.us مانند پانل آکوردئون همراه می‌شود.
کرل مجموعه فراخوانی مجدد در شیوه نیز توسط Groovy پذیرفته شده‌است:

````
{CommandButton width=100pt,
   height = 50pt,
   label = {center {bold Invokes an event handler when clicked}},
   control-color = "orange",
   || Attach the following event handler to this CommandButton
   {on Action do
       {popup-message
           title = "Your Message",
           "This is a user message dialog."
       }
````
`}}`

پیشنهاد کرل استفاده از نوار عمودی در برخی تغییرات است. ساده‌ترین به شرح زیر است:

````
{text A comment can be on a line by itself,
|| A comment on a line by itself
or it can be at the end || A comment on the same line as code
of a line.}
````

کرل‌های نشانه گذاری به عنوان سبک وزن
------------------------------------

از آنجا که کرل هر دو روش متن تعریف شده توسط کاربر و شیوه را فراهم می‌کند، کرل می‌تواند به آسانی به عنوان نشانه گذاری بسیار سبک وزن و دامنه خاص استفاده شود. مزیت عمده بر متن نشانه گذاری HTML این است که متن رابه عنوان مثال، utf-۸ پشتیبانی می‌کند. و متن را در یک ویرایشگر یونیکد فعال می‌کند بدون هیچ گونه صرف نظر کردن از کاراکتر (مانند جاوا اسکریپت، کرل یونیکد پسند است.) شعر به عنوان مثال خواهد بود:

````
{poem || wraps entire poem
   {stanza  || first verse here in any language
   }
   {stanza  || another verse here in any language
   }
}
````

که در ابتدا می‌تواند با تعریف شعر و نشانه گذاری بند به عنوان فرمت‌های متن پاراگراف اجرا شود. بند می‌تواند بیشتر تصفیه شده که شامل یک لنگر ناوبری مخفی برای ناوبری صفحه با استفاده از کرل {قسمت} که خود یک روش متنی است.

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

جستارهای وابسته
---------------

* Homoiconicity: کرل هم یک زبان برنامه‌نویسی و فرمت داده است

منابع
-----

پیوندهای اضافه
--------------

|  |  |
| --- | --- |
|  | ویکی‌کتاب دارای کتابی پیرامون موضوع ***Curl*** است |

* MIT Curl Project, the results of the Curl research project at مؤسسه فناوری ماساچوست Laboratory for Computer Science.
* Curl, Inc. and Curl International Corp. develop and distribute a suite of commercial products which are based on the results of the MIT research. Owned by SCSK Corporation a majority-owned unit of Sumitomo Corp.
* -029 InfoWorld review of Curl 6.0[*پیوند مرده*] by Martin Heller. InfoWorld awarded Curl its 2008 Technology of the Year award in the برنامه‌های غنی اینترنتی category.