Poređenje programskih jezika
Programski jezici se koriste za kontrolu ponašanja mašine (često računara). Kao prirodni jezici, programski jezici su u skladu sa pravilima sintakse i semantike.
Postoje hiljade programskih jezika[1] i svake godine se stvaraju novi. Mali broj jezika ikada postane dovoljno popularan da njih koriste više ljudi, ali profesionalni programeri mogu da koriste desetine različitih jezika u karijeri.
Opšte upoređivanje
[uredi | uredi izvor]U sledećoj tabeli se upoređuju opšte i tehničke informacije najčešće korišćenih programskih jezika. Vidi članke pojedinačnih jezika za dodatne informacije. Imajte na umu da u narednoj tabeli možda nedostaje neke informacije.
Jezik | namena | Imperativ | Objektno-orijentisano | Funkcionalni | Proceduralni | Generički | Reflektivni | Događaj-pogon | Druge paradigme | Standardizacija? |
---|---|---|---|---|---|---|---|---|---|---|
ActionScript 3.0 | Application, client-side, Web | Da | Da | Da | 1996, ECMA | |||||
Ada | Aplikacija, ugrađen, stvarno vreme, sistem | Da | Da[2] | Da[3] | Da[4] | uporedni,[5] raspodeljen,[6] | 1983, 2005, 2012, ANSI, ISO, GOST 27831-88[7] | |||
Aldor | Visok domen-specifičnosti, simbolično računarstvo | Da | Da | Da | Ne | |||||
ALGOL 58 | Aplikacija | Da | Ne | |||||||
ALGOL 60 | Aplikacija | Da | 1960, IFIP WG 2.1, ISO[8] | |||||||
ALGOL 68 | Aplikacija | Da | istovremen | 1968, IFIP WG 2.1, GOST 27974-88,[9] | ||||||
Ateji Piks | Paralelna aplikacija | Da | pi račun | Ne | ||||||
APL | Primena, obrada podataka | Nizno orijentisano, prećutno | 1989, ISO | |||||||
Asembler | Opšti | Da | svaki, sintaksa je obično visoko specifična, u odnosu na ciljni procesor | Da | ||||||
Auto Hotki | GUI automatizacija (makroi), visoko specifični domen | Da | Ne | |||||||
AutoIt | GUI automatizacija (makroi), visoko specifični domen | Da | Da | Da | Ne | |||||
Baš | Ljuska, skripta | Da | Da | |||||||
Bejzik | Primena, edukacija | Da | Da | 1983, ANSI, ISO | ||||||
BBj | Aplikacija, biznis, veb | Da | Da | Ne | ||||||
BinŠel | Aplikacija, skripza | Da | Da | Da | Da | u progresu, JCP[10] | ||||
BitC | Sistem | Da | Da | Da | Da | Ne | ||||
BLISS | Sistem | Da | Ne | |||||||
BlicMaks | Primena, igra | Da | Da | Da | Ne | |||||
BLU | Edukacija | Da | Da | Da | Ne | |||||
Bu | Primena | Ne | ||||||||
Bro | specifičan domen, primena | Da | Da | Ne | ||||||
C | Primena, sistem,[11]
opšte namene, operacije na niskom nivou |
Da | Da | 1989, ANSI C89, ISO C90, ISO C99, ISO C11[12] | ||||||
C++ | Primena, sistem | Da | Da | Da | Da | Da | 1998, ISO/IEC 1998, ISO/IEC 2003, ISO/IEC 2011[13] | |||
C# | Primena, RAD, biznis, na strani klijenta, uopšte, na strani servera, veb | Da | Da | Da<![14] | Da | Da | Da | Da | strukturiran, istovremeno | 2000, ECMA, ISO[15] |
Klarion | Opšte, biznoc, veb | Da | Da | Da[16] | Nepoznato | |||||
Klin | Opšta | Da | Da | Ne | ||||||
Clojure | Opšta | Da | istovremen | Ne | ||||||
KLU | Opšta | Da | Da | Da | Da | Ne | ||||
Kobol | Primena, biznis | Da | Da | Da | Da | ANSI X3.23 1968, 1974, 1985; ISO/IEC 1989:1985, 2002, 2014 | ||||
Kobra | Primena, biznis, opšta, veb | Da | Da | Da | Da | Da | Ne | |||
KoldFjužn (CFML) | Veb | Da | Da | Ne | ||||||
Common Lisp | Opšta | Da | Da | Da | Da | Da | Da | proširirena sintaksa, syntactic macros, multiple dispatch | 1994, ANSI | |
KOMAL 80 | Edukacija | Da | Da | Ne | ||||||
Kristal 1.0.0 | Edukacija | Da | Da | Da | Ne | |||||
Cython | Primena, opšta, numeričko računarstvo | Da | Da | Da | Da | aspekt-orijentisan | Ne | |||
De | Application, system | Da | Da | Da | Da | Da | Da | generativan, istovremen | Ne | |
Dart | Primena, veb | Da | Da | struktuirana | Ne | |||||
Dilan | Primena | Da | Da | Ne | ||||||
Ajfel | Opšta, primena, biznis, strani klijent, na strani servera, veb (EVF) | Da | Da | Da[17][18] | Da | Da Erl-G | Da Agents | raspodeljeno izračunavanje SCOOP, Void-safe | 2005, ECMA, ISO[19] | |
Eliksir | Aplikacija, distribuiran | Da | istovremen, distribuirano | Ne | ||||||
Erlang | Aplikacija, distribuiran | Da | istovremen, distribuiran | Ne | ||||||
Euforija | Aplikacija | Da | Da | Ne | ||||||
Faktor | stek-orijentisan | Ne | ||||||||
Falkon | Opšte, aplikacije | Da | Da | Da | prototip OOP, poruka orijentisani, tabelarno programiranje | Ne | ||||
FP | Da | Ne | ||||||||
F# | Aplikacija | Da | Da | Da | Da | Ne | ||||
Fort | Opšta | Da | može se videti | stek-orijentisan | 1994, ANSI | |||||
Fortran | Aplikacija, numeričko računarstvo | Da | Da | Da | Da | 1966, ANSI 66, ANSI 77, MIL-STD-1753, ISO 90, ISO 95, ISO 2003, ISO/IEC 1539-1:2010 (2008) | ||||
FriBEJZIK | Aplikacija, numeričko računarstvo | Da | Da | Da | Da | Ne | ||||
G2 | Aplikacija, interfejs, ekspert sistem | Da | Da | Da | zajednički razvoj i grafički runtajm okruženja | Ne | ||||
Gambas | Aplikacija | Da | Da | Da | Ne | |||||
Game Maker Jezik | Aplikacija, igrice | Da | Da | Da | Ne | |||||
GLBejzik | Aplikacija, igrice | Da | Da | Da | lak objektno-orjentisani | Ne | ||||
Gou | Aplikacija, veb, strani servera | Da | Da | Da | Da | Da | Da | istovremen | Ne | |
Gosu | Aplikacija, opšte, skripting, veb | Da | Da | Da | Da | Ne | ||||
GrafTolk | Aplikacija | Da | logičan | Ne | ||||||
Gruvi | Aplikacija, opšte, skripting, veb | Da | Da | Da | aspekt-orjentisan | U progresu, JCP[20] | ||||
Harbur | Aplikacija, biznis, obrada podataka, generalno, veb | Da | Da | Da | Da | Da | Da | deklarativno | Ne | |
Haskel | Aplikacija | Da | Da | lenja evolucija | 2010, Haskell 2010[21] | |||||
Hakse | Aplikacija, opšte, veb | Da | Da | Da | Da | Da | Ne | |||
HiperNekst | Aplikacija, edukacija | Da | Da | slabo kucanje | Ne | |||||
HiperTolk | Aplikacija, RAD, Opšte | Da | Da | slabo kucanje | Nepoznato | |||||
IO | Aplikacija, izgubljen-driven skripting | Da | Da | Ne | ||||||
ISLIP | Opšte | Da | Da | Da | Da | 1997, ISO | ||||
J | Obrada podataka | orjentisan-niz, Nivo funkcije, prećutan | Ne | |||||||
JADE | Aplikacija, distribuirano | Da | Da | Ne | ||||||
Java | Aplikacija, biznis, na strani klijenta, generalni, mobilni razvoj, na strani servera, veb | Da | Da | Da | Da | Da | Da | istovremen | De facto standard via Java Jezik Specification | |
Julija | Opšti i napravljen za tehničko računarstvo | Da | Da | Da | Da | Da | Da | Višestruka depeša, meta, skalarni i niz-orijentisan, paralelan, istovremen, distribuiran ("oblak") | Ne | |
Javaskript | Klijent-strani, na strani servera, veb | Da | Da | Da | Da | Programiranje zasnovano na prototipu | 1997, ECMA | |||
Džoj | istraživanje | Da | stek-orijentisan | Ne | ||||||
K | Obrada podataka, biznis | orjentisan niz, prećutan | Nepoznato | |||||||
Kotlin | Aplikacija, mobilni razvoj, server-side, na strani klijenta, veb | Da | Da | Da | Da | Da[22] | Ne | |||
LabVju (G) | Aplikacija, industrijski instrumenti-automatizacije | Da | Da | Da | Da | Podatak-tok programiranje, vizuelno | Ne | |||
Lisp | Opšta | Da | Nepoznato | |||||||
Lajvkod | Aplikacija, RAD, opšte | Da | Da | slabo kucanje | Ne | |||||
Logtolk | Veštačka inteligencija, aplikacija | Da | Da | Da | logičan | Ne | ||||
Lua | Aplikacija, ugrađen skripting | Da | Da[23] | Da | Da | Da | aspekt-orjentisan | Ne[24] | ||
Maple | Simboličko računanje, numeričko računarstvo | Da | Da | Da | Da | distribuirano | Ne | |||
Mathematica | Simbolički jezik | Da | Da | Da | Da | logičan, distribuiran | Ne | |||
MATLAB | Visoko-specifični domen, numeričko računarstvo | Da | Da | Da | Ne | |||||
Modula-2 | Aplikacija, sistem | Da | Da | 1996, ISO[25] | ||||||
Modula-3 | Aplikacija | Da | Da | Da | Ne | |||||
MUMPS (M) | Aplikacija, baza podataka | Da | Da | istovremen, multi-korisnik, NoSkul, proces transakcije | 1977, ANSI | |||||
Nim | Aplikacija, opšte, veb, skripting, sistem | Da | Da | Da | Da | Da | Da | Višestruka depeša, Istovremeni, meta | Ne | |
Oberon | Apliacija, sistem | Da | Da | Ne | ||||||
Objektni Paskal (Delfi) | Aplikacija, opšte, mobilni aplikacija, veb | Da | Da | Da | Da | Da | Da | struktuiran | Ne | |
Objective-C | Aplikacija, opšte | Da | Da | Da | istovremen | Ne | ||||
OKaml | Aplikacija | Da | Da | Da | Da | Ne | ||||
Okkam | Opšte | Da | Da | concurrent, procesno-orjentisano | Ne | |||||
Opa | Veb aplikacije | Da | Da | Da | distribuirano | Ne | ||||
Oksigen | Aplikacija | Da | Da | Da | Ne | |||||
Oz | Aplikacija, distribucija, edukacija | Da | Da | Da | istovremen, logičan | Ne | ||||
Paskal | Aplikacija, edukacija | Da | Da | 1983, ISO[26] | ||||||
Perl | Aplikacija, skripting, obrada teksta, veb | Da | Da | Da | Da | Da | Da | Ne | ||
PHP | Server-strana, veb aplikacija, veb | Da | Da[27] | Da[28] | Da | Ne | ||||
PL/I | Aplikacija | Da | Da | Da | 1969 | |||||
Plus | Aplikacija, razvoj sistema | Da | Da | Ne | ||||||
Prolog | Aplikacija, veštačka inteligencija | logičan | 1995, ISO | |||||||
PjurBejzik | Aplikacija | Da | Ne | |||||||
Pajton | Aplikacija, opšte, veb, skripting, veštačka inteligencija, Scientific Computing | Da | Da | Da | Da | Da | aspekt-orjentisan | Ne | ||
R | Aplikacija, statistika | Da | Da | Da | Da | Ne | ||||
Reket | Edukacija, opšte, skripting | Da | Da | Da | Da | modular, logičan, meta | Ne | |||
RILbejzik | Aplikacija | Da | Nepoznato | |||||||
RIBOL | Distribuiran | Da | Da | Da | dijalekt | Ne | ||||
RPG | Aplikacija, sistem | Da | Da | Ne | ||||||
Rubi | Aplikacija, skripting, veb | Da | Da | Da | Da | aspekt-orjented | 2011(JIS X 3017), 2012(ISO/IEC 30170) | |||
RAST | Aplikacija, sistem | Da | Da | Da | Da | Da | istovremen | Ne | ||
S | Aplikacija, statistika | Da | Da | Da | Da | Ne | ||||
S-Leng | Aplikacija, numerika, skripting | Da | Da | Ne | ||||||
Skala | Aplikacija, distribuirano, veb | Da | Da | Da | Da | Da | Da | De facto standard via Scala Jezik Specification (SLS) | ||
Scheme | Edukacija, opšta | Da | 1998, R6RS | |||||||
Sid7 | Aplikacija, opšta, skripta, veb | Da | Da | Da | Da | multi-paradigma, proširiva, strukturirana | Ne | |||
Simula | Edukacija, opšte | Da | Da | Da | simulacija diskretnih događaja, nit (kvazi-paralelno) izvršenje programa | 1968 | ||||
Smol Bejzik | Aplikacija, edukacija, igrice | Da | Da | komponentno | Ne | |||||
Smalltalk | Aplikacija, opšta, biznis, veb, veštačka inteligencija, obrazovanje | Da | Da | Da | Da | Da | istovremen, deklarativan | 1998, ANSI | ||
SnoBol | Obrada teksta | Nepoznato | ||||||||
Standard ML | Aplikacija | Da | Da | Da | 1997, SML '97[29] | |||||
Svift | Aplikacija, opšta | Da | Da | Da | Da | Da | Da | istovremeno | Ne | |
Tcl | Aplikacija, skripta, veb | Da | Da | Da | Da | Da | Da | Ne | ||
Vižual bejsik | Aplikacija, RAD, edukacija, biznis, opšta, (Uključuje VBA), Kancelarija za automatizaciju | Da | Da | Da | Da | komponentno | Ne | |||
Visual Basic .NET | Aplikacija, RAD, edukacija, veb, biznis, opšta | Da | Da | Da | Da | Da | Da | Da | struktuirano, distributivno | Ne |
Vižual FoksPro | Aplikacija | Da | Podaci aspekta, logičan | Ne | ||||||
Vižual Prolog | Aplikacija | Da | Da | Da | Da | deklarativno, logičan | Ne | |||
Windows PowerShell | Administracija | Da | Da | Da | Da | cevovod | Ne | |||
Volfram Jezik | Simbolički jezik | Da | Da | Da | Da | logičan, distribuiran | Ne | |||
XL | Da | Da | konceptualno programiranje | Ne | ||||||
Xojo | Aplikacija, RAD, opšta, veb | Da | Da | Da | Da | Da | Ne | |||
Jezik | Namena | Imperativ | Objektno-orjentisani | Funkcionalni | Proceduralni | Generički | Reflektivni | Događaj-pogon | Druge paradigme | Standardizacija? |
Tip sistema
[uredi | uredi izvor]Kratke definicije
- Nominalni tip sistema znači da jezik odlučuje da li su vrste kompatibilne i/ili ekvivalentne na osnovu eksplicitnih izraza i naziva.
- Strukturalni tip sistema znači da jezik odlučuje da li su vrste kompatibilne i/ili ekvivalente na osnovu definicije i karakteristika vrste.
- Tip provere određuje da li i kada se mogu utvrditi vrste. Statička provera znači da li su tipovi greškaka prijavljeni na osnovu teksta (izvorni kod). Dinamička provera znači da su tipovi grešaka prijavljeni na osnovu dinamike programa (run-tajm) ponašanja.
Jezik | Sigurosni tip | Sistem tipova | Tip provere | Tip provere |
---|---|---|---|---|
Actionscript 3.0 | bezbedan | implicitno sa opcionalnim eksplicitnim kucanjem | statičan | |
Ada | bezbedan[TS 1] | eksplicitni | imenski | statičan |
Aldor | nesiguran | implicitni | statičan | |
Algol 58 | bezbedan | eksplicitni | statičan | |
Algol 60 | bezbedan | eksplicitni | statičan | |
Algol 68 | bezbedan | eksplicitni | strukturalni | statičan & tagged unions |
APL | bezbedan | dinamičan | ||
Auto Hotki | manji | n/a | n/a | n/a |
Ateji PIX | bezbedan | eksplicitni | imenski | statičan |
Baš | ? | ? | ? | ? |
Bejsik | bezbedan | eksplicitni | imenski | statičan |
BLIS | manji | n/a | n/a | n/a |
BinŠel | bezbedan | imenski | dinamičan | |
Bu | bezbedan | implicitni sa optimalnim eksplicitnim kucanjem | statičan sa optimalnim dinamičnim kucanjem | |
Bro | bezbedan | implicitni sa optimalnim eksplicitnim kucanjem | imenski | statičan |
C | nesiguran | eksplicitni | imenski | statičan |
C++ (ISO/IEC 14882) | nesiguran | eksplicitni | imenski | statičan[TS 2] |
C# | nesiguran[TS 3] | implicitni sa optimalnim eksplicitnim kucanjem | imenski | statičan[TS 4] |
Klin | bezbedan | implicitni | statičan | |
Clojure | bezbedan | implicitni sa optimalnim eksplicitnim kucanjem | dinamičan | |
Kobol | bezbedan | eksplicitni | imenski | statičan |
KoldFjužn (SFML) | bezbedan | implicitni | dinamičan | |
Common Lisp | bezbedan | implicitni sa optimalnim eksplicitnim kucanjem | dinamičan | |
Kurl | bezbedan | imenski | ||
Cython | bezbedan | implicitni sa optimalnim eksplicitnim kucanjem | imenski (tipovi izraza) i strukturalni (Pajton) | dinamičan sa optimalnim statičnim kucanjem |
D | nesiguran[TS 3] | eksplicitni | imenski | statičan |
Dilan | bezbedan | dinamičan | ||
Ajfel | bezbedan | imenski | statičan | |
Erlang | bezbedan | implicitni | dinamičan | |
Euforija | bezbedan | eksplicitni, implicitni sa objektima | imenski | statičan, dinamičan sa objektima |
F# | bezbedan | implicitni | imenski | statičan |
Falkon | bezbedan | implicitni | strukturalni | dinamičan |
Fort | manji | n/a | n/a | n/a |
Fortran | bezbedan | eksplicitni[TS 5] | imenski | statičan |
Gambas | bezbedan | eksplicitni | imenski | |
GLBejsik | bezbedan | eksplicitni. ne-eksplicitne deklaracije dostupne i preko opcije projekta | imenski | statičan |
Gou[30] | bezbedan | implicitni sa optimalnim eksplicitnim kucanjem | strukturalni | statičan |
Gosu | bezbedan | posebno implicitni (lokalni tip interfejsa) | imenski (potklasa) i strukturalni (strukturalni) | statičan |
Gruvi | bezbedan | implicitni sa optimalnim eksplicitnim kucanjem | dinamičan sa optimalnim statičnim kucanjem | |
Harbur | bezbedan | implicitni sa optimalnim eksplicitnim kucanjem | dinamičan | |
Haskel | bezbedan | implicitni sa optimalnim eksplicitnim kucanjem | strukturalni | statičan |
Hejks | bezbedan | implicitni sa optimalnim eksplicitnim kucanjem | imenski (potklasa) i strukturalni (strukturalni) | statičan sa optimalnim dinamičnim kucanjem |
Io | bezbedan | implicitni | dinamičan | |
ISLIP | bezbedan | dinamičan | ||
J | bezbedan | dinamičan | ||
Java | bezbedan[31] | eksplicitni | imenski | statičan |
Javaskript | bezbedan | implicitni | strukturalni | dinamičan |
Julija | bezbedan | implicitni sa optimalnim eksplicitni kucanjem[32] | ||
Džoi | bezbedan | dinamičan | ||
Kotlin | bezbedan | posebno implicitni (lokalni tip interfejsa) | imenski | statičan |
LabVju | bezbedan | |||
Lua | bezbedan | implicitni | dinamičan | |
Mepl | bezbedan | dinamičan | ||
Matematika | bezbedan | dinamičan | ||
MATLAB M-kod | bezbedan | dinamičan | ||
Modula-2 | nesiguran[TS 3] | eksplicitni | imenski | statičan |
MOdula-3 | nesiguran[TS 3] | eksplicitni | strukturalni | statičan |
MUMS (M) | manji | n/a | n/a | n/a |
Oberon | bezbedan | eksplicitni | imenski | statičan and partially dinamičan[TS 6] |
Objective-C | bezbedan | eksplicitni | imenski | dinamičan sa optional statičan kucanje[33] |
OKaml | bezbedan | implicitni sa optimalnim eksplicitnim kucanjem | strukturalni (rezultatu su imenski) | statičan |
Objektni Paskal (Delfi) | bezbedan | eksplicitni | imenski | statičan |
Opa | bezbedan | implicitni sa optional eksplicitni kucanje | strukturalni | statičan |
Oksigen | nesiguran | implicitni | statičan | |
Oz | bezbedan | implicitni | strukturalni | dinamičan |
Paskal | nesiguran[TS 3] | eksplicitni | imenski | statičan |
Perl 5 | implicitni | dinamičan | ||
Perl 6 | posebno implicitni[TS 7] | dinamičan sa optimalnim statičnim kucanjem | ||
PHP | implicitni sa optimalnim eksplicitnim kucanjem | dinamičan | ||
Plus | bezbedan | eksplicitni | strukturalni | statičan, dinamičan (opcioni) |
Prolog | dinamičan | |||
Pjur | dinamičan | |||
Pajton | bezbedan | implicitni | strukturalni | dinamičan |
RIBOL | bezbedan | implicitni | dinamičan | |
Reks | manji | n/a, implicitni wrt brojevi | n/a | statičan+dinamičan wrt brojevi |
RPG | nesiguran | statičan | ||
Rubi | bezbedan | implicitni | strukturalni | dinamičan |
Rust | bezbedan | implicitni sa optimalnim eksplicitnim kucanjem | statičan sa optimalnim dinamičnim kucanjem | |
ES | dinamičan | |||
ES-Lang | bezbedan | implicitni | dinamičan | |
Skala | bezbedan | posebno implicitni (lokalni tip interfejsa) | imenski (potklasa) i strukturalni (strukturalni) | statičan |
Scheme | bezbedan | implicitni | dinamičan (spor) | |
Sid7 | bezbedan | eksplicitni | imenski | statičan |
Simula | bezbedan | statičan[TS 8] | ||
Smalltalk | bezbedan | implicitni | dinamičan | |
Svift | bezbedan | posebno implicitni (lokalni tip interfejsa) | imenski (potklasa) i strukturalni (strukturalni) | statičan |
Standardni ML | bezbedan | implicitni sa optimalnim eksplicitnim kucanjem | strukturalni | statičan |
Tcl | dinamičan | |||
Vižual bejsik | bezbedan | implicitni sa optimalnim eksplicitnim kucanjem | imenski | statičan |
Visual Basic .NET | nesiguran[TS 3] | eksplicitni | statičan | |
Vižual Prolog | bezbedan | posebno implicitni | imenski | statičan |
Volfram jezik | bezbedan | dinamičan | ||
Windows PoverŠel | bezbedan | implicitni | dinamičan | |
XL | bezbedan | imenski | statičan | |
Xojo | bezbedan | eksplicitni | imenski | statičan |
Jezik | Sigurosni tip | Sistem tipova | Tip kompatibilnosti među složenima | Tip provere |
- ^ Nesiguran operations are well isolated by a "Unchecked_" prefix.
- ^ sa optional dinamičan type casting (see dinamičan cast)
- ^ a b v g d đ It is almost bezbedan, unbezbedan features are net commonly used.
- ^ sa optional dinamičan type (see dinamičan member lookup)
- ^ Optionally, kucanje can be eksplicitnily implied by the first letter of the identifier (known as implicitni kucanje sain the Fortran community).
- ^ dinamičan checking of type extensions i.e. inherited types
- ^ eksplicitni for statičan types
- ^ optional for formal and virtual procedures
Greška sigurnosti I/O i sistem poziva
[uredi | uredi izvor]Većina programski jezika će odštampati poruku o grešci i/ili izbaciti izuzetak ako operacija ulaza/izlaza ili neki drugi sistem poziva (npr chmod, kill) pogreše, osim ako programer nije eksplicitno uređen za različita rukovanje ovim događajima. Ovo, ovi jezici će sigurno odštampati grešku u tom pogledu.
Neki (uglavnom stariji) jezici zahtevaju da programer eksplicitno doda provere za ove vrste grešaka. Psihološki, različite kognitivne predrasude (npr. optimizam pristrasnosti) može da utiče na novajlije i stručnjake podjednako i ovi propusti mogu dovesti do pogrešnog ponašanja.
Jezik | Greške sigurnosti I/O |
---|---|
Ada | Da (izuzeci) |
ALGOL | Da (izuzeci ili povratna vrednost u zavisnosti od funkcije) |
Auto Hotki | Ne (svetski ErrorLevel može biti eksplicitni označen) |
Baš | Opciono[FSIO 1] |
Bro | Da |
C | Ne[FSIO 2] |
C++ | Ne[FSIO 3] |
Ce# | Da |
KOBOL | Ne |
Common Lisp | Da |
De | Da[traži se izvor] |
Ejfel | Ne – Zavisi od biblioteke u kojoj jet definiše net |
Erlang | Da |
Falkon | Da |
Fortran | Da |
GLBejsik | Ne – Izazvaće probleme da se program sruši |
Gou | Da (osim ako se eksplicitni rezultat ignoriše) |
Gosu | Da |
Harbur | Da |
Haskel | Da |
ISLIP | Da |
Java | Da |
Julija | Da |
Kotlin | Da |
LABVju | Da |
Lua | Ne (neke funkcije ne upozoravaju niti izbacuju izuzetke) |
Matematika | Da |
Objektivni Paskal (Delfi) | Neki |
Objective-C | Da (izuzeci) |
OKaml | Da (izuzeci) |
Perl | Ne[FSIO 4] |
Perl 6 | Da |
PHP | Da |
Pajton | Da |
RIBOL | Da |
Reks | Da (sa optional signal on… trap handling) |
RPG | Ne |
Rubi | Da |
Rust | Da (dok se rešenja eksplicitno ignorišu) |
ES | Nepoznato |
Smalltalk | Da |
Skala | Da[34] |
Standardni ML | Da[traži se izvor] |
Svift ≥ 2.0 | Da (izuzeci) |
Tcl | Da |
Vižual Bejsik | Da |
Vižual Prolog | Da |
Volfram jezik | Da |
Xojo | Da |
Jezik | Greške bezbednosti I/O |
- ^
set -e
enables termination if any unchecked exit status is nenzero. - ^ gcc can warn on unchecked error status. Newer versions of Visual Studio usually throw exceptions on failed I/O when using stdio.
- ^ g++ can warn on unchecked error status. Newer versions of Visual Studio usually throw exceptions on failed I/O when using stdio.
- ^ Considerable error checking can be enabled optionally, but by default Perl is net failbezbedan.
Izražajnost
[uredi | uredi izvor]Jezik | Statements ratio[35] | Lines ratio[36] |
---|---|---|
Ce | 1 | 1 |
Ce++ | 2.5 | 1 |
Fortran | 2 | 0.8 |
Java | 2.5 | 1.5 |
Perl | 6 | 6 |
Smalltalk | 6 | 6.25 |
Pajton | 6 | 6.5 |
Literatura o programskim jezicima sadrži obilje neformalnih tvrdnji o njihovoj relativnoj izražajnoj moći, ali ne postoji okvir za formalizovanje takve izjave, a bez posledica.[37] Ova tabela daje dve mere izražajnosti iz dva različita izvora. Dodatni mera ekspresivnosti, u GZip bytes, može se naći na Computer Language Benchmarks Game.
Benčmarkovi
[uredi | uredi izvor]Benčmarkovi su dizajnirani da oponašaju određenu vrstu opterećenja na komponente ili na ceo sistem. U računarskim programima se koriste za izradu nekih podataka i u ovom odeljku možda nisu u potpunosti optimizirani, a i relevantnost podataka je sporna. Najprecizniji testovi su oni koji su prilagođeni za određenu situaciju. Benčmark podaci drugih ljudi mogu imati neku vrednost, ali pravilno tumačenje donosi mnoge izazove The Computer Jezik Benchmarks Game sajt upozorava protiv over-generalizing from benchmark data, ali sadrži veliki broj mikro-benčmarkovih čitača-doprineo je kod, sa interfejsom koji generiše različite grafikone i tabele koje upoređuju specifične programske jezike i vrste testova.
Hronologija poređenja specifičnih jezika
[uredi | uredi izvor]- 1973 – Comparative netes on Algol 68 and PL/I – S. H. Valentine – February 1973
- 1976 – Evaluation of ALGOL 68, JOVIAL J3B, Pascal, Simula 67, and TACPOL Versus TINMAN – Requirements for a Common High Order Programming Language.
- 1977 – A comparison of PASCAL and ALGOL 68[38] – Andrew S. Tanenbaum – June 1977.
- 1993 – Five Little Jeziks and How They Grew – BLISS, Pascal, ALGOL 68, BCPL & C – Dennis M. Ritchie – April 1993.
- 2009 – On Go – oh, go on – How well will Google's Go stand up against Brand X programming language? – David Given – nevember 2009
Reference
[uredi | uredi izvor]- ^ As of May 2006 Diarmuid Pigott's Encyclopedia of Computer Jeziks Arhivirano na sajtu Wayback Machine (20. februar 2011) hosted at Murdoch University, Australia lists 8512 computer Jeziks.
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, 3.9 Tagged Types and Type Extensions
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 6: Subprograms
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 12: Generički Units
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3, Section 9: Tasks and Synchronization
- ^ Ada Reference Manual, ISO/IEC 8652:2005(E) Ed. 3 Annex E: Distributed Systems
- ^ „Vak.ru” (PDF). Arhivirano iz originala (PDF) 30. 03. 2017. g. Pristupljeno 15. 01. 2016.
- ^ ISO 1538:1984
- ^ „Vak.ru” (PDF). Arhivirano iz originala (PDF) 24. 03. 2017. g. Pristupljeno 15. 01. 2016.
- ^ JSR 274
- ^ „CM.bell-labs.com”. Arhivirano iz originala 22. 06. 2013. g. Pristupljeno 15. 01. 2016.
- ^ ANSI C89, ISO/IEC 9899:1990, 1999, 2011
- ^ ISO/IEC 14882:1998, 2003, 2011
- ^ Codeproject.com: Funkcionalni Programming in C# 3.0 using Lambda Expression[mrtva veza]
- ^ ECMA-334; ISO/IEC 23270:2006
- ^ Softvelocity.com
- ^ Basic Eiffel Jezik mechanisms
- ^ Closure (computer programming)
- ^ ECMA-367; ISO/IEC 25436:2006
- ^ JSR 241
- ^ „The Haskell 2010 Jezik Report”. Pristupljeno 07. 12. 2011. Most Haskell implementations extend the Haskell 2010 standard.
- ^ „M8 is out!”. „As a first peek into the future Reflektivni capabilities of Kotlin, you can now access properties as first-class objects in Kotlin”
- ^ Lua doesn't have explicit "object" type (more general type of "table" is used for object definition), but does have explicit syntax for object method calling
- ^ Version releases are accompanied with a definitive Lua Reference Manual showing full syntax and semantics; a reference implementation, and a test suite. These are used to generate other Lua VM implementations and compilers such as Kahlua and LLVM-Lua.
- ^ ISO/IEC 10514-1:1996
- ^ ISO 7185
- ^ PHP Manual, Chapter 19. Classes and Objects (PHP 5)[mrtva veza]
- ^ PHP Manual, Chapter 17. Functions[mrtva veza]
- ^ SMLNJ.org
- ^ The Go Programming Language Specification
- ^ Sheng Liang, Gilad Bracha. „dinamičan class loading in the Java virtual machine”. doi:10.1145/286942.286945.. Volume 33, Issue 10 of ACM SIGPLAN netices, October 1998.
- ^ „Types — Julia Language 0.5.0-dev documentation[[Kategorija:Botovski naslovi]]”. Arhivirano iz originala 26. 12. 2015. g. Pristupljeno 15. 01. 2016. Sukob URL—vikiveza (pomoć)
- ^ Developer.apple.com
- ^ Scala runs on the Java Virtual Machine from which it inherits the runtime exception handling.
- ^ McConnell, Steve (30. 11. 2009). Code Complete. Microsoft Press. str. 100. ISBN 978-0-7356-3697-2.
- ^ The ratio of line count tests won by each Jezik to the number won by C when using the Compare to feature at benchmarksgame.alioth.debian.org[mrtva veza]. Last updated May, 2006. C gcc was used for C, C++ g++ was used for C++, FORTRAN G95 was used for FORTRAN, Java JDK Server was used for Java, and Smalltalk GST was used for Smalltalk.
- ^ Felleisen, Matthias. On the Expressive Power of Programming Languages. ESOP '90 3rd European Symposium on Programming. CiteSeerX: 10
.1 .1 .51 .4656. - ^ Vrije Universiteit Amsterdam
Literatura
[uredi | uredi izvor]- McConnell, Steve (30. 11. 2009). Code Complete. Microsoft Press. str. 100. ISBN 978-0-7356-3697-2.
- Cezzar, Ruknet (1995). A Guide to Programming Languages: Overview and Comparison. ISBN 978-0-89006-812-0.
Spoljašnje veze
[uredi | uredi izvor]- Poređenje programskih jezika na sajtu Curlie (jezik: engleski)
- 99-bottles-of-beer.net — one program in over a thousand variations and multiple Languages.
- The speed, size and dependability of programming Languages — charts and narrative based on The Computer Jezik Benchmarks Game data.
- Shapes: Source Code Size and Run Time - charts based on current Benchmarks Game data.
- Comparison of syntaxes with sample codes.
- History of Programming Language Statements — history and comparison of programming Languages.
- Rosetta Code — a programming Language comparison wiki