לדלג לתוכן

Arc

מתוך ויקיפדיה, האנציקלופדיה החופשית
Arc
פרדיגמות מרובת פרדיגמות: תכנות פונקציונלי, תכנות פרוצדורלי, מטא תכנות
תאריך השקה 2008 עריכת הנתון בוויקינתונים
מתכנן פול גרהאם
מפתח פול גרהאם, רוברט מוריס, קהילת Arc.
גרסה אחרונה 3.2‏ (28 באוקטובר 2018, נכון לספטמבר 2020)
טיפוסיות דינמית
מימושים Anarki‏, Arcadia‏, Rainbow
הושפעה על ידי Lisp,‏ Scheme
רישיון Artistic License 2.0
סיומת arc.
http://arclanguage.org/
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית

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

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

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

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

It would not be far from the truth to say that a hacker about to write a program decides what language to use, at least subconsciously, based on the total number of characters he'll have to type. If this isn't precisely how hackers think, a language designer would do well to act as if it were.

Graham, Paul (May 2001). "Being Popular". PaulGraham.com. Retrieved 2018-12-05.

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

סוגי נתונים

[עריכת קוד מקור | עריכה]

*דוגמאות הקוד נלקחו מהמדריך הרשמי של Arc. מספר (Number) – מספר מפושט לעצמו בתהליך ההידור. לדוגמה:

arc> 25
25

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

arc> "foo"
"foo"

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

דוגמאות קוד

[עריכת קוד מקור | עריכה]

*דוגמאות הקוד נלקחו מהמדריך הרשמי של Arc.

תוכנית "Hello World" ב-Arc:

 (prn "Hello, World")

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


ב-Arc, כמו בשאר שפות Lisp, אופרטורים ופעולות כתובות בכתיב תחילי, בו האופרטור ממוקם לפני האופרנדים. לדוגמה, האופרטור + ממוקם בתחילת הביטוי ויכול לקבל מספר בלתי מוגבל של אופרנדים בצורה זו: .

arc> (+)
0
arc> (+ 1)
1
arc> (+ 1 2)
3
arc> (+ 1 2 3)
6

. ב-Arc, כל ביטוי מפושט בתור ברירת המחדל, אך ניתן לא לפשט ביטוי מסוים באמצעות כתיבת גרש לפני הביטוי - סימון אשר גורם לביטוי להיות מפושט לעצמו. לדוגמה:

arc> (+ 1 2)
3
arc> '(+ 1 2)
(+ 1 2)

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

הגרסה הרשמית

[עריכת קוד מקור | עריכה]

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

גרסאות לא רשמיות

[עריכת קוד מקור | עריכה]

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

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

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

קישורים חיצוניים

[עריכת קוד מקור | עריכה]

הערות שוליים

[עריכת קוד מקור | עריכה]