Poređenje programskih jezika prema performansama

Programske jezike programeri koriste za pisanje određenih skupova uputstava mikroprocesorima koji obavljaju određene zadatke. Postoji mnogo vrsta jezika. Motor, kreiran od strane pionira kompjuterizacije Charlesa Babbagea, postao je preteča modernog personalni računari računari ili tačnije po PC logici. Da bi programer ispravno odabrao upute za pisanje programa, morat ćete izvršiti kompetentno Poređenje programskih jezika. O tome govori ovaj članak!

Porijeklo programskih jezika

Porijeklo programskih jezika

Godine 1942. rođen je ENIAC jezik kada je kompjuterska ideja zahvatila naučni svijet. Bilo je to čudovište od 30 tona koje je sadržavalo više od 20.000 vakuumskih cijevi i zauzimalo 167 kvadratnih metara površine. Programiranje je bilo jednako glomazno. Nakon izvođenja proračuna, trebale su sedmice za dešifriranje ENIAC-a, uopće nije bilo procesa oporavka podataka s tvrdog diska. "" Postojala je samo jedna šifra, tako da nije bilo potrebe za upoređivanjem programskih jezika.

Godine 1945., Dr. John von Neumann, radeći na njegovom poboljšanju, otkrio je da dodavanje i spremanje koda pretvarača u programiranju značajno smanjuje vrijeme procesa, pa se pojavio novi smjer EDVAC-a, koji je skraćenica za elektronski diskretni varijabilni automatski računar. Za razliku od ENIAC-a, EDVAC je koristio binarni kod umjesto decimalnog-niz nula i jedinica na bušenim karticama koje se unose u mašinu. Decimalni kod je prva generacija, binarni je druga. Sada programeri imaju formalnu osnova za poređenje programskih jezika. Kao i izbor.

Ubrzo je razvijen Prvi osnovni programski jezik. Kratki kod uslovnog prenosa kontrole izmišljen je 1949. godine. Za razliku od mašinskog koda, kratki kod je koristio logičke operatore kao što su "IF", "then" za definiranje naredbi koje su bile slične logičkim iskazima matematike, na primjer, ako je crvena "THEN stop "ili" IF 0", zatim pomnožite sa dva.

"Kompajler" je rođen 1952. godine. FORTRAN je bio prvi od programskih jezika treće generacije, nastao 1957.godine, zatim LISP, Algol 1958. i COBOL 1959. godine. Programski jezici treće generacije koristili su stvarne engleske riječi ili sintaksu za prevodioce u binarni ili mašinski kod. Što je bilo prilično zgodno. Poređenje programskih jezika tokom ovog perioda izvršeno je u korist Algol-a ili COBOL-a, u zavisnosti od tehničkog kapaciteta mašine.

Algol ili "šifra" algoritmi su ustupili mjesto BNF Pascalu 1968. godine. Svaki proračun se može dogoditi samo sa određenim nizom koda ili funkcije. Naknadni jezici su poboljšali efikasnost programa za kodiranje koristeći Objektno orijentisano programiranje, kao i metode skriptiranja i sintaksa, stvaranje visoko strukturiranih jezika C++, Perl i Java Visual Basic widgeta. Sada je već bilo nekoliko "šifre". Tokom ovog perioda, programeri imaju mnogo kriterijuma za poređenje programskih jezika.

Vrste programa za kodiranje

Vrste programa za kodiranje

Postoje tri vrste jasno diferenciranih jezika: mašinski, jezici niskog i visokog nivoa.

Zadaci softverskog jezika:

  1. Mašinski jezik koji računar direktno razumije pomoću binarnog koda, tj. 0 i 1.
  2. Jezici niskog nivoa su mnogo lakši za upotrebu od mašinskih jezika, ali su uglavnom zasnovani na računarima na mašinskom jeziku.
  3. Programske jezike visokog nivoa je lakše naučiti jer koriste riječi ili naredbe prirodnog jezika, obično Engleskog, Na primjer, najpoznatijeg osnovnog jezika.

Vrste jezika visokog nivoa, ovisno o gledištu rada programa i filozofiji njihovog stvaranja, dijele se na:

  1. Imperativ, Cobol, Pascal, C i Ada.
  2. Deklarativno, Lisp i Prolog.
  3. Objektno orijentisan, Smalltalk i C ++.
  4. Orijentisan na Problem, specifičan Jezici za menadžment.
  5. Prirodni programski jezik, novi tipovi koji nastoje približiti dizajn i konstrukciju jeziku ljudi. Neka bude lakše.

