Arc

Arc היא דיאלקט ממשפחת שפות התכנות הפונקציונליות Lisp, אשר פותחה על ידי מדעני המחשב האמריקנים פול גרהם ורוברט מוריס והיא שוחררה לראשונה בשנת 2008. Arc היא תוכנת קוד פתוח חינמית תחת רישיון Artistic License 2.0 . Arc כתובה בשפת Racket, (דיאלקט מוקדם יותר ממשפחת שפות Lisp) והיא שפת תכנות מרובת פרדיגמות, כלומר היא תומכת במספר עקרונות תכנותיים:

* תכנות פונקציונלי – תכנות פונקציונלי שם דגש על קריאה לפעולות ופישוטן כביטויים.
* תכנות פרוצדורלי – בתכנות פרוצדורלי, כל תוכנית מחולקת לתת תוכניות הנקראות פרוצדורות (שגרות).
* מטא תכנות – בפרדיגמה זו, ניתן להתייחס לתוכניות ( קטעי קוד ) כמידע, ולערוך אותן. כך ניתן גם ליצור, לנתח, ולשנות תוכנות אחרות, ואף לשנות את התוכנה עצמה בזמן ריצה.

== היסטוריה ==
בשנת 2001, פול גרהאם, מתכנן השפה וממפתחיה, הכריז על עבודתו – שפת תכנות חדשה ממשפחת Lisp ששמה Arc. במשך השנים, הוא כתב מספר מאמרים על הפיצ'רים (פיצ'ר הוא מאפיין מבחין של תוכנה) של השפה המתפתחת, על מטרות השפה, ועל פרויקטים עסקיים שביצע עם השפה.

== רציונל ==

במאמרו "Being Popular, שהתפרסם במאי 2001<ref></ref>, מתאר גרהאם את המטרות אשר מנחות אותו בפיתוח Arc. הוא סבור כי על שפת תכנות להיות תמציתית על מנת להקל על מתכנתים ופצחנים, שכן קוד יותר קצר דורש פחות עבודה מצידם:

גרהאם סבור כי יש להוסיף תחביר נוסף לביטויי ה-S ששגורים בשפות ממשפחת Lisp רק כאשר ביטויי ה-S לבדם יוצרים עודף חריג של מילים. תוכנת פרופיילר היא תוכנה אשר מנתחת את סיבוכיות זמן הריצה וסיבוכיות המרחב של תוכנה, את התדירות ומשך הקריאה לפעולות וכדומה, זאת על מנת לסייע למתכנת לייעל את הקוד. גרהאם סבור שיש לספק תוכנות פרופיילר (profiler) טובות למתכנתים על מנת לסייע להם לייעל את הקוד.

== סוגי נתונים ==
<small>*דוגמאות הקוד נלקחו מ[http://www.arclanguage.org/tut.txt המדריך הרשמי של Arc].</small>

מספר (Number) – מספר מפושט לעצמו בתהליך ההידור. לדוגמה:<syntaxhighlight lang="lisp">
arc> 25
25
</syntaxhighlight>

מחרוזת (String) – מחרוזת היא אוסף של תווים. תווי המחרוזת נמצאים בתוך מירכאות כפולות, והמחרוזת מפושטת לעצמה. לדוגמה: <syntaxhighlight lang="lisp">
arc> "foo"
"foo"

</syntaxhighlight>Symbol – מבנה נתונים אשר יכול להכיל רצף של תווים ומספרים.

== דוגמאות קוד ==
<small>*דוגמאות הקוד נלקחו מ[http://www.arclanguage.org/tut.txt המדריך הרשמי של Arc].</small>
תוכנית "Hello World" ב-Arc:<syntaxhighlight lang="lisp">
 (prn "Hello, World")

</syntaxhighlight>כל הביטויים ב-Arc, כמו בניבי Lisp אחרים נמצאים בתוך סוגריים. ביטויים אלו נקראים ביטויי S (באנ׳: S Expressions ) והם מפושטים על ידי המהדר, למעט מקרים מסוימים.

ב-Arc, כמו בשאר שפות Lisp, אופרטורים ופעולות כתובות בכתיב תחילי, בו האופרטור ממוקם לפני האופרנדים. לדוגמה, האופרטור <code>+</code> ממוקם בתחילת הביטוי ויכול לקבל מספר בלתי מוגבל של אופרנדים בצורה זו: <math>(+\quad 1 \quad 2 \quad 3 \quad ...\ \ n)</math>. <syntaxhighlight lang="lisp">
arc> (+)
0
arc> (+ 1)
1
arc> (+ 1 2)
3
arc> (+ 1 2 3)
6
</syntaxhighlight>.

ב-Arc, כל ביטוי מפושט בתור ברירת המחדל, אך ניתן לא לפשט ביטוי מסוים באמצעות כתיבת גרש לפני הביטוי - סימון אשר גורם לביטוי להיות מפושט לעצמו. לדוגמה:<syntaxhighlight lang="lisp">
arc> (+ 1 2)
3
arc> '(+ 1 2)
(+ 1 2)

</syntaxhighlight>בשורת הקוד הראשונה, הביטוי פושט כסכום בין המספרים 1 ו-2, ולכן התוצאה שהוצגה הייתה 3. לעומת זאת, הביטוי השני פושט כרשימה שבה הסימן <code>+</code> מסוג הנתונים symbol, והמספרים 1,2, ולכן התוצאה שהוצגה הייתה רשימה זו.

== גרסאות ==
=== הגרסה הרשמית ===
הגרסה הפומבית הראשונה של Arc שוחררה ב 29 בינואר, 2008, והיא מומשה בשפת התכנות Racket ( שנקראה אז PLT-Scheme ) ממשפחת שפות Lisp. קוד המקור של Arc זמין באתר הרשמי של Arc, בתיקיית .tar. בנוסף, באתר הרשמי ישנו מדריך לכתיבה ב-Arc ופורום לדיונים של חברי קהילת Arc.

=== גרסאות לא רשמיות ===
בעקבות מחסור בעדכונים בגרסה הרשמית של Arc, חברים בקהילת Arc החלו לייצר גרסאות שונות משלהם עם ספריות ותוספים משלהם, כגון Anarki.

Rainbow היא מימוש של Arc בשפת התכנות Java.

Arcadia היא מימוש של Arc בשפת התכנות C.

== ראו גם ==
* Lisp
* Racket
* תכנות פונקציונלי

== קישורים חיצוניים ==
* 
* [http://www.arclanguage.org/tut.txt המדריך הרשמי לתכנות ב-Arc]

==הערות שוליים==

קטגוריה:תוכנה
קטגוריה:ניבי Lisp
קטגוריה:שפות תכנות פונקציונליות