Kratka zgodovina programskih jezikov. Programski jeziki: zakaj so se pojavili, vidni predstavniki, kako izbrati jezik

Opomba 1

Za delovanje prvih programov je bilo treba na sprednji plošči računalniške naprave nastaviti ključna stikala. Seveda je s to metodo mogoče napisati le majhne programe. Eden prvih poskusov ustvarjanja polnopravnega programskega jezika je naredil nemški znanstvenik Konrad Zuse, ki je v obdobju 1943-1945. razvil jezik plankalkul. Plankalkul je bil zelo obetaven jezik, ki je bil pravzaprav jezik na visoki ravni, vendar med vojno ni bil deležen ustrezne praktične implementacije in je bil njegov opis objavljen šele leta 1972.

strojna koda. montažer

Zgodovina programskih jezikov se začne z razvojem strojnega jezika: jezika logične ničle in ena. Pisanje v tem jeziku je bilo zelo težko in dolgočasno.

Da bi olajšali delo programerjev v poznih štiridesetih letih. se je razvil zbirni jezik. Namesto binarnih številk, ki so označevale kateri koli ukaz, so bile zapisane kratke besede ali okrajšave. Programerji menijo, da je zbirni jezik programski jezik nizke ravni, ker je blizu jezika najnižje ravni, strojnega jezika. Programi, napisani v zbirniku, so neposredno odvisni od značilnosti določenega procesorja, zato se imenuje strojno usmerjen jezik.

Pisanje programov v asembleru je precej težka naloga, potrebno pa je tudi poznavanje računalniških naprav. Kljub temu so programi v zbirnem jeziku najučinkovitejši in najučinkovitejši.

Algoritemski jeziki

Med razvojem programiranja se je pojavila potreba po razvoju novih, naprednejših programskih jezikov, ki bi bili podobni naravnim jezikom in bi omogočili nedelo neposredno s strojnimi navodili. Postali so znani kot jeziki visoke ravni. Jeziki visoke ravni so osredotočeni na opis algoritmov, zato jih imenujemo algoritemski jeziki. Prednost takšnih jezikov je večja vidljivost in neodvisnost od določenega računalnika.

Ker računalnik prepozna samo strojni jezik, mora program, napisan v algoritemskem jeziku, pred izvedbo prevesti v ta jezik poseben program, prevajalec. Prevajalec vsebuje vsa pravila algoritemskega jezika in načine pretvorbe njegovih različnih konstrukcij v strojni jezik. Obstajata dve vrsti oddajanja:

  • Prevajanje je način izvajanja programov, pri katerem se programska navodila izvajajo šele, ko je sestavljen prevod celotnega besedila programa.
  • Interpretacija je metoda izvajanja programov, pri kateri se navodila programa prevedejo in takoj izvedejo.

Opomba 2

Prednost programov, napisanih v algoritemskem jeziku, je poenostavitev dela s programom zaradi relativne preprostosti pisanja, enostavne berljivosti in možnosti njegovega popravka. Slabosti vključujejo: dodaten čas in pomnilnik za oddajanje.

Strukturirano programiranje

Leta 1954 se je začel razvoj prvega prevajalnika jezika na visoki ravni. Dve leti pozneje se je pojavil jezik Fortran (FORmula TRANslator - "prevajalec formul"). Jezik je vseboval funkcije, ki so močno poenostavile razvoj, vendar programiranje v Fortranu ni bila lahka naloga: če je bilo v kratkih programih zlahka razumljivo, potem ko je šlo za velike programe, je jezik postal neberljiv. Kljub temu je bil jezik precej uspešen in izdanih je bilo veliko različic.

Težave so bile rešene po razvoju strukturnih programskih jezikov: imajo možnost ustvarjanja programskih blokov, neodvisnih podprogramov, podporo za rekurzijo in lokalne spremenljivke ter odsotnost brezpogojnega operaterja skoka (GoTo). Tako so takšni jeziki začeli podpirati možnost razdelitve programa na njegove sestavne elemente.

V desetih letih je bilo ustvarjenih precej veliko novih jezikov:

  1. Algol (1958) je bil namenjen pisanju algoritmov, ki so sestavljeni iz ločenih blokov;
  2. Cobol (1959) je bil uporabljen za obdelavo množičnih podatkov v administraciji in poslovanju;
  3. Basic (1965) vam je omogočil pisanje preprostih programov, uporabljali so ga za poučevanje osnov programiranja.

Zelo malo ustvarjenih jezikov je bilo strukturiranih. Ustvarjeni so bili tudi specializirani jeziki: Lisp, Prolog, Forth itd. Posebej velja omeniti Pascal (1970), poimenovan po znanstveniku Blaiseu Pascalu, ki so ga uporabljali tako za učenje kot za reševanje problemov različne kompleksnosti. Pascal programi so enostavni za branje, kar vam omogoča hitro iskanje in popravljanje napak, in je bil dobro strukturiran. Vse našteto je privedlo do njegove široke uporabe, še danes pa se aktivno uporablja v izobraževalnih ustanovah.

Leta 1972 se je pojavil jezik C, ki je bil uspešen korak v programiranju. Jezik je združeval prednosti številnih jezikov in je imel veliko število različnih novosti. Široke možnosti, strukturiranost in relativna preprostost njegovega preučevanja so omogočile, da je jezik hitro postal prepoznaven in si pridobil mesto enega izmed glavnih jezikov.

Pojav strukturiranega programiranja je dal odlične rezultate, vendar je bilo še vedno težko pisati dolge in resne programe.

Objektno usmerjeno programiranje (OOP)

Od sedemdesetih let prejšnjega stoletja postavljeni so bili temelji objektno usmerjenega programiranja (OOP), ki je nastalo kot posledica razvoja proceduralnega programiranja, v katerem podatki in podprogrami za njihovo obdelavo niso bili formalno povezani.

OOP vključuje naslednje osnovne koncepte:

  • razred- model predmeta, ki še ne obstaja. Pravzaprav je to diagram predmeta, ki opisuje njegovo strukturo.
  • Predmet– primerek razreda, entiteta v naslovnem prostoru računalniškega sistema, ki se pojavi, ko je ustvarjen primerek razreda.
  • Abstrakcija- dodeliti objektu značilnosti, ki jasno določajo njegove meje, po katerih se razlikuje od vseh drugih objektov. Osnovna ideja je ločiti način uporabe sestavljenih podatkovnih objektov od podrobnosti njihove izvedbe kot enostavnejših objektov.
  • Enkapsulacija- združevanje lastnosti (podatkov) in metod (podprogramov) v razredu, da se skrijejo podatki objekta pred ostalim programom ter zagotovi celovitost in neodvisnost objekta (spreminjanje lastnosti objekta je možno le s posebnim razredne metode).
  • Dedovanje- jezikovni mehanizem, ki vam omogoča, da opišete nov razred na podlagi obstoječega razreda (ali razredov) z dodatkom novih lastnosti in metod.
  • Polimorfizem– lastnost sistema, da uporablja objekte z enakim vmesnikom, ne da bi pridobil informacije o njegovi vrsti in notranji strukturi.

Opomba 3

Leta 1967 se je pojavil jezik Simula - prvi programski jezik, v katerem so bila predlagana načela objektne orientacije. Podpiral je delo s predmeti, razredi, virtualnimi metodami itd., Vendar vse te lastnosti niso bile deležne vredne ocene sodobnikov. Vendar sta večino teh konceptov vključila Alan Kay in Dan Ingalls v jezik Smalltalk, ki je postal prvi razširjen objektno usmerjen programski jezik.

Trenutno je število uporabnih programskih jezikov, ki izvajajo objektno usmerjeno paradigmo, največje v primerjavi z drugimi paradigmami. Glavni jeziki, ki podpirajo koncept OOP, so: C++, C#, Object Pascal (Delphi), Java itd.

Razvoj interneta

Z razvojem tehnologije WWW (World Wide Web) je internet postal zelo priljubljen. Ustvarjenih je bilo veliko število pomožnih jezikov za zagotavljanje dostopa do interneta, oblikovanja spletne strani, dostopa do virov itd.

Perl, interpretirani jezik, postaja vse bolj razširjen in ga odlikujeta preprostost in enostavna prenosljivost na druge platforme. Zasnovan je za pisanje aplikacij in CGI skriptov različnih zahtevnosti. Tudi jezik Java se pogosto uporablja in igra pomembno vlogo pri razvoju in delovanju interneta.

V sedemdesetih letih prejšnjega stoletja Pojavil se je jezik SQL - strukturirani poizvedovalni jezik, ki je bil ustvarjen za dostop in delo z bazami podatkov.

Za pisanje kod za spletne strani je bil razvit hiperbesedilni označevalni jezik HTML, ki vsebuje ukaze za označevanje in okrasitev besedila in grafike. Da bi bila stran bolj privlačna in funkcionalna, uporabljamo:

  • Skripti JavaScript, ki se izvajajo v uporabnikovem spletnem brskalniku in se uporabljajo predvsem za izboljšanje videza in občutka spletnega mesta ter izvajanje manjših nalog.
  • PHP skripti, ki se izvajajo na strani strežnika in pošiljajo že obdelane informacije v uporabnikov brskalnik. Uporabljajo se za ustvarjanje dinamičnih strani HTML, knjig gostov, forumov in anket.
  • Skripti CGI, ki so napisani predvsem v Perlu, C/C++, se izvajajo na strani strežnika in so odvisni od specifičnih dejanj uporabnika. Uporabljajo se, tako kot skripti PHP, za ustvarjanje dinamičnih strani HTML, knjig gostov, forumov in anket.

V petdesetih letih dvajsetega stoletja se je s prihodom računalnikov na vakuumskih ceveh začel hiter razvoj programskih jezikov. Računalniki, ki so takrat stali bistveno več kot razvoj katerega koli programa, so zahtevali zelo učinkovito kodo. Takšna koda je bila ročno razvita v jeziku montažer. Sredi petdesetih let prejšnjega stoletja je bil pod vodstvom Johna Backusa za IBM razvit algoritemski programski jezik FORTRAN. Kljub temu, da je že obstajal jezikovni razvoj, ki je pretvoril aritmetične izraze v strojno kodo, je izhodišče postalo ustvarjanje jezika FORTRAN (FORmula TRANslator), ki omogoča pisanje algoritma za izračun z uporabo pogojnih operatorjev in vhodnih/izhodnih operaterjev. dobe algoritemskih programskih jezikov.

Na jezik FORTRAN obstajale so zahteve za ustvarjanje zelo učinkovite kode. Zato je bilo veliko jezikovnih konstrukcij prvotno razvitih ob upoštevanju arhitekture IBM 407. Uspeh razvoja tega jezika je privedel do dejstva, da so proizvajalci drugih računalniških sistemov začeli ustvarjati lastne različice prevajalcev. Z namenom morebitne takratne poenotenja jezika je jezik FORTRAN IV, razvit leta 1966, postal prvi standard, imenovan FORTRAN 66.

Kot alternativa jeziku FORTRAN, ki je bil prvotno osredotočen na arhitekturo IBM, je bil pod vodstvom Petra Naurja v poznih 50. letih razvit ALGOL (ALGOritmični jezik). Glavni cilj, ki so si ga prizadevali razvijalci tega jezika, je bila neodvisnost od specifične arhitekture računalniškega sistema. Poleg tega so ustvarjalci jezika ALGOL skušali razviti jezik, ki je primeren za opisovanje algoritmov in uporablja zapis, ki je blizu tistemu, ki je sprejet v matematiki.

Jezika FORTRAN in ALGOL sta bila prva programsko usmerjena jezika.

Jezik PL/I, katere prve različice so se pojavile v zgodnjih 60. letih prejšnjega stoletja, je bila prvotno osredotočena na IBM 360 in je razširila zmogljivosti jezika FORTRAN z nekaterimi značilnostmi jezika COBOL, razvitimi v istih letih. Kljub določeni priljubljenosti jezika PL / I med programerji, ki so delali na računalnikih IBM in strojih serije EC, je trenutno le teoretično zanimiv.

V poznih 60. letih je bil pod vodstvom Nayarda in Dahla razvit jezik Simula-67 z uporabo koncepta uporabniško definiranih tipov podatkov. Pravzaprav je to prvi jezik, ki uporablja koncept razredov.

Sredi sedemdesetih let je Wirth predlagal jezik Pascal ki se je takoj začela široko uporabljati. Hkrati so se na pobudo ameriškega ministrstva za obrambo začela dela na ustvarjanju jezika na visoki ravni, imenovanega Ada - v čast Adi Lovelace, programerki in hčerki Lorda Byrona. Ustvarjanje jezika se je začelo z opredelitvijo zahtev in razvojem specifikacij. Na projektu so delale štiri neodvisne skupine, ki pa so vse uporabile jezik Pascal kot osnovo. V zgodnjih osemdesetih letih je bil razvit prvi komercialni prevajalnik jezika. Ada.

Univerzalni programski jezik Z sta jo sredi 70-ih razvila Denis Ritchie in Ken Thompson. Ta jezik je postal priljubljen sistemski programski jezik in je bil nekoč uporabljen za pisanje jedra operacijskega sistema UNIX. Standard jezika C je začela razvijati delovna skupina Inštituta za standarde ANSI leta 1982. Mednarodni standard za jezik C je bil sprejet leta 1990. Jezik C je bil osnova za razvoj programskih jezikov C++ in Java.

Poleg algoritemskih jezikov so se vzporedno razvijali jeziki, namenjeni obdelavi poslovnih informacij, pa tudi jeziki umetne inteligence. Prvi je COBOL (Common Business Oriented Language), drugi pa jeziki COBOL. LISP(Obdelava seznama) in Prolog. Jezik LISP, razvit v 60. letih pod vodstvom J. McCarthyja, je bil prvi funkcionalni jezik za obdelavo seznamov, ki je našel široko uporabo v teoriji iger.

S prihodom osebnih računalnikov so jeziki postali sestavni del integriranih razvojnih okolij. Obstajajo jeziki, ki se uporabljajo v različnih pisarniških programih, kot je VBA (Visual Basic za aplikacije).

V 90. letih se s širjenjem interneta širi možnost porazdeljene obdelave podatkov, kar se odraža v razvoju programskih jezikov. Obstajajo jeziki, ki so osredotočeni na gradnjo strežniških aplikacij, kot npr Java, Perl in PHP, jeziki opisa dokumentov - HTML in XML. Tradicionalna programska jezika C++ in Pascal se prav tako spreminjata: programski jezik začenja pomeniti ne le funkcionalnost samega jezika, temveč tudi knjižnice razredov, ki jih zagotavlja programsko okolje. Poudarek je premaknjen s specifikacije samih programskih jezikov na standardizacijo mehanizmov za interakcijo porazdeljenih aplikacij. Pojavijo se nove tehnologije - COM in CORBA, ki določata interakcijo porazdeljenih objektov.

Računalniki še vedno slabo razumejo naravne jezike, ki se uporabljajo za komunikacijo med ljudmi, vsaj še niso se naučili razumeti.

Po drugi strani pa ljudje ne razumejo dobro strojnih jezikov. Zato so bili ustvarjeni programski jeziki, ki pokrivajo to luknjo v razumevanju, v modelu razmišljanja med človekom in računalnikom.

Programski jeziki so lahko:

  • preprosto,
  • kompleksno in
  • nerazumljivo (na primer grafično).

Zgodovina nastanka programskih jezikov

Zdaj je v uporabi nekaj sto programskih jezikov, veliko več takšnih jezikov pa ni več v uporabi. Sčasoma so bili razviti novi programski jeziki za nove naloge.

Ničelna generacija

  • (elektro),
  • programirani s strukturo lastne naprave
  • visoko specializirana
  • možnosti programiranja so omejene.

žakardno statje

Primer takšnih strojev je žakardna statva s programirano napravo. Leta 1804 ga je izdelal Francoz Joseph Marie Jaccard. Mimogrede, v njegovo čast je vzorčasta okrasna tkanina poimenovana žakard ali žakard.

S pomočjo stroja je bilo mogoče enostavno in množično izdelati vezenje na tkanini s pomočjo luknjanih kartic, prikazanih spodaj na sliki:

riž. 1. Luknjene karte za žakard statve

Na luknjanih karticah je bilo zaporedje dejanj programirano, da stroji reproducirajo kateri koli vzorec na tkanini.

Babbageov avto

Internet in splet

Pojavili so se specializirani jeziki:

  • JavaScript.

Številna spletna mesta so napisana s PHP in JavaScript.

Nekateri že obstoječi jeziki s prihodom interneta in spleta so našli nove niše in postali spletno usmerjeni:

  • rubin,
  • pynton,
  • Java.

Do leta 2000 stari programski jeziki postopoma "umirajo", pojavljajo se novi, vendar ni splošno sprejetega koncepta, kaj se s temi stvarmi dogaja.

Vsak programski jezik je umeten jezik, ki ima svoj življenjski cikel. Podobno imajo tudi operacijski sistemi družine Windows svoje življenjske cikle: .

Življenjski cikel programskega jezika:

  • ustvarjanje,
  • zgodnje posvojitev (začetna uporaba jezika),
  • (industrijski) uspeh,
  • izumrtje, sprememba drugih jezikov.

V sodobnem svetu je glavni del programske opreme (programske opreme) napisan v 10-15 jezikih, čeprav je bilo v času, ki ga poznamo, ustvarjenih več kot na stotine programskih jezikov. Nekako je uradno registriranih 300 ali 400 jezikov.

Kaj je programski jezik

Jezik je

  • sintaksa (pravila za pisanje programov),
  • semantika (vedenje elementov, ki so vključeni v pravila pisanja in so vgrajeni v jezik),
  • čas izvajanja (runtime).

Sintaksa določa obliko besedilne predstavitve programov, to je, kako naj bodo zapisani, katere besede so vključene v jezik, kako postaviti vejice, presledke itd.

Sintaksa na primeru Lisp

Eden najpreprostejših programskih jezikov, ki ima formalno slovnico, je seznamski jezik LISP.

riž. 10. Program LISP

LISP je zelo star jezik, ki ustvarja sezname. Slovnica takega jezika je slovnica seznamov, ki se berejo od zgoraj navzdol.

  • V Lispu obstajajo izrazi: lahko je en atom ali seznam;
  • atom je število ali znak,
  • številka - številka, to je s številko plus ali minus, vsaj eno,
  • simbol - to so črke, kolikorkrat želite, lahko celo večkrat,
  • seznam - seznam, izrazi v oklepajih več kot enkrat.

Program Lisp je seznam seznamov. V Lispu ni ločil, so pa oklepaji. V Lispu so lahko tako dolgi programi, kjer so na koncu 2-3 listi, sestavljeni le iz zaključnih oklepajev.

Najpreprostejši tolmač Lisp je dolg le 19 vrstic! Noben drug jezik si ne more privoščiti takšnega razkošja.

Semantika

Če slovnica opisuje oblike predstavitve: črke, številke, oklepaje, potem semantika opisuje, kako program deluje, kaj te črke, številke, oklepaji pomenijo, kako delujejo, medsebojno delujejo itd.

Možnosti za predstavitev semantike so precej omejene.

Semantika je lahko:

  • opisano v naravnem, človeškem jeziku. Številne jezike je mogoče opisati le na ta način. Pravzaprav je to glavni primer, ko je preprosto dokument, kjer je v ruščini ali angleščini opisano, da taka in drugačna stvar deluje na tak in tak način, en ukaz naredi eno, drugi naredi takšne in drugačne stvari, itd.;
  • določeno formalno (v specializiranih jezikih, na primer za nekatere izračune, je vedenje elementov mogoče formalno opisati);
  • opredeljeno z izvirno izvedbo (redko uporabljeno, vendar je to "zadnja možnost" za opis, ko je semantika preveč zapletena ali ni zelo pomembna);
  • opisano z nizom testov (primerov), in sicer, da bi moral delovati tako in tako deluje.

Semantika je razdeljena na dva dela:

  • statično,
  • dinamično.

Statična semantika

  • daje pomen leksikalnim konstrukcijam;
  • določa dovoljene vrednosti spremenljivk in parametrov;
  • opisuje sintaktične omejitve, na primer z uporabo sintakse ne bo mogoče opisati, da ne morete dodati nizov s številkami.

Dinamična ali frontalna semantika izvajanja

  • določa splošno naravo programa;
  • opisuje, kako delujejo vgrajene operacije in vgrajene knjižnice. To je glavni del semantike, ki je potreben za razumevanje, kako bo program živel in deloval, potem ko je napisan;
  • določa zahteve za tolmača.

Sistem podatkovnih tipov v programskih jezikih

Pomemben del semantike je sistem tipov - to je niz pravil in izrazov za metode, ki so zapisane v ideologiji jezika in kako medsebojno delujejo.

Običajno ima programski jezik sistem podatkovnih tipov - to so nizi, številke, seznami itd. Obstaja na primer jezik Force, kjer so vsi podatki preprosto, z drugimi besedami, obstajajo jeziki, kjer tipi podatkov sploh niso vgrajeni.

Če je prisoten sistem tipov, lahko programske jezike razdelimo na dva neodvisna razreda, ki sta podana spodaj.

Sistem vrste podatkov:

  • vtipkanega ali netipiziranega jezika
  • statično ali dinamično tipkanje
  • močno ali šibko tipkanje

Če je tipkanje statično, so tipi vseh in izrazov, ki so zapisani v programu, znani do trenutka njegove izvedbe, to je, ko so opisane funkcije, razredi, spremenljivke, potem se takoj postavijo ali izrecno zagotovijo pogoji, tako da vrsta takšne konstrukcije je znana že od začetka.

Če je tipkanje dinamično, potem je, nasprotno, vrsta kontekstualnih jezikovnih objektov neznana do trenutka izvedbe, torej bo vrsta funkcije ali česar koli drugega neznana do samega konca.

Močno tipkanje pomeni, da če ima entiteta neki tip in je znan, potem je ta tip mogoče zamenjati, vendar ima objekt sam fiksen tip in se ne spremeni.

Pri šibkem tipkanju se lahko vrsta predmeta razlikuje glede na kontekst in kaj z njim počnete.

Paziti morate na sistem tipov jezika. Zaradi napačno določenega tipa samo enega, ne zelo opaznega znaka na začetku programa, se spremeni vrsta celotnega izraza in zato lahko nastanejo zelo čudne napake.

Naslednja pomembna značilnost jezika je

Paradigma programskega jezika

  • iz grščine - predloga, primer, vzorec;
  • gre za sistem idej in konceptov, ki opredeljujejo slog pisanja programov v tem jeziku – način, kako jezik vključuje pisanje programov v njem (wiki);
  • jezik »favorizira« eno ali več paradigm (multi-paradigma).

Glavne paradigme

  • imperativ: program je niz zaporednih navodil, ki spreminjajo notranje stanje računalnika, podatkov itd. To pomeni, da je program navodilo;
  • funkcionalno: program je niz matematičnih funkcij. Delo programa je izračun vrednosti funkcij;
  • objektno usmerjeno: predmetno področje je opisano z uporabo objektov z lastnostmi in metodami. Program - proces interakcije predmetov;
  • logično: program je niz izjav o predmetnem področju. Delo programa je ugotavljanje resničnosti trditev o tem predmetnem področju.

Pogosto je isti praktični problem mogoče izvesti s katero koli od zgoraj naštetih paradigm.

Drug pomemben del jezika, ki ga je treba upoštevati pri uporabi jezika, je Runtime – kako se jezik izvaja.

Runtime - izvajanje programa

Program se lahko izvaja na različne načine:

  1. najenostavnejši in najbolj naiven način izvajanja programa je interpretacija – branje izvorne kode ob zagonu. Tako delujejo lahki skriptni jeziki. Deluje tudi sam programer: ko je napisal program, si na lastne oči ogleda svoj program in ugotovi, kako bo njegov program deloval in kaj narediti;
  2. pogost način zagona programov je prevajanje v strojno kodo - ločen korak pred zagonom. Obstaja ločeno orodje - prevajalnik, kjer se preberejo izvorne kode programa, z njimi se nekaj naredi, jih pretvori v strojne kode, ki so razumljive trenutnemu sistemu. Nato to kodo izvede neposredno strojna oprema;
  3. hibridni način je prevajanje in izvajanje bajtov v virtualnem stroju. Prevajalnik prebere izvorno kodo, po kateri se izdela bajtna koda, ki se izvaja v virtualnem stroju.

Te tri metode so različne in se uporabljajo za različne namene. Te tehnike je mogoče kombinirati – tolmač lahko sproti sestavi nekatere dele programa, da deluje hitreje. Dinamično ustvarjeno kodo je mogoče razlagati brez prevajanja.

Jezikovni predstavniki

C jezik

- eden izmed najbolj priljubljenih, eden najpomembnejših v smislu kode, ki je fizično napisan na njej, praktično je "naše vse".

Leta 1972 so ga ustvarili Dennis Ritchie s sodelavci. D. Ritchie je ustvaril tudi sistem Linux in številne druge uporabne stvari.

  • imperativ,
  • sestavljeno,
  • ročno upravljanje pomnilnika (s pomočjo nekaterih operacij, vgrajenih v jezik, morate pomnilniške elemente dodeliti spremenljivkam in jih nato sprostiti, ko niso več potrebni).

Mimogrede, C je še vedno pomemben, uporablja se za:

  • sistemsko programiranje (na primer jedro Linuxa je napisano v C),
  • drobljenje številk (tako imenovane drobilne številke, to je za velike izračune, kjer je pomembna hitrost),
  • programiranje mikrokrmilnikov in vgrajenih sistemov.

C je nizkonivojski jezik, lahko rečemo, da je Assembler s človeškim obrazom, saj lahko človek ročno pretvori skoraj vsako C konstrukcijo v Assembler in dobimo povsem razumljive operacije.

C programi so zelo kompaktni. Niso veliko večji, kot če bi bili podobni programi napisani v asemblerju. Hkrati je razvoj v C veliko hitrejši kot v Assembly.

Zato se zdaj C uporablja za opravila, kjer je potrebna hitrost, upravljanje pomnilnika je zelo pomembno, kompaktna velikost samega programa pa je velikega pomena. Če imate majhen mikrokrmilnik, ki je vgrajen v nekakšno napravo, bo program zanj najverjetneje napisan v Assemblerju ali C.

riž. 11. Primer preprostega programa C.

Java

  • Ustvarjen leta 1995,
  • ustvarjalci - James Gosling (James Gosling) in Sun Microsystems (Gosling je delal v tem podjetju).
  • Objektno usmerjen, imperativ (C je imperativ, vendar NI predmetno orientiran),
  • močno in statično tipkano,
  • bajtno prevedeno z virtualnim strojem,
  • brez dostopa do pomnilnika, samodejno zbiranje smeti (slednje deluje dobro, če je tretjina ali četrtina prostega pomnilnika).

V 90. letih je JAVA pridobila veliko popularnost kot jezik za več platform. Ko napišete virtualni stroj za neko platformo, recimo za Windows ali za Linux ali za Mac, lahko na njem zaženete poljubne programe JAVA brez ponovnega prevajanja. Zato je bil jezik priljubljen v dobi spleta, ko so obstajale različne platforme (različne različice Windows, različni Maci). Programi JAVA so delovali hitro in dokaj dobro na različnih platformah.

Uporablja se za:

  • programiranje aplikacij, tudi za spletno programiranje,
  • vgrajeni sistemi (če se C uporablja za mikrokrmilnike, potem je JAVA za mobilne telefone, terminale itd.),
  • visoko obremenjeni sistemi z velikim številom uporabnikov (bančni programi, sistemi kontrole zračnega prometa itd.).

Treba je razlikovati med specifikacijami jezika Java in različnimi izvedbami JVM:

  • Sun JDK (od Sun, zdaj Oracle),
  • IBM JDK (prodan za denar),
  • OpenJDK (popolnoma brezplačno)
  • itd.

riž. 12. Primer preprostega JAVA programa.

Kot je razvidno iz sl. 12, morate napisati veliko črk, da dokončate preprosta dejanja. Javo pogosto imenujejo novi Cobol, saj vsebuje enake negativne lastnosti, zaradi katerih je nekoč Cobol postal slab jezik.

Kljub temu je JAVA zelo priljubljena, zlasti v njej je zapisan odjemalski del operacijskega sistema.

Lisp

  • Res dokonča Lis t P procesor (LisP);
  • nastala leta 1958;
  • ustvarjalci - John McCarthy;
  • čisti funkcionalni jezik, kljub precej čudni sintaksi;
  • močno in dinamično tipiziran;
  • običajno tolmačeno;
  • brez dostopa do pomnilnika, samodejno zbiranje smeti, ki pade na tolmač in ne na virtualni stroj.

Uporablja se za:

  • znanstveno programiranje in raziskave;
  • umetna inteligenca - Lisp je nastal na samem začetku iskanja z inteligenco. V poznih petdesetih in zgodnjih šestdesetih letih prejšnjega stoletja je v znanstvenih krogih obstajal močan občutek, da bo umetna inteligenca kmalu ustvarjena. Potem je veljalo, da bi bile ključne značilnosti umetne inteligence sposobnost delovanja z naravnim jezikom, besedilom, branjem, govorjenjem in početjem nekaterih razumnih stvari. Lisp je bil ustvarjen za obdelavo semantičnih podatkov iz besedila, omogoča vam, da takšne stvari naredite dobro;
  • karkoli, vendar se praviloma ne uporablja zelo učinkovito.

Jezik Lisp, razvit leta 1958, je doživel številne spremembe.

Ima številne izvedbe in narečja:

  • CommonLisp (ustvarjen v sedemdesetih letih) je klasična izvedba, ki velja za glavno;
  • Shema (shema) - poenostavljeno narečje, ki izvrže nekatere stvari iz CommonLisp in olajša njihovo izvajanje;
  • Clojure je jezikovno narečje Lisp, vendar deluje na vrhu stroja JAVA, se pravi, prevaja v bajtno kodo in se izvaja, kot da bi bil program JAVA.

riž. 13. Program LISP: Bubble Sort

Python

  • Poimenovana po britanski oddaji Monty Pynton's Flying Circus iz sedemdesetih let (stare šale, a smešne)
  • nastala leta 1991
  • ustvaril Nizozemec Guido van Rossum
  • multiparadigmski jezik, objektno usmerjen, imperativ, funkcionalen
  • močno in dinamično tipkano
  • interpretirano, prevedeno po bajtih z navideznim strojem (odvisno od izvedbe)

Uporablja se za:

  • skriptno programiranje
  • spletno programiranje
  • znanstveno programiranje (na voljo so veliki, zmogljivi paketi za modeliranje, verjetnost, statistiko in druga področja, ki združujejo izkušnje, pridobljene na drugih področjih)

Python je jezikovna specifikacija. Obstaja več glavnih izvedb:

  • CPython - glavni (referenca)
  • Jython - na vrhu JVM
  • PyPy - Python v Pythonu ("Python v Pythonu" je hitrejši in boljši od CPython in Jython)

riž. 14. Program Python: razvrščanje z mehurčki

Python ima pomembno lastnost – namesto oklepajev (okrogli, kodrasti) se za označevanje blokov kode in strukturnih elementov uporablja zamik s presledki, kar je za vse jezike precej nenavadno. Razen Pythona skoraj nihče nima takšne funkcije.

Izbira jezika za nalogo

Kako izbrati jezik za nalogo, ko veste, kaj morate narediti, pa ne veste kaj?

Pomemben nasvet: uporabite tisto, kar znate programirati. To je veliko bolje kot uporabiti nekaj, česar NE znate programirati.

Ekosistem

Jezik, ki ga želite prevzeti, ni nujno, da je goli jezik, mora imeti ekosistem, ki vključuje:

  • razvojna orodja (priročen IDE)
  • že pripravljene knjižnice in ogrodja
  • orodja za testiranje za izvajanje testnih primerov: testni okviri in orodja
  • sistemi za pakiranje in uvajanje, tako da je napisano kodo mogoče zapakirati, nekje razporediti, tako da jo lahko drugi zlahka uporabljajo. C nima te zmožnosti, imata pa Ruby in Python.
  • skupnosti. Ne uporabljajte mrtvih jezikov, ne glede na to, kako kul so. Če nimate koga vprašati, boste ostali v popolni slepi ulici. Menijo, da so nekatere skupnosti bolj prijazne, druge manj. Na primer, skupnost Ruby je odlična, skupnost Java pa je grozna - tam vam sploh ni treba ničesar spraševati.

Priljubljenost

V ekipi je težko najti ljudi, ki pišejo kodo v redko uporabljenem jeziku, na primer v Eifflu. Po drugi strani pa bo prosto mesto v megapriljubljenem jeziku JAVA, v katerem je vstopni prag nizek, naletelo na veliko ljudi, a ne bo lahko najti ljudi, ki v njem res dobro pišejo.

Bolj kot je jezik priljubljen, več je knjižnic, skupnosti, okvirjev in drugih stvari, ki zrastejo same od sebe.

Stopnja učenja

Skoraj nihče ne zna jezika do konca. Med delom se boste morali jezik učiti vedno dlje. Nekatere jezike je enostavno naučiti, druge pa zelo težko.

JAVA je jezik, ki se ga je enostavno naučiti in preprost v smislu funkcij, potem pa se vse gradi ne na račun jezika, ampak na račun orodij.

C++ se je nemogoče naučiti v celoti, saj so tam zelo zapletene stvari z generiranjem kode.

Nišni jeziki

Določeni jeziki so bolj primerni za določene nišne naloge.

Primer 1: spletna aplikacija, ki

  • sodeluje z bazo podatkov
  • notranja služba v podjetju
  • potrebujemo hiter razvoj, ker šef res sprašuje.

Za takšno nalogo bo najverjetneje deloval Python ali Ruby. Ne delaj tega v JAVA

Primer 2: obračunski sistem mobilnega operaterja

  • na tisoče operacij na sekundo, veliko različnih plačil in prenosov
  • visoka zanesljivost in toleranca napak
  • prilagodljivost pri konfiguraciji, diagnoza težav

V tem primeru je naša izbira Java, C++, Erlang - bogati jeziki z bogatimi orodji.

Primer 3: računalniška koda na vozilu za satelit

  • omejeni viri (samo megabajt pomnilnika in zelo nizka takta)
  • trdi realni čas, tako da satelit ne izgubi orientacije, se zlomi ali eksplodira
  • strogo znane naloge, brez prilagodljivosti in brez prilagajanja
  • veliko izračunov

Naša izbira sta C in C-podobna jezika (in celo zbirnik), ker je virov zelo malo in te zahteve je treba izpolniti.

Članek na podlagi videa:

Kako izbrati pravi programski jezik - Ivan Kalinin

Video je bil posnet decembra 2014, vendar so vse informacije relevantne in nimajo zastaranja. Številni materiali s stališča današnje realnosti so nedvomno zanimivi, na primer, da so znanstveniki že v poznih 50. in zgodnjih 60. letih 20. stoletja verjeli, da je umetna inteligenca že na pragu in da bo z njeno pomočjo mogoče delati na računalniku z naravno , navaden, človeški jezik.

Naj izpostavim nekaj splošnih trendov v razvoju programskih jezikov. Pronicljivi bralec je verjetno že zdavnaj uganil, kaj bom rekel. Jeziki se razvijajo v smeri vse bolj abstrakcije. In to spremlja padec učinkovitosti. Vprašanje: ali je abstrakcija vredna tega? Odgovor: vredno. Vredno, saj povečanje stopnje abstrakcije pomeni povečanje stopnje zanesljivosti programiranja. Z nizko učinkovitostjo se je mogoče boriti z gradnjo hitrejših računalnikov. Če so zahteve po pomnilniku previsoke, lahko količino povečate. To seveda zahteva čas in denar, vendar se da rešiti. Vendar obstaja samo en način za reševanje napak v programih: popraviti jih je treba. Še bolje, ne počni tega. Še bolje, čim bolj otežite jih. In temu so namenjene vse raziskave na področju programskih jezikov. In se morate sprijazniti z izgubo učinkovitosti.

Namen tega pregleda je bil poskus bralcu dati predstavo o raznolikosti obstoječih programskih jezikov. Med programerji pogosto obstaja mnenje o "univerzalni uporabnosti" določenega jezika (C, C ++, Pascal itd.). To mnenje nastane iz več razlogov: pomanjkanje informacij, navada, vztrajnost razmišljanja. Poskušal sem nekoliko izravnati prvi faktor. Za ostalo pa lahko rečem le, da bi si moral pravi profesionalec nenehno prizadevati za izpopolnjevanje svojih strokovnih veščin. In za to se vam ni treba bati eksperimentirati. Kaj pa, če vsi naokoli pišejo v C/C++/VB/Pascal/Perl/Java/… (podčrtaj, kot je primerno)? Zakaj ne bi poskusili nekaj novega? Bi bilo to bolj učinkovito? Seveda, preden začnete uporabljati nov jezik, morate natančno preučiti vse njegove značilnosti, vključno s prisotnostjo učinkovite izvedbe, zmožnostjo interakcije z obstoječimi moduli itd., In šele nato sprejeti odločitev. Seveda vedno obstaja tveganje, da gremo narobe, ampak ... Samo tisti, ki ne naredi nič, se ne moti.

In še naprej. Slišal sem in včasih celo sodeloval v razpravah o obliki »jezik A je boljši od jezika B«. Upam, da se bodo po branju tega pregleda mnogi prepričali o nesmiselnosti takšnih sporov. Največ, o čemer je mogoče razpravljati, so prednosti enega jezika pred drugim pri reševanju določenega problema v določenih pogojih. Tu se je res včasih treba kaj prepirati. In včasih rešitev nikakor ni očitna. Vendar pa je prepiranje "na splošno" očitno neumno.

Ta članek je bil mišljen kot odgovor na tiste, ki kričijo "Jezik X MORA UMRTI". Upam, da se je odgovor izkazal za dokaj ustrezen in prepričljiv. Upam tudi, da ima članek poleg polemične in izobraževalne vrednosti.

>> Članki

Kako so se pojavili programski jeziki?

Programski jeziki so bili ustvarjeni že nekaj desetletij in to delo je bilo dolgotrajno, zapleteno in dolgočasno. Pravzaprav je strojni jezik veriga logično urejenih ničel in enic, katerih kršitev zaporedja bo povzročila zaustavitev programa in okvaro računalnika, zahteve za programerje, ki so ustvarili nove načine pisanja ukazov, pa so bile odvisne od razvoja. strojev.

Zgodovina programskih jezikov: Začetek

Začetek štiridesetih let prejšnjega stoletja je zaznamoval pojav prvega jezika za programe - zbirnega jezika, ki je v ukaz vključeval niz kratkih besed ali njihovih okrajšav. Assembler velja za nizkonivojski programski jezik, zato se imenuje strojno usmerjen jezik. Vendar pa programe, napisane v tem jeziku, odlikujeta učinkovitost in zmogljivost.

Jeziki visoke ravni: algoritemski jeziki

Razvoj tehnologije in uvedba novih vrst digitalnih naprav sta prisilila programerje, da so izumili jezik višje ravni s poudarkom na pisanju algoritmov. Tako so se pojavili dodatni programi-prevajalci, ki so sprožili delovanje algoritma. Obstajata dva načina prevajanja:

- kompilacija ali kompilacija, ko navodila začnejo delovati po prevodu celotnega programskega paketa;

- razlaga ali tolmačenje, pri katerem se izvedba in prevajanje strojnega jezika izvajata na sinhroni način.

Značilnosti takšnih programov so: enostavnost ustvarjanja (pisanje kode), možnost popravljanja pri uporabi, enostavnost branja.

Letnik 1954: strukturirano programiranje

Svet se je zavedel za prvega prevajalnika programskega jezika na zelo visoki ravni. Govorimo o Fortranu, iz angleške okrajšave FORmula TRANslator. Razvoj jezika je bil poenostavljen, vendar je pri pisanju velikih programov jezik postal skoraj neberljiv, čeprav je bilo izdanih veliko različic Fortrana.

Vrhunec razvoja programskih jezikov pade natanko na 50-60 let, nato se ustvari več možnosti:

- Algol(1958), ustvarjen na podlagi izoliranih blokov;

- Cobol(1959) - jezik poslovanja in upravljanja, osnova C +;

- Osnovni(1965), ki ga programerji poznajo še danes.

Leta 1970 je bil ustvarjen programski jezik, poimenovan po znanstveniku B. Pascalu - Pascal. Programi, ustvarjeni v tem jeziku, so bili enostavni za branje, pri učenju pa ni bilo težav. Preprost, dobro strukturiran jezik je še vedno priljubljen med programerji začetnikom.

Nekoliko kasneje, leta 1972, je bil razvit drugi programski jezik - C, ki je vključeval dosežke predhodno ustvarjenih jezikov, inovacije, postane morda najbolj priljubljen med uporabniki in ustvarjalci programov. Preprost, dobro strukturiran, enostaven za učenje, C postaja priljubljen med drugimi jeziki.

Objektno usmerjeno programiranje (OOP): 1970

Ideologija postopkovnega programiranja za funkcije, ki niso formalno povezane z obdelavo, je prisilila razvijalce, da so sedli in ustvarili nov koncept za prevajanje jezika. Osnove konceptov OOP so:

Model predmeta, ki še ne obstaja;

Primerek razreda;

Abstrakcija, dajanje značilnosti predmetu;

Enkapsulacija, ko so lastnosti in metode združene, s ciljem skriti podatke;

Dedovanje;

Polimorfizem.

Simula je bil prvi jezik, Smalltalk pa je bil izumljen malo kasneje. Trenutno to vrsto programskega jezika podpirajo sodobni programi: Object Pascal (Delphi), C++, C#, Java.

Zaporedje razvoja programskih jezikov je odvisno od uvedbe novih inovacij, zato je po pojavu interneta jezik postal potreben za dostop do virov, spletnih mest. Tehnologija svetovni splet (WWW) je rodila nove jezike, ki se še danes aktivno uporabljajo: Java, Perl, SQL, HTML, PHP, JavaScript.



Povezani članki: