OCaml
![]() |
|
| Ñåìàíòèêà: |
ìóëüòèïàðàäèãìåííûé: ôóíêöèîíàëüíûé, îáúåêòíî-îðèåíòèðîâàííûé, èìïåðàòèâíûé |
|---|---|
| Àâòîð(û): | |
| Ðåëèç: | |
| Òèïèçàöèÿ äàííûõ: | |
| Äèàëåêòû: | |
| Èñïûòàë âëèÿíèå: | |
OCaml â ñîâðåìåííûé îáúåêòíî-îðèåíòèðîâàííûé ÿçûê ôóíêöèîíàëüíîãî ïðîãðàììèðîâàíèÿ îáùåãî íàçíà÷åíèÿ, êîòîðûé áûë ðàçðàáîòàí ñ ó÷¸òîì áåçîïàñíîñòè èñïîëíåíèÿ è íà䏿íîñòè ïðîãðàìì. Ýòîò ÿçûê èìååò âûñîêóþ ñòåïåíü âûðàçèòåëüíîñòè, ÷òî ïîçâîëÿåò åãî ëåãêî âûó÷èòü è èñïîëüçîâàòü. ßçûê CaML ïîääåðæèâàåò ôóíêöèîíàëüíóþ, èìïåðàòèâíóþ è îáúåêòíî-îðèåíòèðîâàííóþ ïàðàäèãìû ïðîãðàììèðîâàíèÿ. Áûë ðàçðàáîòàí â 1985 ãîäó âî ôðàíöóçñêîì èíñòèòóòå INRIA, êîòîðûé çàíèìàåòñÿ èññëåäîâàíèÿìè â îáëàñòè èíôîðìàòèêè. Ñàìûé ðàñïðîñòðàí¸ííûé â ïðàêòè÷åñêîé ðàáîòå äèàëåêò ÿçûêà ML.
Èíñòðóìåíòàðèé OCaml âêëþ÷àåò â ñåáÿ èíòåðïðåòàòîð, êîìïèëÿòîð â áàéòêîä è îïòèìèçèðóþùèé êîìïèëÿòîð â ìàøèííûé êîä, ïðåâîñõîäÿùèé ïî ñâîèì ïàðàìåòðàì àíàëîãè÷íûå êîìïèëÿòîðû C/C++ äëÿ ìíîãèõ çàäà÷, îñîáåííî ñâÿçàííûõ ñ ñèíòàêñè÷åñêèì àíàëèçîì è ò. ï.
Íà ÿçûêå OCaml, â ÷àñòíîñòè, íàïèñàí ðåíäåðèíã ôîðìóë Ýíöèêëîïåäèè, èñïîëüçóþùèõ òåã <math>, ôàéëîîáìåííûé êëèåíò MLDonkey, ñòåê óïðàâëåíèÿ ãèïåðâèçîðîì Xen xapi (ÿâëÿåòñÿ ÷àñòüþ Xen Server/Xen Cloud Platform).
Ê äîñòîèíñòâàì ÿçûêà îòíîñÿò:
- ñòðîãóþ òèïèçàöèþ;
- ðàçâèòóþ ñèñòåìó ìîäóëåé;
- àâòîìàòè÷åñêóþ ñáîðêó ìóñîðà;
- ýôôåêòèâíîñòü;
- êðîññïëàòôîðìåííîñòü.
[ïðàâèòü] Ïðèìåð èñõîäíîãî òåêñòà íà OCaml (èç ôàéëà math/texvc.ml)
exception LexerException of string let lexer_token_safe lexbuf = try Lexer.token lexbuf with Failure s -> raise (LexerException s) let render tmppath finalpath tree = let outtex = Util.mapjoin Texutil.render_tex tree in let md5 = Digest.to_hex (Digest.string outtex) in begin let mathml = Mathml.render tree and html = Html.render tree in print_string (match (html,!Html.conservativeness,mathml) with None,_,None -> "+" ^ md5 | Some h,Html.CONSERVATIVE,None -> "c" ^ md5 ^ h | Some h,Html.MODERATE,None -> "m" ^ md5 ^ h | Some h,Html.LIBERAL,None -> "l" ^ md5 ^ h | Some h,Html.CONSERVATIVE,Some m -> "C" ^ md5 ^ h ^ "\000" ^ m | Some h,Html.MODERATE,Some m -> "M" ^ md5 ^ h ^ "\000" ^ m | Some h,Html.LIBERAL,Some m -> "L" ^ md5 ^ h ^ "\000" ^ m | None,_,Some m -> "X" ^ md5 ^ m ); Render.render tmppath finalpath outtex md5 end
[ïðàâèòü] Ññûëêè
- Îôèöèàëüíûé ñàéò ÿçûêà OCaml (àíãë.)
- Ñàéò OCaml Community (àíãë.)
- Èçó÷åíèå ÿçûêà OCaml äëÿ C, C++ è Perl-ïðîãðàììèñòîâ (àíãë.)(íåäîñòóïíàÿ ññûëêà)
- Ââåäåíèå â OCaml, ÷àñòè÷íûé ïåðåâîä:
- The Basics
- Ñòðóêòóðà ïðîãðàìì íà OCaml
- Ââåäåíèå â OCaml: Òèïû äàííûõ è ñîïîñòàâëåíèå
- Ââåäåíèå â OCaml: Íóëåâûå óêàçàòåëè, óòâåðæäåíèÿ è ïðåäóïðåæäåíèÿ
- Ñàéò Gerd Stolpmannâ™a, ïîñâÿùåííûé OCaml (àíãë.)
- Ïåðåâîä äîêóìåíòàöèè íà ðóññêèé ÿçûê
- Ïåðåâîä íà ðóññêèé ÿçûê êíèãè Oreilly DAOC
[ïðàâèòü] ßçûêè ñ ïîõîæèìè âîçìîæíîñòÿìè
| Ýòî çàãîòîâêà ñòàòüè î êîìïüþòåðíûõ ÿçûêàõ. Âû ìîæåòå ïîìî÷ü ïðîåêòó, èñïðàâèâ è äîïîëíèâ å¸. |
| Îñíîâíûå ÿçûêè ïðîãðàììèðîâàíèÿ (ñðàâíåíèå IDE èñòîðèÿ õðîíîëîãèÿ) | |
|---|---|
| Èñïîëüçóåìûå â ðàçðàáîòêå |
Àäà APL ßçûê àññåìáëåðà ActionScript ABAP/4 AutoIt AWK Áåéñèê Ñè Êîáîë C++ C# Cω Clarion Clojure ColdFusion Common Lisp D dBase Delphi Eiffel Erlang Euphoria F# Ôîðò Ôîðòðàí Gambas Go Groovy HAL/S Haskell Icon Java JavaScript Limbo Lua Object Pascal Objective-C OCaml Oz Parser Ïàñêàëü Perl PHP PowerBASIC PureBasic Python ÏË/1 Ïðîëîã Ruby Scala Scheme Smalltalk SQL PL/SQL Tcl Vala Visual Basic (.NET) |
| Àêàäåìè÷åñêèå | |
| IEC 61131-3 | |
| Ïðî÷èå | |
| Ýçîòåðè÷åñêèå | |
| Âèçóàëüíûå | |


