ML (programski jezik) — разлика између измена

нема резимеа измене
Нема описа измене
Нема описа измене
{{МАТФДПЈ2016}}
'''-{ML}-''' (eng. ''-{MetaLanguage}-'') je [[programski jezik]] koji je razvio -{[[Robin Milner]]}- 1970-ih godina na [[Univerzitet u Edinburgu|Univerzitetu u Edinburgu]]. <ref name="Gordon1996">{{cite web | last = Gordon | first = Michael J. C. | authorlink = Michael J. C. Gordon | year=1996 | title = Kratka istorija - -{LCF}- - -{HOL}- | url = http://www.cl.cam.ac.uk/~mjcg/papers/HolHistory.html | accessdate = 2007-10-11}}</ref>
Njegova sintaksa je inspirisana -{[[ISWIM]]}--om (-{ISWIM}- je apstraktni programski jezik smišljen od strane -{P.J.Landin}-; akronim predstavlja -{„If You See What I Mean“}-).
Pripada [[Функционално програмирање|funkcionalnoj]] i [[Императивно програмирање|imperativnoj]] programskoj [[programska paradigma|paradigmi]].
==Funkcija jezika==
-{ML}- je skraćenica od [[metajezik]]: bio je zamišljen za razvijanje metoda dokaza teorema.
Zbog dizajna i jedostavnogjednostavnog rukovanja podacima, koristi se prilikom programiranja prevodioca, analizatora, dokazivača teorema.
Kao programski jezik opšte namene, svoju primenu nalazi i u [[Биоинформатика|bioinformatici]], finansijskim sistemima, itd.
Ima odličnu podršku za [[algebarski tipovi podataka|algebarske tipove podataka]] (-{ADTs}-), što ga, zajedno sa idejom o razvijanju metoda dokaza, čini veoma pogodnim za programiranje nekih matematičkih softvera.
 
==Veza sa drugim jezicima==
Glavni jezici koji pripadaju -{ML}--u su -{[[Standard ML]]}- -{(SML)}- i -{[[Caml]]}-. Osim njih, postoje i drugi - poput jezika -{[[F sharp|F#]]}-, koji se koristi kao podrska -{[[.NET Framework|Microsoftovoj .NET platformi]]}-.
Kao što je pomenuto na početku, zbog osobina koje ga karakterišu, -{ML}- ne pripada isključivo jednoj programskoj paradigmi. Pripada prvenstveno funkcionalnoj paradigmi, međutim, bez obzira na to što ohrabruje funkcionalno programiranje – on nije isključivo funkcionalan (poput jezika kao što je -{[[Haskel (programski jezik)|Haskell]]}-), jer on ne dozvoljava bočne efekte. Osim funkcionalnoj, -{ML}- pripada i imperativnoj paradigmi.
 
Kao predstavnik ove dve paradigme, on ima neke zajedničke osobine sa njihovim ostalim predstavnicima:
===Prednosti===
* portabilnost koda: program napisan na jednoj platformi može da se koristi (prenosi i izvršava) bilo gde – što je značajno zbog uniformnosti pisanja koda (samim tim se i izmene jednostavno vrše), ali, sa druge strane, arhitekturu određenog računara nećemo moći maksimalno da iskoristimo ovim uniformnim pristupom
* dizajn jezika: iako je strogo tipiziran, programeri uglavnom ne moraju da eksplicitno pišu deklaracije tipova – što kodove pisane u ovom prorgamskomprogramskom jeziku čini kompaktnim i veoma čitljivim (čitljivijim od mnogih čija sintaksa zahteva eksplicitnu deklaraciju tipova)
* ima odličnu podršku za algebarske tipove podataka, što ga čini veoma pogodnim za rad sa odgovarajućim matematičkim izrazima
* omogućena je jednostavna manipulacija podacima
 
===Liste===
Lista mora imati komponente istog tipa i mogu biti bilo koje dužine. Postoje dva konstruktora lista, prazna lista "''-{nil"}-'' i operator "''::"''. Konstruktor "''-{nil"}-'' je lista koja ne sadrži ništa, operator "''::"'' uzima stavku sa leve strane i listu sa desne da bi vratio listu za jedan dužu od originalne. Primeri:
-{nil}- []
-{1::nil}- [1]
-{2::1::nil}- [2,1]<ref name="prva"></ref>
 
Operator "''@"'' se koristi za spajanje dve liste, na primer:
[1,2,3] @ [4,5,6] = [1,2,3,4,5,6]<ref name="prva"></ref>
 
3

измене