Primerjava programskih jezikov glede na hitrost

Programski jeziki, ki jih razvijalci uporabljajo za zapisovanje posebnih naborov ukazov za mikroprocesorje, ki opravljajo posebne naloge. Obstaja veliko vrst jezikov. Motor, ki ga je ustvaril računalniški pionir Charles Babbage, je postal Predhodnik sodobnih osebni računalniki ali natančneje Logika računalnika. Da bi razvijalec lahko izbral pravilna navodila za pisanje programa, bo treba opraviti ustrezno primerjavo programskih jezikov. O tem članku!

Izvor programskih jezikov

Začetki programskih jezikov

Leta 1942 se je rodil jezik ENIAC, ko je ideja o računalniku zajela znanstveni svet. To je bila 30-tonska pošast, ki je vsebovala več kot 20.000 vakuumskih cevi in je pokrivala 167 kvadratnih metrov površine. Programiranje je bilo prav tako okorno. Ko so bili izračuni končani, je dešifriranje ENIAC-a trajalo več tednov, postopek za obnovitev podatkov s trdega diska pa sploh ni obstajal. "Šifra" je bil en sam, zato ni bilo treba primerjati programskih jezikov.

Dr. John von Neumann je leta 1945 med delom na njegovem izpopolnjevanju odkril, da bi dodajanje in shranjevanje kode pretvornika pri programiranju znatno skrajšalo potreben čas, zato se je rodila nova smer EDVAC, kar pomeni Electronic Discrete Variable Automatic Computer (Elektronski diskretno spremenljivi avtomatski računalnik). Za razliko od ENIAC-a je EDVAC namesto decimalne kode uporabljal binarno kodo - niz ničel in enic na luknjanih karticah, ki so jih vnesli v stroj. Decimalna koda je bila prva generacija, binarna koda druga. Razvijalci so zdaj imeli uradno podlaga za Primerjava programskih jezikov. In tudi izbira.

Kmalu je bil razvit prvi osnovni programski jezik. Kratka koda s pogojnim kontrolnim prenosom je bila izumljena leta 1949. Za razliko od strojne kode je kratka koda uporabljala logične operatorje, kot sta "if" in "then", za opredelitev ukazov, ki so bili podobni logičnim stavkom v matematiki, na primer če je rdeča barva "THEN stop" ali "IF 0", potem pomnožite z dva.

"Compiler" se je rodil leta 1952. FORTRAN je bil prvi od tretje generacije programskih jezikov, ustvarjenih leta 1957, sledili so mu LISP, Algol leta 1958 in COBOL leta 1959. Tretja generacija programskih jezikov je uporabljala dejanske angleške besede ali sintakso, ki so jih prevajalniki prevedli v binarno ali strojno kodo. To je bilo zelo priročno. Primerjave programskih jezikov v tem obdobju so se izvajale v prid Algolu ali COBOL-u, odvisno od tehnične moči stroja.

Algol ali "šifra" algoritmi so leta 1968 prešli na BNF Pascal. Vsako računanje se lahko izvede le z določenim zaporedjem kode ali funkcije. Poznejši jeziki so izboljšali učinkovitost kodiranja programov z uporabo objektno usmerjeno programiranje, ter metode in sintakso skriptnega pisanja, ustvarjanje visoko strukturiranih jezikov C++, Perl in Java Visual Basic Widgets. Zdaj jih je bilo več "šifre". V tem obdobju so imeli razvijalci veliko meril za primerjavo programskih jezikov.

Vrste programov za kodiranje

Vrste programov za kodiranje

Obstajajo tri vrste jasno ločenih jezikov: strojni jeziki, jeziki nizke ravni in jeziki visoke ravni.

Jezikovne naloge programske opreme:

  1. strojni jezik, ki ga računalnik neposredno razume z binarno kodo, tj. 0 in 1.
  2. Jezike nizke ravni je veliko lažje uporabljati kot strojne jezike, vendar večinoma temeljijo na strojnih jezikih računalnikov.
  3. Programskih jezikov visoke ravni se je lažje naučiti, ker uporabljajo besede ali ukaze iz naravnega jezika, običajno angleščine, npr. najbolj znan jezik je BASIC.

Vrste jezikov visoke ravni se delijo glede na pogled na delovanje programov in filozofijo, ki stoji za njimi:

  1. Imperative, Cobol, Pascal, C in Ada.
  2. Deklarativni, Lisp in Prolog.
  3. Objektno usmerjeni, Smalltalk in C ++.
  4. Usmerjenost v probleme, specifičnost jeziki za upravljanje.
  5. Naravni programski jezik, novejše vrste, ki si prizadevajo približati načrtovanje in konstrukcijo človeškemu jeziku. Omogočanje lažjega.

