Movatterモバイル変換


[0]ホーム

URL:


Přeskočit na obsah
WikipedieWikipedie: Otevřená encyklopedie
Hledání

OCaml

Z Wikipedie, otevřené encyklopedie
OCaml
Vznik1996
LicenceLGPL
Webocaml.org
Přípona souboru.ml, .mli

OCaml je vinformatice implementaceprogramovacího jazyka Caml, která byla rozšířena oobjektově orientované konstrukce. OCaml je sada nástrojů obsahujícíinterpret,překladač dobytecode i překladač dostrojového kódu, který provádíoptimalizace. Obsahuje rozsáhlouknihovnu funkcí, což v něm umožňuje dělat aplikace takové jako vPythonu neboPerlu.

Jazyk vytvořili v roce 1996Xavier Leroy, Jérôme Vouillon,Damien Doligez, Didier Rémy a další jakoopen source projekt, který je dále spravován institucíINRIA.

Základní principy

[editovat |editovat zdroj]

Programovací jazyky odvozené od ML jsou známé pro své staticky orientovanétypové systémy a typy odvozující kompilátory (překladače). OCaml sjednocuje pod ML typově orientované systémyfunkcionální,imperativníobjektově orientované programování.

OCaml, jakožto jazyk se statickým typovým systémem, eliminuje velké množstvíprogramátorských chyb, které se jinak mohou objevovat až při běhu programu. Nutí programátora brát ohled na omezení typově orientovaného systému. Kompilátor s typovým odvozováním (inferencí) značně redukuje potřebudeklaracedatového typu (obvykle není potřeba deklarace proměnných jako je to u jiných programovacích jazyků, například v jazyceJava).

OCaml je možná nejvýznamnější z vedlejších programovacích jazyků vzniklých naakademické půdě, s ohledem na výkonnost. Díky tomu, že je to staticky orientovaný typový systém, není možný výskyt typových chyb za běhu. Další výhodou je, že zabraňuje[kdo?] typování za běhu programu, které snižuje výkonnost dynamických jazyků, přičemž je stále zaručen (pouze) typově bezpečný chod programu.

Vlastnosti

[editovat |editovat zdroj]

OCaml distribuce obsahuje:

  • Rozšířitelnýparser a makro jazyk jménem Camlp4, který umožňuje OCaml syntaxi rozšířit nebo dokonce nahradit
  • Scanner a parser nástroje nazvané ocamllex a ocamlyacc
  • Debugger, který podporuje zpětné krokování pro zkoumání chyb
  • Generátor dokumentace
  • Profilování – pro měření výkonnosti

Kompilátor nativního (strojového) kódu je dostupný pro mnohéplatformy, včetněUnix,Microsoft WindowsAppleMac OS X.

OCaml bytecode a nativní kód programu může být napsán vevláknech. Nicméněgarbage kolektor není navržen pro běh ve vláknech,symetrický multiprocessing není podporován.

Ukázky kódu

[editovat |editovat zdroj]

Základní příkazocaml vypíše verzi programu:

$ocamlObjectiveCamlversion3.09.0#

Kód může být zapsán na# řádku. Například pro výpočet 1 + 2 * 3:

#1+2*3;;-:int=7

OCaml odvozuje datový typ z výrazu jakoint (integer) a vrací výsledek „7“.

Ahoj světe

[editovat |editovat zdroj]

Následující program „bonjour.ml“:

print_endline"Bonjour Monde!";;

může být zkompilován do bytecodu:

$ocamlcbonjour.ml-obonjour

a spuštěn:

$./bonjourBonjourMonde!$

Součet seznamu integerů

[editovat |editovat zdroj]

Seznam je jeden z nejzákladnějších datových typů v OCaml. Následující příklad sčítá seznam integerů.

letrecsumxs=matchxswith|[]->0|x::xs'->x+sumxs'
#sum[1;2;3;4;5];;-:int=15

Quicksort

[editovat |editovat zdroj]

OCaml má výstižné výrazy rekurzivních algoritmů. Následující příklad implementujequicksort algoritmus pro třídění seznamu vzestupně.

letrecquicksort=function|[]->[]|pivot::rest->letis_lessx=x<pivotinletleft,right=List.partitionis_lessrestinquicksortleft@[pivot]@quicksortright

Externí odkazy

[editovat |editovat zdroj]
  • Obrázky, zvuky či videa k tématuOCaml na Wikimedia Commons
Programovací jazyky
abecední seznam programovacích jazyků
multiparadigmatické

AdaC++Common LispDF#GoOberonPerlPHPPythonRakuRubyRustScalaSwiftTcl (Tk) •Vala

strukturované (procedurální)

AWKCCOBOLDCLForthFortranLuaModula-2 /Modula-3PascalPawnPL/SQL

objektové
funkcionální
dotazovací

LINQSPARQLSQLXQueryXSL (XSLTXSL-FOXPath)

logické
výukové
ezoterické
historické

ALGOLAPLBBASICCPL (BCPL) •JMUMPSPL/ISimula 67SNOBOL

další
skriptovací/strojový kódkompilované/interpretovanéinteraktivní/dávkovéWYSIWYG
Autoritní dataEditovat na Wikidatech
Citováno z „https://cs.wikipedia.org/w/index.php?title=OCaml&oldid=25498115
Kategorie:
Skryté kategorie:

[8]ページ先頭

©2009-2026 Movatter.jp