پارادایم ها | چند نمونه: عملکردی متا فرعیروش های |
---|---|
خانواده | لیسپ |
طراحی شده توسط | پال گراهام |
توسعه دهندگان | پل گراهام، رابرت موریس، جامعه آرک |
اولين بار ظاهر شد | ۲۹ ژانویه ۲۰۰۸؛2008-01-29) | (
آزاد شدن ثابت | 3.2 / 28 اکتبر 20182018-10-28) [۱]
( |
تایپ کردن نظم | پویایی |
زبان اجرای | رکت |
پلتفرم | IA-32 x86-64 |
OS | لینوکس |
مجوز | مجوز هنری 2.0 |
افزونه های نام فایل | .arc |
وب سایت | arclanguage.org |
اجرای عمده | |
آرک، انارکی، آرکادیا، قوس قزح | |
تحت تاثیر | |
لیسپ طرح |
Arc یک زبان برنامه نویسی, گویش زبان Lisp است که توسط پل گراهام و رابرت موریس توسعه یافته است . این نرم افزار رایگان و منبع باز است که تحت مجوز هنری 2.0 منتشر شده است.
در سال 2001، پل گراهام اعلام کرد که در حال کار بر روی گویش جدیدی از Lisp به نام Arc است. در طول سالهای پس از آن، او چندین مقاله در توصیف ویژگیها یا اهداف زبان نوشت، و برخی از پروژههای داخلی در انکوباتور کسبوکار استارتآپ گراهام به نام Y Combinator در Arc نوشته شدهاند، که مهمترین آنها انجمن وب اخبار هکرها و برنامه جمعآوری اخبار است. Arc با راکت نوشته شده است. [۲]
در مقاله محبوب بودن [۳] گراهام تعدادی از اهداف خود را برای زبان شرح می دهد. در حالی که بسیاری از اهداف بسیار کلی هستند ("Arc باید قابل هک باشد"، "باید کتابخانه های خوبی وجود داشته باشد")، او برخی از جزئیات را ارائه کرد. به عنوان مثال، او معتقد است که برای یک زبان مهم است که مختصر باشد:
"دور از واقعیت نیست اگر بگوییم هکری که قصد دارد برنامه ای بنویسد تصمیم می گیرد که از چه زبانی استفاده کند، حداقل به طور ناخودآگاه، بر اساس تعداد کل کاراکترهایی که باید تایپ کند. اگر هکرها دقیقاً اینطور فکر نمی کنند، یک طراح زبان بهتر است طوری رفتار کند که انگار چنین است."
او همچنین اظهار داشت که بهتر است یک زبان فقط تعداد کمی از بدیهیات را پیادهسازی کند، حتی زمانی که این بدان معناست که زبان ممکن است ویژگیهایی را که سازمانهای بزرگ میخواهند، مانند شی گرایی (OO) نداشته باشد. علاوه بر این، گراهام فکر میکند که OO مفید نیست زیرا روشها و الگوهای آن فقط «طراحی خوب» هستند، و او ویژگیهای زبانی که برای پیادهسازی OO استفاده میشود تا حدی اشتباه میبیند. [۴] [۵] در معرفی Arc در سال 2008، گراهام یکی از مزایای آن را کوتاه بودن آن عنوان کرد. [۶]
بحثی که بین برنامه نویسان Lisp وجود دارد این است که آیا و چقدر باید عبارات s زبان با سایر اشکال نحو تکمیل شود یا خیر. گراهام فکر میکند که باید از نحو افزوده در موقعیتهایی استفاده شود که عبارات s خالص بیش از حد پرمخاطب هستند، و میگوید: «فکر نمیکنم ما از لحاظ مذهبی با وارد کردن نحو به Lisp مخالف باشیم». گراهام همچنین فکر می کند که مشکلات کارایی باید با دادن یک پروفایل خوب به برنامه نویس حل شود. [۷]
زمانی که Arc در سال 2008 منتشر شد، واکنشهای متفاوتی را ایجاد کرد، به طوری که برخی آن را صرفاً یک پسوند Lisp یا Scheme مینامند و نه یک زبان برنامهنویسی در نوع خود. برخی دیگر نیز آرک را به خاطر اینکه لیسپ را به اجناس ضروری برهنه تشویق کردند. مدت کوتاهی پس از انتشار، Arc به جاوا اسکریپت منتقل شد و توسط Schemescript ، یک محیط توسعه یکپارچه (IDE) مبتنی بر Eclipse پشتیبانی میشد. [۸]
Hello world در آرک :
(prn "Hello, World")
گراهام برای نشان دادن کوتاهی آرک از یک برنامه مختصر استفاده می کند. فرمی با یک فیلد در آدرس اینترنتی "/said" تولید می کند. هنگامی که فرم ارسال می شود، به صفحه ای منتهی می شود که دارای پیوندی است که می گوید "اینجا را کلیک کنید"، که سپس به صفحه ای با مقدار فیلد ورودی اصلی منتهی می شود. [۹]
(defop said req
(aform [onlink "click here" (pr "you said: " (arg _ "foo"))]
(input "foo")
(submit)))
اولین نسخه منتشر شده عمومی Arc در 29 ژانویه 2008 در دسترس قرار گرفت، [۱۰] بر روی Racket (که در آن زمان PLT-Scheme نامگذاری شد) اجرا شد. این نسخه به شکل یک بایگانی tar. حاوی کد منبع Racket برای Arc است. یک آموزش و یک انجمن گفتگو [۱۱] نیز موجود است. این انجمن از همان برنامهای استفاده میکند که Hacker News از آن استفاده میکند و در Arc نوشته شده است.
به دلیل عدم به روز رسانی در شعبه رسمی Arc، برخی از اعضای جامعه Arc مخازن خود را با تغییرات، افزونه ها و کتابخانه های غیر رسمی راه اندازی کردند. یک نسخه، Anarki [۱۲] ، به [۱۳] هر کسی اجازه میداد تا تغییراتی را در پروژه ارسال کند و دارای ویکی مدیریت شده توسط جامعه است.
Rainbow [۱۴] پیاده سازی Arc در جاوا است.
Arcadia [۱۵] پیاده سازی Arc در C است.
Arc++ [۱۶] پیاده سازی Arc در C++ است.
1958 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2020 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
LISP 1, 1.5, LISP 2(abandoned) | |||||||||||||||
Maclisp | |||||||||||||||
Interlisp | |||||||||||||||
MDL | |||||||||||||||
Lisp Machine Lisp | |||||||||||||||
Scheme | R5RS | R6RS | R7RS small | ||||||||||||
NIL | |||||||||||||||
ZIL (Zork Implementation Language) | |||||||||||||||
Franz Lisp | |||||||||||||||
Common Lisp | ANSI standard | ||||||||||||||
Le Lisp | |||||||||||||||
MIT Scheme | |||||||||||||||
XLISP | |||||||||||||||
T | |||||||||||||||
Chez Scheme | |||||||||||||||
Emacs Lisp | |||||||||||||||
AutoLISP | |||||||||||||||
PicoLisp | |||||||||||||||
Gambit | |||||||||||||||
EuLisp | |||||||||||||||
ISLISP | |||||||||||||||
OpenLisp | |||||||||||||||
PLT Scheme | Racket | ||||||||||||||
newLISP | |||||||||||||||
GNU Guile | |||||||||||||||
Visual LISP | |||||||||||||||
Clojure | |||||||||||||||
Arc | |||||||||||||||
LFE | |||||||||||||||
Hy |