Co to jsou ML jazyky?

blv

Co to jsou ML jazyky?
« kdy: 20. 11. 2010, 22:13:04 »
Omlouvám se za potencionálně trapný dotaz, ale co to jsou ML jazyky? Jaký je princip programování v jazycích jako ML, F#..., ocaml

Na české wikipedii je: Programovací jazyky odvozené od ML jsou známé pro jejich staticky orientované typové systémy a typově usuzující kompilátory.

V čem se tedy ML jazyky liší například od pascalu?


faha

Re: Co to jsou ML jazyky?
« Odpověď #1 kdy: 21. 11. 2010, 12:14:05 »
Dobry den,
jedna se o rodinu jazyku pro funkcionalni programovani, pokusim se to jednoduse popsat.

V klasickych jazycich pro proceduralni programovani (zmineny Pascal, ale i napr. C, PHP ...) se zapisuje kod jako sekvence po sobe jdouci prikazu, ktere presne vykonavaji danou operaci (prirazeni, zavolani funkce, vetveni kodu pomoci podminek, cykly apod), algorimus tedy popisujete ve forme "vem promenou, neco s ni udelej, proved cyklus, kdyz je hodnota takove udelej toto, pokud neni udelej tamto ... apod).

Kdezto u funkcionalnich jazyky nepopisujete pocitaci jak ma operovat s daty na urovni promenych( kterou kam presunout, co s ni udelat ), k programu pristupujeme jako matematickemu vyrazu (funkci) a nasim hlavnim cilem je v popsat reseni funkce, tedy popisujeme co chceme spocitat, ovsem nerikame pocitaci nic o tom jak to ma provadet, to je "jeho" vec. (trochu podobny pristup lze napr. videt v SQL jazycich, popisete vysledek a jeho reseni, ale o samotne provadeni se nezajimate)

Snad jsem to alespon trochu vystihnul a trochu jsem vam to ujasnil.

blv

Re: Co to jsou ML jazyky?
« Odpověď #2 kdy: 22. 11. 2010, 09:06:55 »
Nebudu tvrdit že jsem to úplně pochopil ale alespoň mám nejakou představu.

Jde mi o to to přesně jsou ty ml jazyky, ne co je funkcionální programování...  ;)

Funkcionální jazyk je IMHO celkem obecný pojem - Haskell, Ocaml,  Forth Erlang - jsou to funkcionální jazyky, přesto se od sebe hodně liší...

Takže: co konkrétně jsou ty ML jazyky?

Dekuji za odpovědi.

Re: Co to jsou ML jazyky?
« Odpověď #3 kdy: 22. 11. 2010, 11:09:45 »

podlesh

Re: Co to jsou ML jazyky?
« Odpověď #4 kdy: 22. 11. 2010, 14:26:13 »
Hlavní charakteristikou ML a odvozených jazyků je silný statický typový systém. Byl to dokonce důvod vytvoření ML (ten nikdy nebyl určen pro "reálné psaní"). Mezi praktické odvozeniny patří například Ocaml (ty dvě poslední písmenka ho prozradí).

Funkcionální jazyky bývají "dynamicky" typované, tradice vychází především z LISPu. Zjednodušeně v pár slovech: funkci se předhodí libovolné parametry, je na ní jak se s tím popere a něco vrátí (zase, může vrátit jakýkoliv typ). Ve staticky typovaných jazycích (ML, ale třeba Haskell) má funkce přesně definované typy parametrů a přesně definováno, jaký typ vrátí.

Takže to byl rozdíl ML oproti "tradičním" funkcionálním jazykům. Rozdíl oproti pascalu pak spočívá v tom že je funkcionální, nicméně ML není (na rozdíl od např. Haskellu) "čistě funkcionální" a umožňuje i imperativní programování (jako třeba LISP). Umožňuje ale i čistě funkcionální programování, což Pascal neumožní.


Inkvizitor

Re: Co to jsou ML jazyky?
« Odpověď #5 kdy: 22. 11. 2010, 21:03:42 »
Doporučuju se podívat třeba sem: http://pleac.sourceforge.net/ Pascal tam není, ale OCaml a jiné jazyky ano.