Erlang – הבדלי גרסאות
תוכן שנמחק תוכן שנוסף
מאין תקציר עריכה |
מאין תקציר עריכה |
||
שורה 16:
}}
'''Erlang (אֶרְלַנְג)''' היא שפת תכנות כללית ו[[תכנות פונקציונלי|פונקציונלית]] אשר נוצרה על ידי מדעני המחשב ג'ו ארמסטרונג, רוברט וירדינג, ומייק ויליאמס
ב-1986 כאשר היא
== היסטוריה ==
שורה 56:
אלגוריתם המיון [[מיון מהיר|Quicksort]] ב-Erlang:<syntaxhighlight lang="erlang">
%% Sort a list of items
-module(qsort).
-export([qsort/1]). % A function 'qsort' with 1 parameter is exported (no type, no name)
qsort([]) -> []; % If the list [] is empty, return an empty list (nothing to sort)
qsort([Pivot|Rest]) ->
</syntaxhighlight>
שורה 71:
{{להשלים}}
ב-Erlang ישנם 8 סוגי נתונים פרימטיביים:
▲* '''Integers''' (מספרים שלמים) –
* '''Atoms''' – נכתבים כמחרוזות של תווים אלפאנומרים עוקבים, כאשר הראשון הוא אות קטנה (lowercase). משמשים על מנת לציין ערכים שונים.
* '''Floats''' – משתנים עשרוניים (Floating Point Numbers).
שורה 78 ⟵ 77:
* '''Binaries''' – אוסף של בתים (bytes). בית בהגדרתו הוא 8 סיביות, כלומר, 8 ספרות בינאריות.
* '''Pids''' – קיצור ל-Process Identifiers (מזהי תהליכים). Pid הוא הפניה לתהליך של Erlang והוא נוצר על ידי הפעולה <code>(...)spawn</code>.
* '''Ports''' –
* '''Funs'''
ושלושה סוגי נתונים מורכבים:
שורה 87 ⟵ 86:
ושתי צורות של [[סוכר תחבירי]]:
* '''Strings''' – רשימה של תווים המוגדרת בדרך כלל באמצעות גרשיים כפולים (
* '''Records''' – מאפשרים דרך נוחה לשייך תג לכל איבר ב-tuple, כלומר, לפנות לאלמנט ב-tuple באמצעות שם ולא מקום (מציין, אינדקס). תהליך אשר מתקיים לפני ההידור לוקח את הגדרת ה-Record ומחליף במקומו את המקום המתאים כאשר מתייחסים אליו.
שורה 97 ⟵ 96:
=== Let It Crash ("תן לזה לקרוס") ===
מתכנני Erlang הבינו כי על אף פי השלכותיהן השליליות,
==== ההשלכות על עיצוב Erlang ====
שורה 112 ⟵ 111:
ביישום טיפוסי ב-Erlang תהליכים מנוהלים בצורה של [[עץ בינארי|עץ]] פיקוח. ארכיטקטורה זו מבוססת על ההיררכיה של תהליכים, כאשר התהליך בעל המעמד הגבוה נקרא '''supervisor''' והוא אחראי על פיקוח וניהול של תהליכים שבחסותו ('''Child Proccesses'''). גם תהליך אשר נמצא בפיקוח על ידי תהליך אחר בעל מעמד גבוה יותר בהיררכיה, יכול לפקח על תהליכים משלו, וכך נוצרת היררכיה בעלת תהליכים רבים אשר מפקחים ומפוקחים. על העץ המפקח בין היתר נדרש לטפל במקרי קצה של התהליכים שבחסותו – כגון קריסה שלהם. במקרה של קריסה של אחד מהם יקבל העץ המפקח הודעה המכילה tuple שאיברו הראשון יהיה הערך מסוג הנתונים '''Atom''' (אטום) <code>'DOWN'</code>.
העץ המפקח אחראי
== מימוש ==
המימוש הרשמי של Erlang משתמש ב-BEAM – המכונה
BEAM כלולה בהפצה הרשמית של Erlang, שנקראת Erlang/OTP. היא מריצה [[Bytecode]]
== ראו גם ==
שורה 132 ⟵ 131:
==הערות שוליים==
{{הערות שוליים|יישור=שמאל}}
[[קטגוריה:טלקומוניקציה]]▼
[[קטגוריה:שפות תכנות פונקציונליות]]
▲[[קטגוריה:טלקומוניקציה]]
|