Druga klasifikacija na visoki ravni upošteva razvoj računalnikov in se uporablja kot merilo za primerjavo programskih jezikov:

  1. Prva generacija - strojni jezik in Assembler.
  2. Druga generacija - prvi visoki imperativni programski jeziki FORTRAN, COBOL.
  3. tretja generacija so visoki imperativni programski jeziki, vendar veliko bolj uporabljeni in aktualni: ALGOL 8, PL/I, PASCAL, MODULA.
  4. Četrta generacija - v aplikacijah za upravljanje podatkovnih zbirk: NATURAL, SQL.
  5. Peta generacija - za Umetna inteligenca in obdelavo naravnih jezikov: LISP, PROLOG.

Merila za primerjavo. Načelo

Merila za primerjavo

Primerjava spletnih programskih jezikov nikoli ni bila preprosta in objektivna naloga. Običajno se upošteva deset ocenjevalnih meril.

Seznam meril:

  1. Izraznost - preprostost jezika za izražanje algoritmov.
  2. Natančnost opredelitve - doslednost in odsotnost dvoumnosti.
  3. Podatkovne vrste in strukture.
  4. Modularnost - možnost samostojnega razvoja komponent.
  5. I/O naprave - podpora za interakcijo z Okolje.
  6. Prenosljivost.
  7. Učinkovitost in zmogljivost za primerjavo zmogljivosti programskih jezikov.
  8. Pedagogika - enostavnost učenja in poučevanja.
  9. Podobnost - uporabnost, uporaba.
  10. Standardizacija.

Ta seznam se uporablja za primerjavo v zelo širokem spektru od LISP-a do COBOL-a in ALGOL-a in služi kot izhodišče za pridobivanje rezultatov.

Visoka izraznost

Visoka izraznost

Jezik C je že od nekdaj zelo izrazen in lahko zelo ekonomičen, saj ima majhno število ključnih besed in moč nekaterih operatorjev. Danes pa je treba podpirati bolj zapletene strukture, v katerem Izvajanje C postane nezanesljivo.

Primerjava sintakse programskih jezikov je za razvijalce zelo pomembna. Na primer, C ++ pomeni kakovostni preskok v primerjavi s C, saj zagotavlja nove in uporabne funkcije v različnih kontekstih. Na primer, zaradi preobremenitve operatorjev je jezik izjemno izrazit pri izvajanju znanstvenih in matematičnih aplikacij; sintaksa razredov in objektov omogoča priročno upravljanje različnih podatkovnih struktur in operacij. Predloge si lahko predstavljamo kot makroje predkompilatorja, vendar imajo veliko več funkcij. Vendar vse to ni izvzeto iz napak, ki jih povzroča predvsem ohranjanje združljivosti z jezikom C v fazah povezovanja in izvajanja.

Na koncu je program C++ za srednje velike in velike aplikacije bolj izrazit kot program C, kar je pričakovano, saj je bil zasnovan za reševanje več problemov z "več paradigmami". Primerjava programskih jezikov C in Java Delphi.

Zelo ekspresivno

C uporablja sintakso, ki je zelo podobna sintaksi C ++, čeprav izključuje nekatere njegove temnejše značilnosti. Zlasti zaradi odstranitve smerokazov ni postala bolj izrazita, je pa veliko bolj varna.

Vidiki za razvijalce

Vidiki za razvijalce

Jezik C je dolgo veljal za dober primer doslednega in nedvoumnega jezika, zlasti pri njegovih sodobnikih. Ustvarjalci priznavajo nekatere pomanjkljivosti v zapisu. Glavna težava je veliko število vidikov, ki so na voljo razvijalcu, med katerimi izstopajo velikost in vrste podatkov. Na primer, v prevajalnikih za osebne računalnike v osemdesetih letih prejšnjega stoletja je bil obseg tipov "int" med 32768 in 32767, kar je bil jasen odraz 16-bitnih procesorjev. Za cela števila se zdaj običajno uporablja 32 bitov, zato se območje pogosto giblje od -2147483648 do 2147483647. To seveda povzroča resne težave s prenosljivostjo jezika.

Te pomanjkljivosti je žal v celoti podedoval program C ++ in trenutno zanje ni jasne rešitve. Jezik Java je bil že od začetka zasnovan tako, da je odpravil dvoumnosti in odvisnosti izvajalca in njegovih pomožnih razredov, zato je trenutno najboljši med priljubljenimi jeziki.

Podatkovne vrste in strukture

C ponuja mehanizme, ki trenutno veljajo za osnovne za strukturirane podatkovne vrste. Z nizi lahko v času sestavljanja določite enotne zbirke s fiksno dolžino in so zelo tesno povezani z ravnanjem s kazalci. Pomembna pomanjkljivost je pomanjkanje podatkovnih tipov za predstavitev nizov, ki jih nenavadno podpirajo znakovna polja.

Čeprav ta "minimalizem" izboljša zmogljivost med izvajanjem ali optimizacijo v času sestavljanja, je v številnih primerih potrebna podpora za kompleksnejše tipe in povezane operacije, kot so vektorji, seznami, čakalne vrste in druge. V praksi obstaja več knjižnic, ki dopolnjujejo te vidike, na primer priljubljena knjižnica Glib, vendar je njeno programiranje bolj zamudno, ker ni vgrajena v jezik. Naslednji primer prikazuje ustvarjanje vektorja dinamičnega polja.

Ustvarjanje vektorja za dinamično polje

Običajno se mora programer izogibati takšnim izvedbam "iz nič". Naslednji primer rešuje isti problem z uporabo knjižnice Glib.

Podatkovne vrste in strukture

Jezik C++ zagotavlja sredstva za ustvarjanje zelo zmogljivih podatkovnih struktur, ki so tesno vključene v jezik. Razvijalec lahko ustvari tudi svoje vrste z različnimi povezanimi operacijami.

Modularnost in stopnje pakiranja

Modularnost in stopnje pakiranja

Prvotno se je to merilo nanašalo na zmožnost razvoja neodvisnih komponent, ki lahko sčasoma komunicirajo. V tem smislu jeziki omogočajo razvoj funkcij, razredov in paketov, od katerih ima vsak svoje konvencije.

Kar zadeva "ravni pakiranja" komponent, program C v praksi zagotavlja le dve ravni: vidne komponente v datoteki izvorne kode in globalno vidne komponente, kot so funkcije in spremenljivke. V jeziku C+ pojma "razred" in "imenski prostor" zagotavljata dve dodatni ravni "pakiranja", medtem ko v Javi ustrezata razredom in "paketom". Merilo vhodno-izhodnih sredstev opredeljuje možnost zaporednega, poljubnega in indeksiranega dostopa do datotek, ki jih imajo. Omenjen je tudi dostop do sistemov podatkovnih zbirk.

Dostop do sistemov podatkovnih zbirk

Ker C je in ostaja eden najbolj priljubljenih jezikov, ki se uporabljajo za razvoj srednje velikih in velikih sistemov, vsaka aplikacija, ki zagotavlja programski vmesnik, omogoča dostop prek vmesnika C. To praktično velja za vse najbolj priljubljene komercialne in nekomercialne zbirke podatkov, do katerih ima C neomejen dostop, čeprav niso najbolj priročne.

Program, napisan v jeziku C ++, lahko običajno uporablja API-je sistema C. številni sistemi podatkovnih zbirk zagotavljajo izboljšan objektno usmerjen vmesnik, ki je na voljo v tem jeziku.

Ustvarjalci Jave so zaradi predhodnih izkušenj standardizirali objektno usmerjen vmesnik za prenosljiv dostop do katere koli zbirke podatkov. Ta vmesnik API se imenuje Java Database Connectivity in zaradi priljubljenosti Jave so praktično vsi glavni ponudniki podatkovnih zbirk ustvarili izvedbe tega vmesnika, kar spodbuja prenosljivost v smislu dostopnosti, hkrati pa ohranja nezdružljivosti in razširitve SQL.

V tem smislu je Java uvedla radikalen, čeprav predvidljiv pristop k razvoju jezika, ki skoraj nima funkcij, odvisnih od izvajalca. Dosežena prenosljivost je kakovostno boljša od tiste, ki jo, kaj je mogoče je mogoče pridobiti z uporabo jezika C/C ++ in ga vsak razvijalec samodejno izvede. Če je potrebna največja mobilnost pri nizkih stroških, je Java prava izbira.

Primerjava zmogljivosti programskih jezikov

Primerjava zmogljivosti programskih jezikov

Ta vidik je vedno zanimal razvijalce in je še vedno predmet burnih razprav. Znano je, da skoraj vsi računalniki izvajajo programe prek ene ali več centralnih procesnih enot (CPU), ki vsebujejo tako imenovani "strojni jezik" ali "strojno kodo", sestavljeno iz niza relativno osnovnih ali zelo "nizkih" operacij. Na primer pisanje bajtov v pomnilnik, dodajanje para številk, branje bajtov iz zunanje naprave in drugo.

Ko govorimo o učinkovitosti/učinkovitosti, imamo običajno v mislih primerjavo hitrosti, s katero so programski jeziki sposobni opravljati različna opravila. Upoštevati je treba tudi sistemske vire, ki so potrebni za njegovo izvajanje.

Vsi jeziki morajo biti na neki točki "prevedeni" v strojni jezik, da se programi lahko izvajajo. Preprosto povedano, ta postopek se imenuje "kompilacija", tako C kot C+ pa sledita temu vzorcu "kompilacije" v "strojni jezik" na procesorju. C ima zelo preproste podatkovne strukture, ki jih je mogoče neposredno prenesti v strojni jezik. V mnogih primerih je zaradi te preprostosti program produktiven.

Enotnost in standardizacija

V praksi se jezik C običajno uporablja za ustvarjanje osnovnih ali nizkonivojskih komponent, kot je jedro številnih operacijskih sistemov, medtem ko imata C++ in Java veliko širši spekter - komercialne aplikacije vseh vrst. Java se zdaj, predvsem po zaslugi predvidevanja in oglaševanja družbe Sun in različnih ponudnikov aplikacijskih strežnikov, pogosto uporablja v okviru spletnih strežnikov, servletov in JSP, ki jih pogosto spremlja večstopenjska arhitektura.

C in C++ sta dobra primera uspešnih standardiziranih jezikov, ki prispeva k odprta konkurenca med izvedbami, brez ogrožanja za prenosljivost. Na žalost zanje ni uradnih postopkov certificiranja in mnogi razvijalci preprosto ignorirajo določene funkcije, kar je očitno neugodno za programerje, ki želijo delati "po standardu".

Deloma zaradi tega je Sun sprva izključil uporabo podobnega mehanizma standardizacije za Javo (jezik in knjižnice), vendar je nato popustil in temu sledi (Java Community Program.) Poleg tega Sun zagotavlja zahtevne certifikacijske teste, s katerimi lahko razvijalci potrdijo in objavijo svojo zavezanost standardom.

Razvoj in prenova

C in njegova standardna knjižnica C99 še vedno čakata na popolno posodobitev izvajanja. GNU GCC vključuje veliko večino zahtevanih funkcij in je eden najbolj stabilnih jezikov, ki so na voljo.

C ++ nadaljuje svojo pot z novo posodobitvijo C ++ 0x, ki se osredotoča na razvoj knjižnic, vključno z grafičnim vmesnikom API.Java še naprej pospešeno dopolnjuje in izboljšuje svoje temeljne knjižnice ter osnovni jezik, da bi ustvarila sodoben in zelo funkcionalen platforma za različne vrste aplikacij.

Podpora knjižnice

Zaradi dolge zgodovine uporabe imata tako C kot C+ izjemno širok nabor knjižničnih možnosti za različne namene. Poleg tega velika večina novih sistemov zagotavlja knjižnice, ki omogočajo interakcijo s programi, napisanimi v teh jezikih.

Edini vprašljiv vidik je, da jih je zelo malo standardiziranih na enak način kot jezik. Program C+ ima obsežnejšo knjižnico, ki vključuje "standardno knjižnico C" in tudi znano knjižnico predlog "STL", ki na skupen način implementira različne podatkovne strukture in številne algoritme.

Java je že od samega začetka vodila dobro politiko standardizacije številnih knjižnic z razredi in vmesniki za številne vidike, ki v C ali C+ niso bili nikoli upoštevani, npr. grafični uporabniški vmesnik, dostop do podatkovne baze, spletne strani. To dejstvo nikakor ne izključuje uporabe bolj specializiranih knjižnic tretjih oseb. Kontekst standardiziranih knjižnic v zvezi z Javo je tako širok, da je bila "platforma Java" razglašena za zbirko tehnologij za različne vrste aplikacij.

Najboljši programski jeziki 2018. Interaktivni

Najboljši programski jeziki 2018

Primerjava učinkovitosti programskih jezikov iz leta 2018 je na voljo na spletnem naslovu Spectrum.ieee. Ta aplikacija opredeljuje trenutno priljubljenost več deset obstoječih. Filtrirate jih lahko tako, da izključite sektorje, ki jih ne želite. Ocene se oblikujejo s primerjavo in združevanjem 12 kazalnikov iz 10 virov. Letos bo uporabljen en vir manj, saj je spletna stran Dice zaprla vmesnik API.

Privzeta primerjava

Privzeta primerjava vsebuje trenutno lestvico IEEE Spectrum, vendar so na voljo tudi prednastavljene možnosti za tiste, ki želijo izbrati nekaj posebnega in ustvariti lastno lestvico. Za primerjavo s podatki iz prejšnjega leta kliknite "Dodaj primerjavo" in nato "Spremeni razvrstitev", kar bo omogočilo primerjavo podatkov iz obdobja 2014-2017. Ta aplikacija je bila prvotno razvita v sodelovanju z novinarjem podatkovnega programa IEEE Spectrum Nickom Diakopoulosom.

Analiza Stack overflow primerja podatke spektra IEEE o najpomembnejših "šifre" 2018. V primerjalni tabeli programskih jezikov je Python na prvem mestu. Ob pregledu najnovejših razvrstitev je jasno, da gre za enega najbolj vsestranskih modelov, ki se lahko uporablja na različnih področjih. Mnogi menijo, da je to jezik, ki je primeren za skoraj vse namene.

Članki na tem področju