پرش به محتوا

زبان برنامه نویسی Arc

از ویکی‌پدیا، دانشنامهٔ آزاد
پارادایم ها چند نمونه: عملکردی متا فرعیروش های
خانواده لیسپ
طراحی شده توسط  پال گراهام
توسعه دهندگان پل گراهام، رابرت موریس، جامعه آرک
اولين بار ظاهر شد  ۲۹ ژانویه ۲۰۰۸؛؛ 16 سال پیش  (2008-01-29)   
آزاد شدن ثابت
3.2 / 28 اکتبر 2018؛ 5 سال پیش  (2018-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++ است.

جدول زمانی LISP Dialects[ویرایش]

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

منابع[ویرایش]

  1. "Arc Forum: Tell Arc: Arc 3.2"Arclanguage.orgRetrieved 2018-11-07.
  2. "Arc Forum: install". Arclanguage.org. Retrieved 2018-11-07.
  3. Graham, Paul (May 2001). "Being Popular". PaulGraham.com. Retrieved 2018-12-05.
  4. Graham, Paul. "Why Arc Isn't Especially Object-Oriented". PaulGraham.com. Retrieved 2018-12-05.
  5. Graham, Paul. "Arc FAQ". PaulGraham.com. Retrieved 2018-12-05.
  6. Huber, Mathias (2008-02-08). "Arc Makes Programs Shorter". Linux Magazine. Lawrence, Kansas: Linux New Media USA. Retrieved 2018-11-25.
  7. Graham, Paul (May 2001). "Five Questions About Language Design". PaulGraham.com. Retrieved 2018-12-05.
  8. "Web pioneer hits critics with Lisp gauntlet". The Register. United Kingdom|UK. 2008-02-07.
  9. Graham, Paul (February 2008). "Take the Arc Challenge". PaulGraham.com. Retrieved 2018-12-05.
  10. Graham, Paul (29 January 2008). "Arc's Out". PaulGraham.com. Retrieved 2018-12-05.
  11. "Arc Tutorial". Paul Graham. Retrieved 2018-12-05.
  12. "Arc Forum". Arc language.
  13. Rapp, Kenneth (kennethrapp) (14 November 2018). "Anarki". GitHub. Retrieved 2018-12-05.
  14. Agaram, Kartik (akkartik) (27 May 2013). "Announcement: anarki is no longer world-committable". Arc Forum. Arc language. Retrieved 2018-12-05.
  15. "Arc Lang Wiki". Sites. Retrieved 2018-12-05.
  16. Dalton, Conan (conanite) (12 October 2010). "Rainbow". GitHub. Retrieved 2018-12-05.
  17. Kim, Taegyoon (kimtg) (19 August 2018). "Arcadia". GitHub. Retrieved 2018-12-05.
  18. Kim, Taegyoon (kimtg) (13 August 2023). "Arcpp". GitHub. Retrieved 2023-08-13.

لینک های خارجی[ویرایش]

  1. "Arc Forum: Tell Arc: Arc 3.2". Arclanguage.org. Retrieved 2018-11-07.
  2. "Arc Forum: install". Arclanguage.org. Retrieved 2018-11-07.
  3. Graham, Paul (May 2001). "Being Popular". PaulGraham.com. Retrieved 2018-12-05.
  4. Graham, Paul. "Why Arc Isn't Especially Object-Oriented". PaulGraham.com. Retrieved 2018-12-05.
  5. Graham, Paul. "Arc FAQ". PaulGraham.com. Retrieved 2018-12-05.
  6. Huber, Mathias (2008-02-08). "Arc Makes Programs Shorter". Linux Magazine. Lawrence, Kansas: Linux New Media USA. Retrieved 2018-11-25.
  7. Graham, Paul (May 2001). "Five Questions About Language Design". PaulGraham.com. Retrieved 2018-12-05.
  8. "Web pioneer hits critics with Lisp gauntlet". The Register. 2008-02-07.
  9. Graham, Paul (February 2008). "Take the Arc Challenge". PaulGraham.com. Retrieved 2018-12-05.
  10. Graham, Paul (29 January 2008). "Arc's Out". PaulGraham.com. Retrieved 2018-12-05.
  11. "Arc Forum". Arc language.
  12. Rapp, Kenneth (kennethrapp) (14 November 2018). "Anarki". GitHub. Retrieved 2018-12-05.
  13. Agaram, Kartik (akkartik) (27 May 2013). "Announcement: anarki is no longer world-committable". Arc Forum. Arc language. Retrieved 2018-12-05.
  14. Dalton, Conan (conanite) (12 October 2010). "Rainbow". GitHub. Retrieved 2018-12-05.
  15. Kim, Taegyoon (kimtg) (19 August 2018). "Arcadia". GitHub. Retrieved 2018-12-05.
  16. Kim, Taegyoon (kimtg) (13 August 2023). "Arcpp". GitHub. Retrieved 2023-08-13.