OCaml

מתוך ויקיפדיה, האנציקלופדיה החופשית
Gnome-edit-clear.svg
ערך זה זקוק לעריכה: ייתכן שהערך סובל מבעיות ניסוח, סגנון טעון שיפור או צורך בהגהה, או שיש לעצב אותו, או מפגמים טכניים כגון מיעוט קישורים פנימיים.
אתם מוזמנים לסייע ולתקן את הבעיות, אך אנא אל תורידו את ההודעה כל עוד לא תוקן הדף. אם אתם סבורים כי אין בדף בעיה, ניתן לציין זאת בדף השיחה.
Ocaml
OCaml Logo.svg
פרדיגמות תכנות פונקציונלי, תכנות אימפרטיבי, תכנות מונחה עצמים, תכנות מודולרי
שנה 1996
מתכנן Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy, Ascánder Suárez
מפתח INRIA
גרסה אחרונה 4.11.1 (31 באוגוסט 2020)
טיפוסיות סטטית, מוסקית, מובנית, חזקה,
הושפעה על ידי C,‏ Caml,‏ Modula-3,‏ Pascal,‏ Standard ‏ML
השפיעה על Scala, ראסט, Opa, ‏Haxe ,‏F*,‏F sharp, ‏Elm, ‏Coq, ‏ATS
רישיון LGPLv2.1
סיומת .ml, .mli
ocaml.org

OCaml (לשעבר Objective Caml) היא שפת תכנות כללית ומרובת פרדיגמות תכנות, אשר מרחיבה את הדיאלקט Caml ממשפחת שפות ML עם תמיכה בפיצ'רים נוספים כגון תכנות מונחה עצמים. היא נוצרה בשנת 1996 על ידי חביאר לרוי (Xavier Leroy), ג'רום ווליון (Jérôme Vouillon), דמיאן דוליגז (Damien Doligez), דילדר רמי (Didier Rémy), אסקנדר סוארס (Ascánder Suárez) ואחרים.

סט כלי התכנות של Ocaml כולל מפרש אינטראקטיבי, מהדר לשפת מכונה אשר מבצע אופטמיזציה, ודיבאגר שניתן להריצו גם אחורנית, ומנהל חבילות שנקרא OPAM. ראשי התיבות CAML במקור ייצגו Categorical Abstract Machine Language, אך מודל זה (מכונה אבסטרקטית זו) חסר ב-Ocaml.

Ocaml הוא פרויקט חינמי בעל קוד פתוח אשר מנוהל על ידי המכון הצרפתי למחקר במדעי המחשב ואוטומציה (INRIA). בתחילת שנות ה-2000, שפות רבות אימצו אלמנטים מ-Ocaml, שהידועות מביניהן הן Scala, ו-F#.

סביבות פיתוח[עריכת קוד מקור | עריכה]

  • opam הוא מנהל חבילות בשביל Ocam, שפותח על ידי OcamlPro
  • Merlin מספק פונקציונליות של סביבת פיתוח משולבת, כולל השלמה אוטומטית, בדיקת טיפוסים, וכו'.
  • Dune
  • js_of_ocaml, אשר פותח על ידי צוות Ocsigen, הוא מהדר בעל יכולות אופטימיזציה מ- Ocaml ל Javascript.
  • BuckleScript
  • ocamlcc - מהדר מ Ocaml ל-C.
  • OcamlJava, אשר פותח על ידי INRIA (המכון הצרפתי לחקר מדעי המחשב ואוטומטציה) מהדר מ-Ocaml למכונה הווירטואלית של ג'אווה (JVM - Java Virtual Machine).
  • OcaPic, אשר פותח על ידי Lip6, הוא קומפיילר בשביל PIC MicroController(אנ')

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

כתיבת תוכנית Hello World ב-Ocaml והרצתה:

print_endline "Hello World!"

לאחר מכן ניתן להדר את התוכנית לקובץ Bytecode שניתן להריצו:

$ ocamlc hello.ml -o hello

או לחלופין ניתן להדר אותו לקובץ הרצה של קוד בשפת מכונה אשר עבר אופטימיזציה:

$ ./hello
Hello World!
$

תוכנית על מנת לסכום רשימה של איברים:

let rec sum integers = (* Keyword rec means 'recursive'. *)
 match integers with
  | [] -> 0 (* Yield 0 if integers is the empty
 list []. *)
  | first :: rest -> first + sum rest;; (* Recursive call if integers is a non-
 empty list; first is the first
 element of the list, and rest is a
 list of the rest of the elements,
 possibly []. *)

דרך נוספת על מנת לבצע זאת היא להשתמש בפעולה המובנית fold (אנ'), אשר מקבלת פעולה כפרמטר:

let sum integers =
 List.fold_left (fun accumulator x -> accumulator + x) 0 integers;;
 # sum [1;2;3;4;5];;
 - : int = 15

דוגמה לביצוע מיון QuickSort ב-Ocaml:‏

 let rec qsort = function
 | [] -> []
 | pivot :: rest ->
 let is_less x = x < pivot in
 let left, right = List.partition is_less rest in
 qsort left @ [pivot] @ qsort right

קישורים חיצוניים[עריכת קוד מקור | עריכה]

ויקישיתוף מדיה וקבצים בנושא OCaml בוויקישיתוף
Crystal kpackage.png ערך זה הוא קצרמר בנושא תוכנה. אתם מוזמנים לתרום לוויקיפדיה ולהרחיב אותו.