Материал из Seo Wiki - Поисковая Оптимизация и Программирование
Objective Caml| Файл:Caml.128x58.gif </span> |
<tr><th style="padding:3px">Семантика:</th><td class="" style="padding:3px">
мультипарадигменный: функциональный, объектно-ориентированный, императивный
</td></tr><tr><th style="padding:3px">Автор(ы):</th><td class="" style="padding:3px">
INRIA
</td></tr><tr><th style="padding:3px">Последняя версия:</th><td class="" style="padding:3px">
3.11.2 (20 января 2010)
</td></tr><tr><th style="padding:3px">Типизация данных:</th><td class="" style="padding:3px">
строгая, статическая
</td></tr><tr><th style="padding:3px">Диалекты:</th><td class="" style="padding:3px">
F#, JoCaml, MetaOCaml, OcamlP3l
</td></tr><tr><th style="padding:3px">Испытал влияние:</th><td class="" style="padding:3px">
Standard ML, Caml Light
</td></tr>
</table>
OCaml — современный объектно-ориентированный язык функционального программирования общего назначения, который был разработан с учётом безопасности исполнения и надёжности программ. Этот язык имеет высокую степень выразительности, что позволяет его легко выучить и использовать. Язык CaML поддерживает функциональную, императивную и объектно-ориентированную парадигмы программирования. Был разработан в 1985 году во французском институте INRIA, который занимается исследованиями в области информатики. Самый распространённый в практической работе диалект языка ML.
Инструментарий OCaml включает в себя интерпретатор, компилятор в байткод и оптимизирующий компилятор в машинный код, превосходящий по своим параметрам аналогичные компиляторы C/C++ для многих задач, особенно связанных с синтаксическим анализом и т.п.
На языке OCaml, в частности написан рендеринг формул Википедии, использующих тег <math>, а также популярный файлообменный клиент MLDonkey.
К достоинствам языка относят:
- строгую типизацию;
- развитую систему модулей;
- автоматическую сборку мусора;
- эффективность;
- кроссплатформенность.
[править] Пример исходного текста на 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
[править] Языки с похожими возможностями
ca:Objective Caml
cs:OCaml
de:Objective CAML
el:OCaml
en:Objective Caml
es:Ocaml
fr:Objective Caml
gl:Ocaml
it:Objective Caml
ja:Objective Caml
ka:ობიექტური კამლი
ko:Objective Caml
la:Ocaml
nl:Ocaml
nn:OCaml
no:OCaml
pl:OCaml
pt:OCaml
sl:Ocaml
tg:OCaml
tr:Ocaml
uk:Objective Caml
vi:OCaml
zh:OCaml
Served in 1.061 secs.