Druga klasifikacija na visokom nivou uzima u obzir razvoj računara i koristi se kao kriterij za poređenje programskih jezika:

  1. Prva generacija — mašina i asembler.
  2. Druga generacija-prvi programski jezici visokog imperativnog nivoa FORTRAN, COBOL.
  3. Treća generacija su programski jezici visokog imperativnog nivoa, ali mnogo više korišćeni i relevantni u ovom trenutku: ALGOL 8, PL/i, PASCAL, MODULA.
  4. Četvrta generacija-u upravljanju bazama podataka aplikacije: prirodno, SQL.
  5. Peta generacija — za umjetna inteligencija i obrada prirodnog jezika: LISP, PROLOG.

Kriterijumi poređenja. Princip

Kriterijumi poređenja

Poređenje web programskih jezika nikada nije bilo jednostavan i objektivan zadatak. Obično se uzima u obzir deset kriterija evaluacije.

Lista kriterijuma:

  1. Ekspresivnost-jednostavnost jezika za izražavanje algoritama.
  2. Tačnost definicije-dosljednost i nedostatak dvosmislenosti.
  3. Tipovi podataka i strukture.
  4. Modularnost-sposobnost samostalnog razvoja komponenti.
  5. I / o alati-podrška za interakciju sa okruženje.
  6. Prenosivost.
  7. Efikasnost i performanse za poređenje performansi programskih jezika.
  8. Pedagogija-lakoća učenja i nastave.
  9. Općenitost — primjenjivost, upotreba.
  10. Standardizacija.

Ova lista se koristi za poređenje u veoma širokom rasponu od LISP-a do COBOL-a preko ALGOL-a i služi kao polazna tačka za dobijanje rezultata.

Visoka ekspresivnost

Visoka ekspresivnost

Jezik C je oduvek bio veoma izražajan i potencijalno veoma ekonomičan, s obzirom na mali broj ključnih reči i moć nekih operatera. Međutim, trenutno postoji potreba za podrškom složenijim strukturama, u kojoj implementacija u C postaje nesigurna.

Poređenje sintakse programskih jezika je od velike važnosti za programere. Na primjer, C++ pruža kvalitativni skok preko C pružajući nove korisne funkcije u drugačijem kontekstu. Na primjer, preopterećenje operatera daje jeziku izuzetnu izražajnost prilikom implementacije naučnih i matematičkih aplikacija, sintaksa klasa i objekata omogućava vam da praktično manipulišete različitim strukturama podataka i operacijama. Šabloni se mogu smatrati makroima predkompilera, ali sa mnogo više funkcija. Ali sve to nije izuzeto od grešaka uzrokovanih uglavnom održavanjem kompatibilnosti sa C u fazama veze i izvršenja.

Kao rezultat toga, C++ je izražajniji od C za srednje i velike aplikacije, što je i za očekivati, jer je dizajniran da pokrije više problema uz pomoć "više paradigmi". Poređenje programskih jezika C c Java Delphi.

Visoka ekspresivnost

Sa svoje strane, drugi koristi sintaksu vrlo sličnu jeziku C++, iako isključuje neke od njegovih tamnijih funkcija. Konkretno, uklanjanje pokazivača to nije učinilo izražajnijim, ali je mnogo sigurnije.

Aspekti za programere

Aspekti za programere

Jezik C dugo se smatrao dobrim primjerom dosljednog i nedvosmislenog jezika, posebno među savremenicima. Kreatori prepoznaju određene nedostatke u oznakama. Glavni problem leži u velikom broju aspekata koji se nude programeru, među kojima se ističu veličina i tipovi podataka. Na primjer, u kompajlerima računara iz 1980 - ih, niz tipova "int" bilo je između-32768 i 32767, što je bio jasan odraz 16-bitnih procesora. Trenutno je uobičajeno prihvatiti 32-bitne za cijele brojeve, tako da raspon često varira od -2147483648 do 2147483647. Očigledno, ovo stvara ozbiljne probleme sa prenosivošću jezika.

Nažalost, ove nedostatke u potpunosti nasljeđuje C++, a danas nemaju jasno rješenje. Java jezik je kreiran od samog početka kako bi se eliminisale nejasnoće i zavisnosti implementatora i njegovih pomoćnih klasa, stoga je trenutno najbolji od popularnih jezika.

Tipovi podataka i strukture

Jezik C pruža mehanizme koji se trenutno smatraju rudimentarnim za tipove strukturiranih podataka. Nizovi vam omogućavaju da odredite homogene zbirke fiksne dužine u vrijeme kompajliranja i imate vrlo blizak odnos prilikom manipulacije pokazivačima. Značajan nedostatak je nedostatak tipova podataka za predstavljanje nizova, koji su neobično podržani nizovima znakova.

Iako ovaj" minimalizam " doprinosi poboljšanim performansama izvršenja ili optimizaciji tokom kompilacije, u mnogim slučajevima je potrebna podrška za složenije tipove i srodne operacije, kao što su vektori, liste, redovi i drugi. U praksi postoji nekoliko biblioteka koje dopunjuju ove aspekte, na primjer, popularni Glib, ali njegovo programiranje je napornije jer nije ugrađeno u jezik. Sljedeći primjer ilustrira stvaranje dinamičkog vektora niza.

stvaranje dinamičkog vektora niza

Obično programer treba da izbegne ovu vrstu implementacije "od nule". Sljedeći primjer rješava isti problem koristeći Glib biblioteku.

Tipovi podataka i strukture

Sa svoje strane, C++ nudi alate koji vam omogućavaju da kreirate veoma moćne strukture podataka i koji su blisko integrisani u jezik. Takođe, programer može kreirati vlastite tipove sa različitim povezanim operacijama.

Modularnost i nivoi pakovanja

Modularnost i nivoi pakovanja

U početku se ovaj kriterijum odnosio na mogućnost razvoja nezavisnih komponenti koje bi na kraju mogle da interaguju. U tom smislu, jezici vam omogućavaju da razvijete funkcije, klase i pakete, svaki sa svojim konvencijama.

Što se tiče" nivoa pakovanja " komponenti, jezik C u praksi pruža samo dva nivoa: vidljive komponente u datoteci izvornog koda i globalno vidljive komponente, na primjer, funkcije i varijable. U C++, koncepti "klasa" i "imenski prostor" pružaju dva dodatna nivoa "pakovanja", dok u Javi ekvivalenti odgovaraju klasama i "paketima". Kriterij i / o alata određuje mogućnost sekvencijalnog, proizvoljnog i indeksiranog pristupa datotekama koje imaju. Takođe se upućuje na pristup sistemima baza podataka.

Pristup sistemima baza podataka

Pošto je " C " Bilo i ostalo jedan od najpopularnijih od jezika koji se koriste za razvoj srednjih i velikih sistema, svaka aplikacija koja pruža programski interfejs omogućava pristup preko C jezika. To je praktično opravdano za sve najpopularnije komercijalne i nekomercijalne baze podataka, s kojima C ima neograničen pristup, iako ne i najprikladniji.

Sa svoje strane, program napisan na C++ obično ima mogućnost korištenja API-ja jezika C. Mnogi sistemi baza podataka pružaju poboljšani objektno orijentisani interfejs dostupan na ovom jeziku.

Kreatori jave su, zahvaljujući prethodnom iskustvu, standardizovali objektno orijentisani interfejs za pristup bilo kojoj bazi podataka na prenosiv način. Ovaj API se zove Java Database Connectivity, a zbog velike popularnosti jave, skoro svi veliki proizvođači baza podataka su kreirali implementacije ovog interfejsa, što doprinosi prenosivosti u smislu pristupa njima, dok su nekompatibilnosti i SQL ekstenzije sačuvane.

U tom smislu, Java je uvela radikalan, iako predvidljiv pristup razvoju jezika bez praktično nikakvih funkcija koje zavise od izvođača. Postignuta prenosivost kvalitativno premašuje, šta je moguće get koristeći C / C++ jezik, i automatski izvršava svaki programer. Stoga, ako je potrebna maksimalna mobilnost po "niskoj cijeni", izbor ostaje za Javu.

Poređenje performansi programskih jezika

Poređenje performansi programskih jezika

Ovaj aspekt je oduvijek izazivao interesovanje programera i nastavlja biti predmet žestokih rasprava. Poznato je da gotovo svi računari pokreću programe kroz jednu ili više centralnih procesorskih jedinica (CPU-a), koje sadrže takozvani "mašinski jezik" ili "mašinski kod" koji se sastoji od niza relativno elementarnih ili vrlo "niskih" operacija. Kao što je pisanje bajtova u memoriju, dodavanje para brojeva, čitanje bajtova s vanjskog uređaja i drugi.

Kada govore o efikasnosti/performansama, uglavnom misle na Poređenje brzine programskih jezika sa kojima su programi sposobni da obavljaju različite zadatke. Takođe je potrebno uzeti u obzir sistemske resurse potrebne prilikom njegovog izvršavanja.

Svi jezici moraju biti "prevedeni" u nekom trenutku u" mašinski jezik " za pokretanje programa. Pojednostavljeno, ovaj proces se naziva "kompilacija", a i jezik C i jezik C++ slijede ovaj obrazac "kompilacije " u" mašinski jezik " procesora. Konkretno, jezik C ima vrlo jednostavne strukture podataka koje su direktan prijevod u"mašinski jezik". U mnogim slučajevima ova jednostavnost čini program produktivnim.

Zajedništvo i standardizacija

U praksi se C obično koristi za stvaranje osnovnih ili niskih komponenti, na primjer, jezgra mnogih operativni sistemi, , dok C++ i Java imaju mnogo širi spektar-komercijalne primjene svih vrsta. Java, uglavnom zbog predviđanja i publiciteta Sun-a i različitih provajdera "aplikacionih servera", sada se široko koristi u kontekstu web servera, servleta i JSP-a, često praćenih slojevitom arhitekturom.

C i C++ su dobri primjeri standardiziranih uspješnih jezika, , što doprinosi javni konkurs između implementacija, bez kompromisa prenosivost. Nažalost, za njih ne postoje formalni procesi certificiranja, a mnogi programeri jednostavno zanemaruju neke karakteristike, što stvara očigledne nedostatke za programere koji žele raditi "u skladu sa standardom".

Djelomično iz tog razloga, Sun je u početku isključio upotrebu sličnog mehanizma za standardizaciju jave (jezik i biblioteke), ali je onda popustio i slijedi ovo (Java Community Program.) Pored toga, Sun obezbeđuje zahtevne sertifikacione testove kako bi programeri mogli potvrditi i objaviti svoju posvećenost standardima.

Evolucija i obnova

C i njegova " C99 standardna biblioteka još uvijek čeka potpunu implementaciju ažuriranja. GNU GCC uključuje veliku većinu neophodnih funkcija i jedan je od najstabilnijih dostupnih jezika.

C++ nastavlja svoj put s novim ažuriranjem C++ 0x, fokusiranim na razvoj biblioteka, uključujući GUI API.Sa svoje strane, Java nastavlja ubrzanim tempom da dodaje i unapređuje glavne biblioteke, kao i osnovni jezik, sa ciljem stvaranja modernog i veoma funkcionalnog platforme za razne vrste aplikacija.

Podrška za biblioteku

S obzirom na dugoročnu postojanost aplikacije, i C i C++ imaju izuzetno širok spektar bibliotečkih opcija za različite namjene. Osim toga, velika većina novih sistema nudi biblioteke koje vam omogućavaju interakciju s programima napisanim na ovim jezicima.

Jedini upitni aspekt je da je vrlo malo njih standardizirano na isti način kao i jezik. Sa svoje strane, C++ ima opsežniju biblioteku, koja uključuje "standard C library", kao i poznatu biblioteku šablona "STL", koja implementira različite strukture podataka u opštem obliku i mnoge algoritme.

Java je od samog početka imala dobru politiku standardizacije mnogih biblioteka kroz klase i interfejse za veliki broj aspekata koji nikada nisu razmatrani u C ili C++, na primjer, kao što su GUI, pristup bazi podataka, web stranice. Ova okolnost uopšte ne isključuje upotrebu specijalizovanijih biblioteka trećih strana. Kontekst standardiziranih biblioteka oko jave toliko je širok da je "Java platforma" deklarirana kao skup tehnologija dizajniranih za različite vrste aplikacija.

Najbolji programski jezici 2018. Interaktivni

Najbolji programski jezici 2018

Poređenje performansi programskih jezika 2018 Može se dobiti na mreži na spektru.IEEE website. Ova aplikacija određuje trenutnu popularnost desetina postojećih. Možete ih filtrirati isključivanjem nepotrebnih sektora. Ocjene se kreiraju upoređivanjem i kombinovanjem 12 metrika iz 10 izvora. Ove godine će se koristiti jedan izvor manje, pošto je sajt Dice zatvorio API.

Uobičajeno poređenje

Podrazumevani set za poređenje daje trenutnu IEEE ocjenu spektra, ali postoje unaprijed postavljeni parametri za one koji su više zainteresirani da pokupe nešto posebno i kreiraju vlastitu ocjenu. Za usporedbu s podacima za prethodnu godinu kliknite "Dodaj usporedbu", a zatim "promijeni ocjenu", što će omogućiti usporedbu podataka za 2014-2017. Ova aplikacija je prvobitno razvijena u saradnji sa novinarom podataka IEEE Spectrum Nickom Diakopulusom.

Stack Overflow analiza upoređuje podatke IEEE spektra sa najrelevantnijim "šifre" dva tisucuighteen. Python zauzima počasno prvo mjesto u uporednoj tabeli programskih jezika. Proučavajući podatke najnovije ocjene, sasvim je očito da je ovo jedna od najsvestranijih koja postoji, može se koristiti u mnogim različitim područjima. Mnogi ga smatraju jezikom koji služi gotovo svakoj svrsi.