Objective Caml

Από Κοινότητα Ελεύθερου Λογισμικού ΕΜΠ
Μετάβαση σε: πλοήγηση, αναζήτηση
Ocaml.jpg

Πρόκειται ουσιαστικά για μια γλωσσα συναρτησιακού προγραμματισμου (όπως η Lisp) η οποία όμως δίνει τη δυνατότητα στον προγραμματιστή να γράψει όπως τον βολεύει: μπορει να γραψει functional programming, μπορει να γραψει imperative programming, object oriented programming και βεβαια με οποιονδήποτε συνδυασμό των παραπάνω.

Σύστημα Τύπων

Βασικά χαρακτηριστικά της OCaml είναι το type strictness και το type inference: δεν δηλώνουμε δηλαδή πουθενά μεταβλητές και ο type checker του OCaml compiler αναλαμβάνει να βγάλει άκρη για το τι τύπου είναι το κάθε τι ενώ, σε αντίθεση για παράδειγμα με τη C, υπάρχει πολύ μεγάλη αυστηρότητα όσον αφορά τους τύπους, δεν μπορείς πχ. να προσθέσεις ένα int με ένα float.

Βιβλιοθήκη

Η γλώσσα έχει μια τεράστια βιβλιοθήκη συναρτήσεων απο τη μαμά της (την INRIA, αχ και να τανε και το δικό μας Ινστιτούτο Έρευνας και Τεχνολογίας σαν αυτή...), και αν κανεις ψαχτεί λίγο παραπάνω μπορεί να βρει extentions και βιβλιοθήκες για να κάνει ο,τι ο,τι τραβάει η καρδιά του.

Υλοποιήσεις

H OCaml έχει τρεις διαφορετικούς τρόπους για να τρέχουμε προγραμματα: μπορούμε να μεταγλωττίσουμε σε native κωδικα του συστήματος (όπως στη C), να μεταγλωττίσουμε σε bytecode (οπως στη Java) και να τρέχουμε το λεγομενο "toploop", δηλαδή έναν interpreter (όπως στην Python). Μια πειραματική τέλος χρήση είναι η ενσωμάτωση OCaml κώδικα σε HTML με χρήση του toploop, που σημαίνει οτι η OCaml μπορεί να κάνει και δουλειά αντίστοιχη της PHP.

Μεταγλωττιστές με OCaml

Η OCaml ενδείκνυται για την κατασκευεή compiler (ο compiler της OCaml για παράδειγμα είναι γραμμένος κυρίως σε OCaml : Ρ), αφού διαθέτει εργαλεία αντίστοιχα με το flex (ocamllex) και το bison (ocamlyacc), καθώς και μερικές ακόμα ευκολίες για το χτίσιμο parsers. Επίσης είναι πολύ πιο high level γλώσσα από τη C, διαθέτει garbage collector, ενώ το strong type system της μαζί με το type inference βοηθάνε πολύ. Είναι μεταξύ των αποδεκτών γλωσσών για το μάθημα Μεταγλωττιστές της Λ.

Σύνδεσμοι

και bonus για όποιον καταλάβει: