Razvrščanje programskih jezikov po ravneh
Programski jeziki so sistemi simbolov in pravila njihove kombinacije, namenjeni interakciji osebe s kompleksnimi stroji. Obstaja na stotine takih organiziranih sistemov, ki opravljajo različne funkcije. Za navigacijo v tej raznolikosti strokovnjaki ustvarjajo splošne klasifikacije programskih jezikov, ki temeljijo na eni ali drugi značilnostni funkciji.
Vsebina
Interakcija človeka in stroja
Pomembno je razumeti, kako ljudje komunicirajo z inteligentnimi mehanizmi, preden nadaljujejo s klasifikacijo programskih jezikov.
Nekega dne je človek mislil, da lahko stroj dela zanj. Tako se je pojavil parni stroj. Potem se je podjetna oseba odločila za prehod na avto tudi duševno delo. Torej je bil računalnik.
Če želite doseči nekaj rezultatov, morate razumeti, kako to storiti. Pri programiranju lahko ločite več stopenj reševanja morebitnih težav:
- Formalni logični opis naloge sama.
- Izgradnja algoritma, ki opisuje vse korake za dosego cilja, začenši z obdelavo vhodnih podatkov in konča s pridobivanjem rezultata.
- Kodiranje - sestavljanje programa v katerem koli programskem jeziku, ki se nato lahko prevede v računalniško prijazen jezik.
- Prevod je neposreden prevod.
- Sestavljanje tekočega programa (izvedljiv modul) iz vseh komponent.
Gre za hierarhično strukturo, v kateri višje ravni temeljijo na spodnjih. Brez jasne naloge in kompetentnega algoritma ni mogoče ustvariti kakovostnega programa.
Struktura programskih jezikov
Razporeditev vseh sistemov interakcije je podobna in v več pogledih določa klasifikacijo programskih jezikov.
Glavni predmeti programskega jezika so konstantni in podobni komponentam človeških jezikovnih sistemov:
- Sintaksa, ki določa formalna pravila za pisanje programa, veljavne vrste in primer znakov;
- leksikon, ki vključuje celoten besednjak jezika: imena spremenljivk in funkcij, konstante, strune, operatorje;
- slovnica, ki kaže, kako pravilno združiti enote jezika za oblikovanje besednih kombinacij in stavkov.
Besednjak in slovnica skupaj definirajo semantiko jezika. Na tej ravni posebne sekvence znakov pridobijo poseben pomen, razumljiv človeku in računalniku. Na primer, beseda v mnogih programskih sistemih obravnava kot začetek ciklične operacije.
Seveda računalniki ne razumejo običajnih besed, samo po sebi kombinacija latinskih črk za njih ne pomeni ničesar. Stroji se ukvarjajo strojna koda - ničle in tiste, ki opisujejo primitivno stanje prisotnosti ali odsotnosti signala. Zato programski jeziki vzpostavljajo jasno korespondenco določenih besed in zaporedij domačih navodil za stroj.
Prvi primitivni sistemi za nadzor strojne opreme - pikčaste kartice - so bili uporabljeni za statve Jacquarda, ki so prenesli na svilo vzorec katere koli zapletenosti. Samopostrežni klavir je bil programiran na enak način.
Obstaja na stotine programskih sistemov in vsako leto so nove. Nekateri med njimi so bistveno drugačni, drugi so zelo podobni in imajo le majhne značilnosti. Vsak je namenjen reševanju svoje naloge, širokega ali visoko specializiranega.
Pregled klasifikacij
Programski jeziki so lahko združeni z več desetimi različnimi znaki. So bistveno ali praktično pomembni.
Obstaja močna odvisnost razvrstitve programskih jezikov na zgodovino razvoja. V preteklih letih so tehnologije postale bolj zapletene in dramatično spremenjene, programatorjevo udobje je prišlo v ospredje, pojavili so se učinkoviti algoritmi, kompleksne ekipe in nove stopnje abstrakcije.
Glavne razvrstitve programskih jezikov po vrstah in mehanizmu delovanja temeljijo na naslednjih parametrih:
- Značilnosti besedišča in slovnice v povezavi s stopnjo abstrakcije in stopnje udobnosti za človeka.
- Osnovni koncept in metodologija zbiranja algoritmov.
- Metoda predstavitve podatkov.
- Organizacija procesa interakcije s strojem, mehanizem izvajanja programa.
- Področje življenja, v katerem se uporablja jezik.
- Zgodovinska epoha, v kateri je nastal jezikovni sistem.
Nemogoče je jasno razvrstiti jezike in programske sisteme, vendar jih je mogoče razdeliti in sistematizirati glede na bistveno pomembne značilnosti.
Priročnost za človeka
Navodila, napisana v strojnem jeziku, so razumljiva za računalnik, vendar so zelo neprimerna za osebo. Težko jih je razumeti, skoraj ni mogoče hitro spremeniti ali sestaviti z njimi zapletenega algoritma. Za povečanje učinkovitosti so se programerji dvignili na nove stopnje abstrakcije in so učili stroj, da bi sprejemal čim bolj razumljiva navodila in jih samostojno prevedel v strojno kodo. Razmislite o razvrstitvi in značilnostih programskih jezikov na različnih ravneh:
- Koda naprave. To je tudi programski jezik, na katerega lahko z ustrezno pripravo napišete navodila.
- Nizka raven. Res je nizka raven zbirni jeziki, ki uporabljajo navadne strojne napotke, kodirane z mnemonskimi kodami.
- Srednji nivo. Sisteme programiranja te skupine se lahko štejejo za nizko in visoko raven, odvisno od specifičnih idej o stopnji abstrakcije. To vključuje C in C + +.
- Visoka raven. Ti jeziki vam omogočajo ustvarjanje kompleksnih algoritmov, vendar zahtevajo dodatno obdelavo pred izvedbo, zato je generirana koda manj učinkovita in počasnejša.
- Zelo visok nivo. Za to majhno skupino je značilen izraz super-močnih ekip in operaterjev. Tukaj je mogoče nositi Algol-68.
Značilnost jezikov na nižji ravni je njihova računalniška odvisnost. So tesno povezani s posebnostmi organizacije določenega tipa računalnika, vendar so v celoti podobni drug drugemu. Zagotavljajo:
- visoka hitrost izvedbe in največja kompaktnost ustvarjenih programov;
- neposredna interakcija z viri strojne opreme;
- popoln nadzor nad pomnilnikom.
Glavne slabosti jezikov na nižji ravni:
- za vsak tip računalnika je potrebno uporabiti določen ukazni sistem, odvisno od značilnosti naprave;
- kompleksnost in nizka hitrost programskega procesa;
- velika verjetnost napak, ki jih je težko slediti;
- pomanjkanje mobilnosti programov, nezmožnost, da jih vodijo na drugem računalniku.
Programski sistemi na visoki ravni niso vezani na določen strojni sistem ukazov in se lahko izvajajo na katerem koli računalniku. Zaradi visoke stopnje abstrakcije si pri pripravi navodil lahko privoščijo uporabo različnih konceptov in metodologij. Zato je razvrstitev programskih jezikov na visoki ravni zelo obsežna in zapletena.
Obdelava programa z računalnikom
Za izvedbo zahtevnega pouka mora računalnik najprej zmanjšati abstraktnost in ga prevedeti v jezik, ki je razumljiv samemu sebi. Način, kako se to naredi, se imenuje model uspešnosti. Obstajata dva glavna modela in en hibrid:
- Kompilacija - enkratni prevod celotnega programa v strojno kodo.
- Tolmačenje - zaporedna izvedba vsakega izraza.
- Transcopation - prevajanje v jezik nižjega nivoja, na primer C ali asembler, in njena naknadna kompilacija.
Če želite prevajati, potrebujete poseben program prevajalnika ali tolmača, brez katerega ne morete delati z jezikom.
Prevajalec dela z vsako vrstico programa ločeno, analizira in takoj izvrši. Njena prisotnost je potrebna od začetka do konca programa.
Glavne pomanjkljivosti modela tolmačenja so:
- stalna ugotovitev prevajalca v računalnem pomnilniku;
- ponavljajoča se obdelava ponavljajočih se ukazov.
Kljub temu so razloženi jeziki zelo primerni za ciklični razvoj in odpravljanje napak, saj vam omogočajo, da hitro spremenite program.
Kompilator deluje le enkrat in takoj pretvori vsa navodila v računalniško prijazno kodo strojne kode ali vmesno kodo bajtov in nato zapusti računalniški pomnilnik. Tu je izvedba ločena od postopka prevajanja, kar je bolj učinkovit model.
Glavne slabosti kompilacijskega modela so:
- velika težava.
Preden prevedemo program v strojno razumljiv jezik, prevajalec večkrat prehaja skozi začetno navodilo, ga analizira in preizkuša.
Ni jasnih razmejitev sistemov, saj se lahko tradicionalno razlagajo jeziki in obratno.
Razvrščanje programskih jezikov na visoki ravni po modelu izvedbe:
- Interpretirani - Python, Haskell, PHP, jаvascript.
- Sestavljeno neposredno v strojno kodo: C, C + +, Fortran, ASM.
- Sestavljeno v bytecode: Python, Java.
- Transkompilirano: Haskell, Fortran, C, C + +.
Obdelava podatkov
Vsak programski jezik deluje z informacijami, ki jih je treba na nek način manipulirati, preveriti pravilnost in spremeniti. Podatki so lahko zelo raznoliki - številke, linije ali zapletene strukture. Seveda mora vsaka vrsta delovati drugače, vendar je treba natančno določiti, kako je najprej treba razumeti, s kakšnimi podatki se ukvarja računalnik.
Na podlagi metode za določanje raznolikih podatkov je izdelana klasifikacija programskih jezikov s tipskim sistemom.
- Nedotaknjeni jeziki.
- Izpisani jeziki različnih stopenj resnosti.
Neodpisani so zbirni jeziki, ki lahko obdelujejo neposredno binarne podatke. Vrsta podatkov sploh ni pomembna.
Za tipizirane jezike je pomembno, s kakšnimi podatki se ukvarjajo. Nekatere operacije so opredeljene samo za številke, na primer delitev, druge pa so samo za nizov. Vendar pa nekateri sistemi omogočajo programeru določene svoboščine. Na primer, lahko samostojno definirajo in "implicitno" pretvarjajo eno vrsto podatkov v drugo, na podlagi semantike ukaza. To je zelo priročno, vendar otežuje razhroščevanje, saj lahko povzroči neopazno napako. Živahen primer neprekinjenega vnašanja je jаvascript.
Strogo tipizirani jeziki, na primer Java, ne dovoljujejo take svobode in po potrebi zahtevajo navedbo vrst in njihovo izrecno konverzijo.
Ob preverjanju vrste podatkov je tudi razvrstitev visokokakovostnih programskih jezikov:
- statični jeziki so običajno kompilibilni. Preverjanje tipa se pojavi, ko je program analiziran, preden se prevede v strojni jezik.
- Dinamični jeziki preverjajo vrste podatkov med izvajanjem.
Glavni način interakcije
Visoko abstraktne jezike je mogoče razdeliti glede na osnovno programsko paradigmo. Obstaja več deset metodologij za programiranje, med katerimi so nekatere zelo podobne, zato ni mogoče ustvariti jasnega sistema razlik. Kratka razvrstitev programskih jezikov je taka:
- algoritemski, nujni, postopkovni. Zahtevati izrecen zaporedni opis algoritma za reševanje problema. Operaterji so hkrati združeni v postopkovne skupine, ločeni od samih podatkov. Primeri proceduralnih jezikov so Pascal, Basic;
- logično, deklarativno. Največji formalizirani opisujejo nalogo in zahtevani rezultat. Rešitev mora logično slediti temu opisu;
- objektno usmerjen, strukturiran. Temelji na konceptu predmeta, ki združuje podatke in metode obdelave.
Predmeti v programiranju
Jeziki zadnje skupine opisujejo vse entitete v obliki neodvisnih predmetov, ki skrivajo kompleksno mehaniko. Temeljni koncepti OOP (objektno orientiranega programiranja) so:
- inkapsulacija - skriva funkcijo znotraj objekta;
- dedovanje nekaterih predmetov metod drugih;
- polimorfizem - sprememba bistva z ohranjanjem zunanjega vmesnika.
Jezikov objektno orientiranega programiranja lahko razvrstite tudi z izvajanjem osnovnih pojmov tega pristopa - dedovanja, inkapsulacije in polimorfizma. Poleg klasičnih mehanizmov obstajajo tudi drugi, kot je prototip, ki se uporablja v jаvascriptu.
Metodologija OOP velja za najbolj progresivna, učinkovita in na nek način modna. Vendar pa so v nekaterih primerih lahko drugi pristopi, na primer funkcionalni, bolj učinkoviti pri reševanju določenega problema.
Generacije programskih jezikov
Klasifikacija programskih jezikov iz zgodovine njihovega videza je pogojna, saj ne upošteva posebnih značilnosti določenih sistemov. Vendar pa vam omogoča, da ugotovite, kako so se koncepti s časom spremenili in da so naloge, s katerimi se srečujejo programerji, postali bolj zapleteni.
Pri poskusih povezovanja razvrščanja in razvoja programskih jezikov je bilo razločenih več velikih skupin, imenovanih generacij:
- Prva generacija - nizek nivo strojnih jezikov, vezanih na izvedbo določenega računalnika. »Programi« v teh jezikih so izgledali kot vrstice stikal, nameščenih v želenem položaju, ali punch kartice (luknjani trakovi). Tako so bili vsi ukazi zaporedje ničelnih in tisti - binarna koda. Primer: jezik procesorja ARM.
- V drugi generaciji so jeziki postali malo bolj razumljivi za osebo, vendar jih niso mogli ločiti od določenega aparata. To je čas sestavljenega jezika z mnemonskimi kodami in nedvoumno sestavljanje v strojno berljivi obliki. Primer: Macroassembler.
- Jeziki tretje generacije so od programerja odstranili skrb za nepristranske podrobnosti priprave navodil, kot je prevajanje programa v strojno kodo. Zdaj se je računalnik naučil storiti sam. Sintaksa in besednjak približal človeka, postal je jasnejši. V tej generaciji so se rodili skoraj vsi sodobni visoki jezikovni jeziki s širokim področjem uporabe, ne glede na njihovo paradigmo: PHP, Fortran.
- V četrti generaciji se je stopnja abstrakcije še povečala, kar je močno zmanjšalo obseg uporabe. V to skupino spadajo taki specifični jeziki kot FoxPro, Simulink, SQL. Pojavi se vizualni programski jeziki: CAD paketi, sistemi RAD.
- Nazadnje, jeziki pete generacije so morali sami pisati programe, pri čemer so dobili samo opis programerja. Ta ideja ni bila v celoti izvedena, saj za pripravo učinkovitega algoritma včasih ni dovolj neposredne računalniške logike, človeška intuicija in zdrava pamet pa sta še vedno potrebna. Primeri jezikov pete generacije so MathCAD, Prolog in Mercury.
Pravzaprav generacije jezikov natančno ustrezajo programskim fazam, ki so opisane na začetku članka, ki so navedene v obratnem vrstnem redu. Na začetku je programer prevzel vse operacije, stroj pa je izvedel samo določeno zaporedje akcij. Zdaj lahko računalnik proizvede rezultat v skladu z formaliziranim opisom problema.
Enostavnost programskega dela spremlja povečanje obremenitve na stroju, program je počasnejši in zahteva več virov.
Kljub dejstvu, da se tehnološki napredek premika s skokom in mejami, jeziki prvih generacij sploh niso izginili. Uporabljajo se na območjih, ki zahtevajo največjo enostavnost in učinkovitost.
Področje uporabe
Vsak programski jezik je dober na svojem področju, za katerega je bil ustvarjen. Torej, za programiranje mikrokontrolerjev sestavljajo se uporabljajo, in z Java ni nič storiti. Programiranje gonilnikov na nizki ravni je učinkovito pri C, kar vam omogoča strogo upravljanje pomnilniških virov. Za spletno programiranje je vredno izbrati skriptni jeziki PHP in jаvascript, katerega tolmač je vgrajen v vsak sodoben brskalnik. Pomembni bančni programi so napisani v Java, ki zagotavljajo nadzor nad napakami. Aerospace - tudi v Java ali Pascal, ki celo program za zbiranje smeti daje programeru nadzor.
Vsi jeziki so dobri, samo izberite ustrezno nalogo.
Pomen klasifikacije
Težko je razdeliti na stotine obstoječih sistemov človeško-računalniške interakcije v več različnih skupin. In vendar, pregled klasifikacij programskih jezikov na kratko sledi zgodovini njihovega razvoja in globlje razkrije ideje, ki so v njih vgrajene.
Vsak jezik se istočasno nanaša na več skupin, ki so navedene na seznamu - lahko je hkrati natipkano, prevedeno in objektno usmerjeno. Zato je nemogoče upoštevati raznolikost programskih sistemov skozi prizmo enotne razvrstitve.
- Kaj je to - prevajalnik ali Kako narediti računalnik razumeti, kaj želite od njega?
- Objektno programiranje
- Java programski jezik
- Osnovni programski jezik in njena zgodovina
- Seznam programskih jezikov. Programski jeziki na nizki in visoki ravni
- Spletni strežnik za testiranje spletnih mest in aplikacij
- Java nizi nizov. Razvrščanje matrike v Java. Dvodimenzionalna Java matrika
- Kaj je rekurzija? Rekurzija v programiranju (primeri)
- Računalniški programski jeziki: vrste, opis, uporaba in povratne informacije
- Kaj lahko pripišemo formalnim jezikom? Primeri uporabe
- Kaj je pogojna izjava?
- Kaj je PAK in za kaj je to?
- Jeziki Evrope: učenje v jezikovnem okolju
- Najbolj priljubljeni programski jeziki. Programski jeziki za začetnike
- Ocena programskih jezikov 2016
- Zgodovina razvoja programskih jezikov: na kratko o vsem
- Kaj je poizvedba SQL?
- Genealoška klasifikacija jezikov: osnovna načela in značilnosti
- Kaj je CPU?
- Najpreprostejši programski jezik za začetnike
- Kaj je programski sistem