OCaml

OCaml
Mẫu hìnhlập trình hàm,
hướng đối tượng
Nhà phát triểnINRIA
Xuất hiện lần đầu1985
Kiểm tra kiểumạnh, động
Hệ điều hànhđa nền
Giấy phépQPL, LGPL
Trang mạnghttp://caml.inria.fr
Ảnh hưởng từ
ML
Ảnh hưởng tới
F#

OCaml là dòng ngôn ngữ lập trình phổ dụng trong ngôn ngữ Caml (một dạng của ngôn ngữ lập trình ML), bắt đầu được Viện Nghiên cứu Khoa học Máy tính Quốc gia ở Pháp (INRIA) phát triển từ năm 1985. Caml là ngôn ngữ lập trình hàm và đến OCaml thì thêm các tính năng lập trình hướng đối tượng (Object - chữ O trong OCaml).

Đặc điểm

[sửa | sửa mã nguồn]
  • Kiểu mạnh: các biến trong Caml khi khởi tạo chỉ mang một dạng dữ liệu nhất định (khác với các ngôn ngữ kiểu yếu như Lisp).
  • Hệ thống gỡ lỗi.

Kiểu dữ liệu

[sửa | sửa mã nguồn]

Trong OCaml, kiểu số nguyên và số thực có các toán tử riêng biệt:

  • Với số nguyên: +, *,...
  • Với số thực: +., *.,...

Kiểu chuỗi ký tự được bao trong cặp dấu nháy kép: "Viet Nam"

Kiểu boolean có hai giá trị truefalse.

Kiểu danh sách (list) bao giữa cặp ngoặc vuông với các thành phần phân cách nhau bởi dấu chấm phẩy.

[2; 3; 65; -4]

Câu lệnh

[sửa | sửa mã nguồn]

Câu lệnh của OCaml kết thúc với hai dấu chấm phẩy (;;), khác với ML chuẩn.

Trong OCaml, cũng như các ngôn ngữ lập trình hàm khác, tên được gán giá trị bằng lệnh let: <syntaxhightlight lang="ocaml" style="font-size:1.2em;"> let x = 3 + 5 * 2;; </syntaxhightlight>

Đặc điểm lập trình hàm của OCaml cho phép các hàm là dạng dữ liệu cấp I. Hàm số ưu tiên kết hợp với tham số ở mức ưu tiên cao nhất. <syntaxhightlight lang="ocaml" style="font-size:1.2em;"> (* Chú thích: giả sử f là một hàm có một tham số *) 2 + f 3 (* cách thông dụng *) 2 + (f 3) (* rõ ràng hơn *) 2 + f(3) (* thường dùng với các ngôn ngữ mệnh lệnh như C, Pascal... Không thông dụng trong OCaml *) </syntaxhightlight>

Với đặc điểm này, một tên cũng có thể khai báo như một hàm bằng let: <syntaxhightlight lang="ocaml" style="font-size:1.2em;"> let gapDoi x = x *. 2.0;; </syntaxhightlight>

Với các hàm đệ quy, ta cần viết let rec: <syntaxhightlight lang="ocaml" style="font-size:1.2em;"> let rec giaiThua n =

 if n = 0 then 1 else n * giaiThua (n-1);;

</syntaxhightlight>

Hiện thực

[sửa | sửa mã nguồn]
OCaml
Phát triển bởiINRIA
Phiên bản ổn định
3.11.2 / 20 tháng 1 năm 2010
Hệ điều hànhđa nền
Thể loạiNgôn ngữ lập trình
Giấy phépGiấy phép công cộng Q, LGPL
Websitehttp://caml.inria.fr

Hệ thống Objective Caml được phát triển gồm có một bộ biên dịch (ocamlopt) theo mã gốc (native code) trên nhiều hệ vi xử lý (i386, IA64, Power PC, v.v...); cùng với bộ biên dịch bytecode (ocamlc). Ngoài ra, còn có các công cụ hỗ trợ như: môi trường dòng lệnh (ocaml), gỡ lỗi (ocamldebug), v.v...

OCaml được phân phối dưới dạng mã nguồn cùng các bản nhị phân trên các hệ điều thành thông dụng (Windows, Mac OS X, Linux (gói debrpm).

Dấu nhắc lệnh

[sửa | sửa mã nguồn]

ocaml cũng là tên trình thông dịch của ngôn ngữ. Dấu nhắc lệnh OCaml có hình dấu thăng (#). Cần nhớ rằng để kết thúc dòng lệnh cần gõ ;; trước khi gõ Enter. <syntaxhightlight lang="ocaml" style="font-size:1.2em;">

  1. 1+2*3;;

-: int = 7 </syntaxhightlight>

Kết quả phép tính có giá trị bằng 7, kể cả kiểu dữ liệu: số nguyên (int) cũng được máy thông báo.

<syntaxhightlight lang="ocaml" style="font-size:1.2em;">

  1. let pi = 4.0 *. atan 1.0;;

val pi: float = 3.14159265358979312

  1. let binhPhuong x = x *. x;;

val binhPhuong: float -> float = <fun> </syntaxhightlight>

Kết quả của một khai báo sẽ được máy thông báo là val tên. Trong trường hợp hàm số thì có cả thông báo về các kiểu dữ liệu (ở đây hàm nhận tham số dạng float (số thực) và trả kết quả cũng dưới dạng float.

Ứng dụng

[sửa | sửa mã nguồn]

OCaml có một số ứng dụng trong kĩ thuật, công nghiệp, thương nghiệp:

Tham khảo

[sửa | sửa mã nguồn]
Chúng tôi bán
Bài viết liên quan
Sơ lược 7 quốc gia trong Genshin Impact
Sơ lược 7 quốc gia trong Genshin Impact
Những bí ẩn xung, ý nghĩa xung quanh các vùng đất của đại lục Tervat Genshin Impact
Jinx: the Loose Cannon - Liên Minh Huyền Thoại
Jinx: the Loose Cannon - Liên Minh Huyền Thoại
Jinx, cô nàng tội phạm tính khí thất thường đến từ Zaun, sống để tàn phá mà chẳng bận tâm đến hậu quả.
Nhân vật Pochita - Chainsaw Man
Nhân vật Pochita - Chainsaw Man
Pochita (ポ チ タ Pochita?) hay Chainsaw Devil (チ ェ ン ソ ー の 悪 魔, Chensō no akuma) là hiện thân của nỗi sợ máy cưa
Mai - Khi tình yêu không chỉ đơn thuần là tình ~ yêu
Mai - Khi tình yêu không chỉ đơn thuần là tình ~ yêu
Cuộc đời đã khiến Mai không cho phép mình được yếu đuối, nhưng cũng chính vì thế mà cô cần một người đồng hành vững chãi