ობიექტური კამლი
პარადიგმა | |
---|---|
მულტი-პარადიგმა: | ფუნქციური, ბრძანებითი, ობიექტებზე-ორიენტირებული |
კონსტრუქტორი | |
INRIA | |
უკანასკნელი გამოშვების ვერსია | |
4.02.1 | |
დიალექტები | |
F#, JoCaml, MetaOCaml, OcamlP3l | |
ოპერატიული სისტემა | |
მულტი-პლათფორმა | |
ლიცენზია | |
Q Public License (compiler) LGPL (library) | |
საიტი | |
http://caml.inria.fr/ | |
ობიექტური კამლ, ოკამლ (Objective Caml, Ocaml) წარმოადგენს ფუნქციურ პროგრამირების ენას, რომელიც არის შექმნილი ობიექტზე ორიენტირებული პროგრამირებისთვის. ის იყო დაწერილი ხავიერ ლერიო, ჯერომ ვოილონ, დამიენ დოლიგეზ და სხვების მიერ 1996 წელს. ენის შექმნის, დამუშავების და განახლების პროექტი უმეტესად ინრიაში ხორციელდება.
ოკამლი აფართოებს კამლის პროგრამირების ენას ობიექტზე ორიენტირების ფასით. როგორც ყველა ფუნქციური ენა, ოკამლის მთავარი თვისება არის ფუნქციების გამოყენება პრობლემების გამოსათვლელად. ეს იმას გულისხმობს რომ ნებისმიერი გამოსახულება წარმოადგენს მათემატიკურ ფუნქციას და პროგრამის ასრულების პერიოდში არ იყენება ფაზები და ცვალებადი მონაცემები.
ოკამლის სამუშაო ნაკრები შეიცავს ზედა ფენის (კომანდ პრომფთ/ბაშ შელლ) განმმარტებელს, ბაიტ-კოდურ კომპილატორს და ოფტიმიზირებელ ადგილობრივი კოდის კომპილატორს. ოკამლის ენის სტანდარტული ბიბლიოთეკა საშუალებას იძლევა დიდი ზომის სამეცნიერო და კომერციული პროგრამების დამზადებას. ოკამლს საფუძვლად უდევს გამეორებელი ფუნქციების თეორია და ლამბდა გამოთვლები, რის გამოც წარმოადგენს რეკურსიული ფუნქციების დამამზადებელ ერთ ერთ საუკეთესო ინსტრუმენტს.
ენის ტიპი
[რედაქტირება | წყაროს რედაქტირება]ოკამლი და მისგან წარმოებული ენები ხასიათდებიან სტატიკური ტიპის სისტემებით და ტიპის დამდგენელ კომპილატორებით. სტატიკური ტიპის სისტემების ხარჯზე თითქმის მთლიანად ქრება პროგრამისტის მიერ დაშვებული შეცდომები, რომლებიც პროგრამის გაშვების დროს შეიძლება გაჩნდეს. სამაგიეროდ კომპილატორის ეს ფუნქცია აიძულებს პროგრამისტს ფრთხილად და დაკვირვებით დაგეგმოს ცვლადების განმარტება და გამოყენება. ტიპის დადგენის სისტემა ახერხებს ცვლადის ტიპის დადგენას ამ უკანასკნელის მნიშვნელობის ხარჯზე. ამის გამო პროგრამისტს არ ესაჭიროება ცვლადის ტიპის მითითება, როგორც ხდება ჯავაში, C++ში და სხვა მრავალ პროგრამირების ენებში.
ოკამლის პროგრამების მაგალითები
[რედაქტირება | წყაროს რედაქტირება]ოკამლის პროგრამების წერა შეიძლება როგორც ცალკე ფაილებში ასევე ზედა ფენის განმმარტებელში. საკმარისია ვინდოუსის კომანდ პრომფთში ან ლინუქსის შელში ავკრიფოთ ბრძანება ocaml და გამოჩნდება ზედა ფენის განმმარტებელის პირველი ხაზი რის შემდეგაც შეგვიძლია შევიყვანოთ ოკამლის ენის გამოსახულებები.
$ ocaml
Objective Caml version 3.10.0
#
მაგალითად გამოსახულება 1 + 2 * 3 შეგვყავს შემდეგი გზით
# 1 + 2 * 3;;
- : int = 7
გამოთვლების შედეგად ოკამლი გვანახებს გამოსახულების ტიპს (ამ შემთხვევაში int) და მის შედეგს.
ცვლადების განმარტება ხდება let სიტყვის გამოყენებით. სიტყვა let ასევე გამოიყენება ფუნქციების განმარტებისთვისაც.
მაგალითად ცვლად x-ის შესაქმნელად და მისთვის 10-ის მნიშვნელობის მისანიჭებლად ვწერთ let x = 10:
# let x = 10;;
val x : int = 10
ისევე როგორც წინა მაგალითში ოკამლის განმმარტებელი გვანახებს გამოსახულების ტიპს და მის მნიშვენლობას.
Hello World
[რედაქტირება | წყაროს რედაქტირება]ცალკე ფაილში მოთავსებული ოკამლის პროგრამა ბოლოვდება ml გაფართოებით. მაგალითად "hello.ml":
print_endline "Hello world!";;
კომპილირდება შემდეგნაირად:
$ ocamlc hello.ml -o hello
და სრულდება:
$ ./hello
Hello world!
$
რესურსები ინტერნეტში
[რედაქტირება | წყაროს რედაქტირება]- Caml language family official website
- OCaml libraries დაარქივებული 2004-12-06 საიტზე Wayback Machine.
- OCaml tutorial for C, C++, Java and Perl programmers დაარქივებული 2006-08-09 საიტზე Wayback Machine.
- A basic OCaml tutorial
- A Tutorial with a practical approach.
- OCamIL, ოკამლის კომპილატორი Microsoft .NET
- Comparison of the speed of various languages დაარქივებული 2018-05-29 საიტზე Wayback Machine. ოკამლის შემცველი
- LablGL and LablGTK OpenGL+ შემაკავშირებლები (LablGL) და GTK+ შემაკავშირებლები (LablGTK)
- Newest Ocaml Projects on Sourceforge[მკვდარი ბმული]
- OCaml code wiki on CodeCodex დაარქივებული 2007-03-02 საიტზე Wayback Machine.
- MetaOCaml დაარქივებული 2013-06-13 საიტზე Wayback Machine. მთავარი გვერდი
- OCamlcore Planet
- OCamlForge
სქოლიო
[რედაქტირება | წყაროს რედაქტირება]
|