Računalniki Windows internet

Različni programski jeziki. Programski jezik

Do sredine šestdesetih let je bil osebni računalnik predrag stroj, ki se je uporabljal izključno za posebne naloge in je opravljal le eno nalogo naenkrat.

Programski jeziki v tistem času, pa tudi računalniška naprava, na kateri so bili uporabljeni, so bili razviti samo za izvajanje nalog določenega načrta, na primer za znanstveno računalništvo, in ne. Ker so bili stroji, kot smo že povedali zgoraj, zelo drag užitek in se je naenkrat izvajala le ena naloga, je čas veljal za dragega - zato je bila v ospredju hitrost izvajanja programa.

Vendar so stroški v šestdesetih letih začeli upadati in prišel je čas, ko so si lahko to zadovoljstvo privoščila tudi mala podjetja. Poleg tega se je povečala hitrost in stroji so dolgo časa mirovali, ne da bi opravili nobene naloge. Da bi to preprečili, so bili uvedeni sistemi časovne delitve.

Procesorski čas v teh sistemih, kako naj se izrazim, "prerezati", uporabniki pa bi lahko prejemali izmenično kratke segmente prav tega časa. Računalniška naprava je začela delovati veliko hitreje, kar je uporabniku omogočilo, da se na terminalu počuti, kot da svoje delo opravlja sam s sistemom. Aparat pa je manj miroval, saj je izvajal ne eno, ampak več nalog hkrati. Skupna raba časa je znatno zmanjšala stroške strojnega časa, vse zaradi dejstva, da bi lahko eno napravo uporabljalo več kot en uporabnik, in ne niti dva, ampak stotine.

Torej, ko je moč postala cenejša in bolj dostopna, so tisti, ki so ustvarjali programske jezike, začeli vse bolj razmišljati o bolj priročnem pisanju programske opreme in ne o hitrosti njihovega izvajanja. "Majhne" operacije, torej operacije atomskega tipa, ki so jih neposredno izvajale naprave aparatov, so bile združene v bolj "obsežne" operacije visoka stopnja in enotnih dizajnov, s katerimi je bilo uporabnikom veliko bolj priročno in lažje izvajati svoje dejavnosti.

Kaj so programski jeziki?

Zdaj bomo dali jasen odgovor na to vprašanje. Programski jezik je formalni znakovni sistem, ki je namenjen opisovanju algoritmov v bolj priročni obliki za izvajalca, npr. osebni računalnik... Programski jezik vključuje paket semantičnih, skladenjskih in leksikalnih pravil, ki se uporabljajo za izdelavo računalniškega programa. S pomočjo takšnega jezika bo programer lahko natančno določil, na katere dogodke se bo računalnik odzval, kako se bodo informacije shranjevale in prenašale ter kakšna dejanja je treba izvesti v teh različnih vrstah okoliščin.

Med ustvarjanjem prvih programabilnih naprav je bilo izumljenih skoraj tri tisoč programskih jezikov. Njihovo število se vsako leto povečuje, seznam pa se dopolnjuje z novimi. Obstajajo nekateri jeziki, ki jih zna uporabljati le majhno število ustvarjalcev, ki so jih razvili, drugi postanejo znani velikemu številu uporabnikov. Programerji pri svojem delu uporabljajo več kot deset različnih jezikih programiranje.

Čemu so programski jeziki?

Proces osebnega računalnika je izvajanje programa. Povedano bolj preprost jezik, to je serija ukazov, ki sledijo v določenem vrstnem redu. Vrsta ukaza strojnega tipa, ki je sestavljena iz ničel in enic, označuje, katera dejanja naj izvede osrednji procesor. Iz tega sledi: za nastavitev zaporedja dejanj, ki jih je treba izvesti, je nastavljeno zaporedje binarnih kod ustreznih ukazov. V strojnih kodah je programska oprema sestavljena iz številnih navodil. Pisanje takšne programske opreme je zamudno, okorno in dolgočasno. Programer mora poznati kombinacijo enic in ničel kode binarnega tipa vsakega programa, poleg tega pa si mora zapomniti kode binarnega tipa podatkovnih naslovov, ki se uporabljajo pri njegovem izvajanju. Veliko lažje je napisati programsko opremo v jeziku, ki je bližje človeškemu naravnemu jeziku, in naročiti osebnemu računalniku, da ta program prevede v kode strojnega tipa. Tako so se pojavili programski jeziki, ki so namenjeni posebej za pisanje programske opreme.

Zdaj obstaja veliko število različnih programskih jezikov. Za reševanje številnih težav lahko uporabite vsakega od njih. Strokovnjaki na svojem področju natančno vedo, kateri programski jezik uporabiti za reševanje kakršnih koli težav, saj je vsak od jezikov opremljen s svojimi zmogljivostmi, orientacijo na določene vrste nalog in ima tudi svoj način opisovanja predmetov in konceptov, ki so uporablja za reševanje velikega števila težav.

Programski jeziki so razdeljeni v 2 skupini

Obstajajo jeziki, ki so na nizki ravni, in jeziki, ki so na visoki ravni.

V prvo skupino sodijo zbirni jeziki, kjer so simboli navodil uporabljeni v obliki simbolov, ki se hitro in jasno zapomnijo. Simboli se zapišejo namesto zaporedja ukazov binarne vrste in namesto naslovov podatkov binarne vrste, ki se uporabljajo pri izvajanju ukaza, programerji izberejo imena teh podatkov v obliki simbolov in jih prevzamejo. . Tak programski jezik ima drugo ime - samodejna koda ali mnemonična koda.

Toda programske jezike na visoki ravni za programe najpogosteje uporabljajo tisti, ki jih ustvarjajo. Tak jezik ima načeloma, tako kot človeški jezik, svojo abecedo, in sicer veliko število simbolov, ki se uporabljajo v jezikih. Ti znaki so potrebni za sestavljanje ključnih besed jezika. Vsaka ključna beseda ima svojo funkcijo, tako kot v našem običajnem jeziku besed, ki so sestavljene iz abecednih črk. Ključne besede so med seboj združene v stavke z uporabo skladenjskih pravil jezika. Vsak od vseh predlogov je odgovoren za zaporedje dejanj, ki jih bo računalnik izvedel.

Programski jezik, ki ima visoko raven, je povezava med osebnim računalnikom in uporabnikom, ki mu omogoča komunikacijo z osebnim računalnikom na način, ki je za človeka najbolj primeren. Pogosto vam ta jezik pomaga izbrati pravo metodo za reševanje težav.

Preden začne pisati programsko opremo v programskem jeziku, ki ima visoko raven, specialist sestavi algoritem za reševanje problemov, in sicer sestavi akcijski načrt po korakih, ki ga je treba izvesti za rešitev tega problema. Zato se programski jeziki, ki zahtevajo predhodno sestavljanje algoritma, imenujejo jeziki algoritemskega tipa.

No, tukaj smo, lahko rečemo glavnemu. Zdaj vam bomo povedali, kaj so programski jeziki.

Kateri programski jeziki obstajajo

Fortran

Sredi petdesetih let so znanstveniki začeli ustvarjati programske jezike. In prvi jezik te vrste se je imenoval Fortran in je bil razvit leta 1957. Uporablja se za opis algoritma za reševanje problemov znanstvene in tehnične vrste z uporabo digitalnega računalnika. Poleg tega je bil ta tip jezika, tako kot prve računske enote, uporabljen za izvajanje naravoslovnih in matematičnih izračunov. Ta jezik v izboljšani vrsti se je ohranil do našega časa in je med sodobnimi jeziki, ki imajo visoko raven, najbolj uporabljen v znanstvenih raziskavah. Najpogostejše možnosti danes so Fortran-I2, Fortran-I4, EASIC Fortran in njihove posplošitve.

ALGOL

Nadaljujemo s temo programskih jezikov. Kot ste že razumeli, bomo zdaj govorili o takšnem programskem jeziku, kot je Algol, ki se je pojavil v letih 1958-1960. V letih 1964-1968 je bil izboljšan, tako se je pojavil Algol - 68. Jezik te vrste je razvil odbor, v katerem so bili znanstveniki iz Amerike in Evrope, in ga uvrstil med jezike, ki imajo visoko raven. Z uporabo jezika te vrste bi lahko algebraične formule zlahka prevedli v programske ukaze. Algol je bil priljubljen ne le v Evropi, ampak tudi v Rusiji. Za vse programske jezike, ustvarjene čez nekaj časa, je ta vrsta jezika imela opazen vpliv, zlasti pa je vplivala na jezik Pascal. Ta vrsta jezika je načeloma, tako kot jezik FORTRAN, ustvarjena za reševanje problemov znanstvenega in tehničnega tipa. Poleg tega je bil jezik uporabljen kot sredstvo za poučevanje osnov programiranja, torej umetnosti prevajanja programske opreme.

Cobol

Programski jezik Cobol je nastal v letih 1959-1960 in ta jezik spada v tretjo generacijo. V prvi vrsti je namenjen razvoju aplikacij za poslovanje in reševanju problemov ekonomskega tipa, za obdelavo bančnih podatkov, za zavarovalnice in druge institucije. Cobolova "izumiteljica" je Grace Hopper. Običajno je COBOL kritiziran zaradi svoje okornosti in besednosti, saj je bil eden od ciljev ustvarjalcev tega jezika maksimalno približevanje angleški jezik... Hkrati je imel programski jezik za svoj čas odlična orodja za izvajanje dejavnosti s podatkovnimi strukturami in datotekami, kar mu je, mimogrede, zagotavljalo dolgo življenjsko dobo v poslovnih aplikacijah. Vsaj v Združenih državah, zagotovo.

Lisp

Naslednji na vrsti je programski jezik Lisp. Programski jezik Lisp je bil razvit skoraj istočasno s programskim jezikom Cobol. Ta jezik temelji na programski predstavitvi sistemskih linearnih seznamov znakov, ki so glavna podatkovna struktura jezika. Je drugi najstarejši programski jezik za Fortranom. Obširno se uporablja za obdelavo informacij v obliki simbolov in se uporablja za ustvarjanje programske opreme, ki posnema aktivnost človeških možganov.

Program Lisp je sestavljen iz zaporedij izrazov, to je oblik. Rezultat programa je izračun teh izrazov, zapisanih v obliki seznama - ena glavnih struktur te vrste jezika. Glavni pomen programa Lisp je "življenje" v simbolnem prostoru.

OSNOVNO

Programski jezik BASIC so razvili programerji na Dartmouth College v ZDA sredi šestdesetih let. Jezik je deloma temeljil na Fortranu 2 in deloma na Algolu - 60; dodani so bili tudi dodatki, ki so ga naredili bolj priročnega za delo v načinu delitve časa, po nekaj letih pa je postal priročen tudi za obdelavo besedil in matrično aritmetiko. Ta tip programskega jezika je bil prvotno implementiran na glavnem računalniku GE-265, ki podpira veliko število terminalov. V času svojega nastanka je bil v nasprotju s splošnim prepričanjem sestavljen jezik.

Ta vrsta programskega jezika je bila zasnovana tako, da lahko študenti pišejo programe z uporabo terminalov za delitev časa. Ustvarjen je bil ne samo zato, da bi rešil problem, ki je povezan s problematičnimi, starejšimi jeziki, ampak je bil zasnovan tako, da bi ga lahko uporabljali »preprosti« uporabniki, ki jih hitrost programa ne zanima, ampak jih zanima v možnosti uporabe osebnega računalnika za reševanje svojih nalog. Večina programerjev začetnikov zaradi preprostosti tovrstnega jezika svojo programsko pot začne z njim.

utrdba

Programski jezik Fort se je pojavil v poznih šestdesetih v zgodnjih sedemdesetih. Ta tip jezika je bil uporabljen pri problemih nadzora različnih vrst sistemov, potem ko je njegov ustvarjalec Moore Charles nanj napisal programsko opremo, ki je bila namenjena krmiljenju radijskih teleskopov Observatorija v Arizoni.

Številne lastnosti, kot so fleksibilnost, interaktivnost in preprostost "izumov", so naredile Forth učinkovit in privlačen jezik v uporabnih raziskavah in pri ustvarjanju orodij. Očitno področje uporabe te vrste programskega jezika so vgrajeni krmilni sistemi. Poleg vsega povedanega je našel uporabo tudi v programiranju osebnih računalnikov pod nadzorom različnih vrst operacijskih sistemov.

Pascal

Če nadaljujemo s temo, ne moremo omeniti takšnega programskega jezika, kot je Pascal. Pascal je bil ustvarjen leta 1972 in poimenovan po Blaiseu Pascalu, ki je bil nekoč velik matematik in izumitelj prve aritmetične enote na svetu. Za ustvarjalca jezika upravičeno velja švicarski znanstvenik in računalničar Nikolaus Wirth. Inovacija je bila uporabljena za poučevanje s programskimi metodami. Pascal je programski jezik glavni namen.

Od vseh njegovih značilnosti lahko imenujemo glavne - to so najstrožje tipkanje in razpoložljivost programskih orodij strukturiranega tipa. Pascal je bil eden prvih takšnih jezikov. Programski jezik Pascal uči pravilnosti pisanja programa in pravilnega razvoja metod za reševanje problemov, pomaga pa se tudi naučiti izbrati prave možnosti za predstavitev in organiziranje podatkov, ki se uporabljajo v nalogi. Jezik Pascal je bil uveden od leta 1983 tečaji računalništvo v srednjih šolah ZDA.

V nadaljevanju teme programskih jezikov smo se odločili govoriti o drugi vrsti jezika - to je jezik Ada. Programski jezik Ada je bil navdihnjen s Pascalom v poznih sedemdesetih in je poimenovan po Adi Lovelace, nadarjeni matematiki. Prav ta nadarjena ženska je leta 1843 svetu razložila možnosti analitične enote Charlesa Babbagea. Ta tip jezika je bil razvit po naročilu, ki ga je izdelalo ameriško ministrstvo za obrambo, in je bil prvotno uporabljen za reševanje problemov nadzora vesoljskih letov.

Programski jezik Ada je modularen, strukturiran in objektno usmerjen programski jezik, ki vsebuje programska orodja na visoki ravni za vzporedne procese. Sintaksa programski jezik te vrste je vzeta iz Pascala in Algola, razširjena in izvedena v logičnem in strogem slogu. Ada je programski jezik, ki ima močno tipkanje in popolnoma izključuje delo s predmeti, ki nimajo tipov, in zmanjša samodejne pretvorbe na absolutni minimum.

Programski jezik C je daleč najbolj priljubljen in uporabljen med programerji. Ta tip programskega jezika izvira iz 2 jezikov, in sicer BCPL in B. Martin Richards je leta 1967 ustvaril BCPL kot jezik, ki je bil namenjen pisanju sistemske programske opreme in prevajalnikov. Spodaj vam bomo povedali, kaj je. Ken Thompson je leta 1970 uporabil DEC PDP-7 na svojem računalniku za ustvarjanje starejših različic UNIX. Tako v prvem kot v drugem jeziku spremenljivke niso bile ločene na vrste – vsaka podatkovna vrednost je imela v pomnilniku eno besedo.

Programski jezik C je bil prvič implementiran leta 1972 na računalniku DEC PDP-11. Vendar mu je uspelo pridobiti svojo priljubljenost in slavo kot operacijski sistem UNIX. Vsi večji operacijski sistemi so danes napisani v C ali C ++. Programski jezik C je bil po več desetletjih na voljo na velikem številu osebnih računalnikov. In mimogrede, omeniti velja, da je popolnoma neodvisen od strojne opreme.

Jezik C je postal tradicionalni programski jezik v poznih sedemdesetih letih. Ta vrsta jezika je opremljena z bogatimi orodji, ki omogočajo pisanje prilagodljive programske opreme, ki se uporablja v vseh vrstah sodobnih osebnih računalnikov.

Prolog

No, pa smo prišli do konca. Našo temo o programskih jezikih bomo zaključili z zgodbo o najnovejšem jeziku na tem področju - in imenuje se Prolog. Ta vrsta jezika velja za programski jezik prihodnosti, nastala pa je v zgodnjih sedemdesetih letih. Pri razvoju so sodelovali strokovnjaki z univerze v Marseillu. Ime je dobil po besedah ​​"PROGRAMIRANJE V JEZIKU LOGIKE". Programski jezik je bil ustvarjen na podlagi zakonov matematične logike. Ta vrsta jezika, za razliko od zgoraj opisanih programskih jezikov, ni algoritemska in spada v tako imenovane opisne, torej opisne jezike.

Zdaj pa se pogovorimo o tem, kaj sta prevajalnik in tolmač?

Prevajalnik in tolmač

Razvijanje jezika, ki je primeren za pisanje programa, ni dovolj. Vsak jezik mora imeti prevajalca, ki je poseben program – prevajalec.

Torej, prevajalec je program, ki je zasnovan za prevajanje programske opreme, ki je bila napisana v enem programskem jeziku, v programsko opremo v drug programski jezik. Ta postopek prevajanja se imenuje prevod. Primer prevajalca je prevajalnik, ki je tudi program. Namenjen je prevajanju programske opreme, ki je napisana v katerem koli jeziku, v programsko opremo v strojnih kodah. Ta postopek se imenuje kompilacija.

Obstaja še en način, ki lahko združuje procese prevajanja in izvajanja programa, in se imenuje interpretacija. Bistvo postopka je naslednje: najprej se prevede v kode strojnega tipa, nato se izvede prva vrstica programske opreme. Ko je prva vrstica končana, se začne prevajanje druge vrstice itd.

Iz tega torej lahko sklepamo, da je tolmačenje program, ki je namenjen po vrstici in izvornem programu.

No, zdi se, da je to vse za danes, zdaj veste, kaj so programskih jezikov in kaj so.

Znano je, da je informacijska tehnologija eno najhitreje rastočih področij sodobnega življenja. Nove tehnologije, projekti, imena in okrajšave se pojavljajo skoraj vsak dan. In v iskanju napredka, v prizadevanju, da bi mu sledili, se je včasih koristno ustaviti za minuto, se postaviti na prste in pogledati naokoli. Pogledati čez obzorje, se spomniti zgodovine in razmišljati o prihodnosti ... Da bi se s svežo energijo potopili v delo, obvladali nove tehnologije, povečali lastno učinkovitost in dobro počutje. Dokler se ne zazdi, da bi spet vstal na prste ...

K pisanju tega članka me je spodbudila razprava, ki je izbruhnila na enem od forumov dotSITE, potem ko se je tam pojavilo sporočilo, v katerem je ostro kritiziral C# - eno glavnih komponent nove platforme .NET iz Microsofta. Sporočilo je vsebovalo že povsem običajne kritike Microsofta nasploh in še posebej (tu ne trdim, da ni kaj kritizirati Microsofta, le ta kritika je že nagnila zobe), pa tudi nekatere izjave konkretno o C #. V nadaljevanju razprave je bilo podanih več zanimivih pripomb, vendar so nekatera vprašanja ostala nespremenjena. Vse to me je spodbudilo k pisanju članka, v katerem se poskuša na nek način »pomiriti« nosilce mnenj o ekskluzivnosti tega ali onega programskega jezika. Poskušal bom podati zgodovinski oris razvoja različnih jezikov in s primeri razložiti nekatere splošne težnje. Morda lahko koga prepričam v nesmiselnost tovrstnih razprav. Ne pretvarjam se, da sem objektiven (čeprav se bom trudil biti tako) ali popoln. To je le poskus "stati na prstih in pogledati okoli sebe" ...

1. Prvi univerzalni jeziki

Torej, začnimo. Obrnimo se na izvore razvoja računalniške tehnologije. Spomnimo se prvih računalnikov in programov zanje. To je bilo obdobje programiranja neposredno v strojnih kodah, glavni pomnilniški mediji pa so bile luknjane kartice in luknjani trak. Programerji so morali temeljito poznati arhitekturo stroja. Programi so bili precej preprosti, kar je bilo posledica, prvič, zelo omejenih zmogljivosti teh strojev, in drugič, velike zapletenosti razvoja in, kar je najpomembneje, programov za odpravljanje napak neposredno v strojnem jeziku. Hkrati je ta način razvoja programerju dal neverjetno moč nad sistemom. Postajalo je možna uporaba tako iznajdljivi algoritmi in načini organiziranja programov, o katerih sodobni razvijalci niso niti sanjali. Na primer, taka možnost, kot je samospreminjajoča se koda, bi se lahko uporabila (in je bila uporabljena!). Poznavanje binarne predstavitve ukazov je včasih omogočilo, da nekaterih podatkov ne shranimo ločeno, ampak jih vstavimo v kodo kot ukaze. In to ni popoln seznam tehnik, posedovanje vsaj ene od njih vas zdaj takoj napreduje na raven "guruja" ekstra razreda.

2. Sestavljalec

Zdi se, da je prvi pomemben korak prehod na zbirni jezik (dovolimo si majhen lirični odmik: angleško ime zbirni jezik ali asembler je v ruščino preveden točno z zgoraj uporabljenim izrazom. Obenem dobi začetnik vtis, da je jezik poimenovan po določeni osebi po imenu asembler. Precej smešna situacija, kajne?). Na videz ne zelo opazen korak - prehod na simbolno kodiranje strojnih navodil - je bil pravzaprav zelo pomemben. Programerju se ni bilo več treba poglabljati v pametne načine kodiranja navodil na ravni strojne opreme. Poleg tega so bila pogosto v bistvu enaka navodila kodirana na povsem različne načine, odvisno od njihovih parametrov (znan primer iz sveta sodobnih računalnikov je kodiranje ukaza mov v procesorjih Intel: obstaja več popolnoma različno kodiranih variant navodil; izbira ene ali druge možnosti je odvisno od operandov, čeprav je bistvo izvedene operacije nespremenjeno: vsebino (ali vrednost) drugega operanda vstavite v prvega). Pojavila se je tudi možnost uporabe makrov in oznak, kar je tudi poenostavilo ustvarjanje, spreminjanje in odpravljanje napak v programih. Bilo je celo nekaj videza prenosljivosti - bilo je mogoče razviti celo družino strojev s podobnim naborom navodil in nekaj skupnega sestavljalnika zanje, medtem ko ni bilo treba zagotoviti binarne združljivosti.

Hkrati je bil prehod na nov jezik poln nekaterih negativnih (vsaj na prvi pogled) plati. Postalo je skoraj nemogoče uporabiti vse vrste pametnih trikov, podobnih zgoraj omenjenim. Poleg tega sta se tukaj prvič v zgodovini razvoja programiranja pojavili dve predstavitvi programa: v izvorni kodi in v prevedeni obliki. Sprva, medtem ko so sestavljavci samo prevajali mnemonike v strojne kode, je bilo eno enostavno prevesti v drugo in nazaj, potem pa, ko so se pojavile priložnosti, kot so oznake in makri, je razstavljanje postajalo vse težje. Do konca ere asemblerja je bila zmožnost samodejnega prevajanja v obe smeri popolnoma izgubljena. V zvezi s tem je bilo razvito veliko število posebnih programov za razstavljanje, ki izvajajo inverzne transformacije, vendar v večini primerov komaj ločijo kodo in podatke. Poleg tega so vse logične informacije (imena spremenljivk, oznake itd.) nepovratno izgubljene. V primeru problema dekompilacije jezikov visoke ravni so primeri zadovoljive rešitve problema precej redki.

3. Fortran

Leta 1954 je skupina razvijalcev pod vodstvom Johna Backusa v drobovju korporacije IBM ustvarila programski jezik Fortran.

Pomena tega dogodka je težko preceniti. Je prvi programski jezik na visoki ravni. Programer bi lahko prvič zares abstrahirala stran od posebnosti strojne arhitekture. Ključna ideja, ki razlikuje nov jezik od asemblerja je obstajal koncept podprogramov. Spomnimo se tega sodobnih računalnikov podpirajo podprograme na ravni strojne opreme, zagotavljajo ustrezna navodila in podatkovne strukture (sklad) neposredno na ravni sestavljavca, leta 1954 je bilo to popolnoma napačno. Zato prevajanje Fortrana nikakor ni bil trivialen proces. Poleg tega je bila skladenjski ustroj jezika precej zapleten za strojno obdelavo, predvsem zaradi dejstva, da se presledki kot skladenjske enote sploh niso uporabljali. To je ustvarilo veliko priložnosti za skrite napake, kot so:

V Fortranu naslednja konstrukcija opisuje "zanko for do oznake 10, ko se indeks spremeni iz 1 v 100": DO 10 I = 1.100 Če tukaj zamenjate vejico s piko, dobite operator dodelitve: DO10I = 1.100 It pravijo, da je taka napaka povzročila, da je raketa eksplodirala med zagonom!

Jezik Fortran je bil (in se še danes uporablja) za znanstveno računalništvo. Trpi zaradi odsotnosti številnih znanih jezikovnih konstrukcij in atributov, prevajalnik tako rekoč na noben način ne preverja skladenjsko pravilnega programa z vidika semantične pravilnosti (ustreznost tipov itd.). Manjka podpora za sodobne načine strukturiranja kode in podatkov. Tega so se zavedali tudi sami razvijalci. Po besedah ​​samega Backusa so se soočili z nalogo, da razvijejo prevajalnik in ne jezik. Razumevanje neodvisnega pomena programskih jezikov je prišlo pozneje.

Pojav Fortrana je bil deležen še bolj ostre kritike kot uvedba asemblerja. Programerje je prestrašilo zmanjšanje učinkovitosti programov zaradi uporabe vmesne povezave v obliki prevajalnika. In ti strahovi so bili utemeljeni: res bo dober programer najverjetneje pri reševanju kakšne majhne naloge ročno napisal kodo, ki deluje hitreje od kode, pridobljene kot rezultat prevajanja. Čez nekaj časa je prišlo do razumevanja, da je izvedba velikih projektov nemogoča brez uporabe jezikov na visoki ravni. Moč računalnikov je rasla in postalo je mogoče sprijazniti se s padcem učinkovitosti, ki je prej veljal za grozeče. Prednosti jezikov na visoki ravni so postale tako očitne, da so razvijalce spodbudile k ustvarjanju novih jezikov, vse bolj popolnih.

4. Cobol

Leta 1960 je nastal programski jezik Cobol. Zasnovan je bil kot jezik za gradnjo komercialnih aplikacij in tako je tudi postal. Na tisoče komercialnih aplikacij je napisanih v Cobolu. Posebnost jezika je sposobnost učinkovitega dela z velikimi količinami podatkov, kar je značilno za komercialne aplikacije. Priljubljenost Kobola je tako velika, da se že zdaj ob vseh pomanjkljivostih (kobol po strukturi in oblikovanju v marsičem spominja na Fortran) pojavljajo njegova nova narečja in izvedbe. Tako se je pred kratkim pojavila implementacija Cobol, združljiva z Microsoft .NET, ki je verjetno zahtevala uvedbo nekaterih lastnosti objektno usmerjenega jezika v jezik.

Leta 1964 je ista korporacija IBM ustvarila jezik PL / 1, ki naj bi v večini aplikacij nadomestil Cobol in Fortran. Jezik je imel izjemno bogastvo skladenjskih konstrukcij. Prvič je uvedel podporo za obdelavo izjem in sočasnost. Treba je opozoriti, da je bila skladenjska struktura jezika izjemno zapletena. Presledki so bili že uporabljeni kot ločevalniki sintakse, vendar ključne besede niso bili rezervirani. Zlasti naslednja vrstica je popolnoma normalen operater PL / 1: IF ELSE = THEN THEN THEN; DRUGO DRUGO

Zaradi teh lastnosti je bil razvoj prevajalnika za PL / 1 izjemno težaven. Jezik ni nikoli postal priljubljen zunaj IBM-ovega sveta.

6. OSNOVNI

Leta 1963 je bil na Dartmouth Collegeu ustvarjen programski jezik BASIC (Beginners' All-Purpose Symbolic Instruction Code). Jezik je bil zasnovan predvsem kot učno orodje in kot prvi učni programski jezik. Domnevalo se je, da ga je enostavno interpretirati in sestaviti. Moram reči, da je BASIC res postal jezik, v katerem se ljudje učijo programirati (vsaj pred nekaj leti je bilo; zdaj to vlogo igra Pascal). Ustvarjenih je bilo več zmogljivih BASIC implementacij, ki podpirajo najsodobnejše programske koncepte (najpomembnejši primer je Microsoft Visual Basic).

7. Algol

Leta 1960 je programski jezik Algol ustvarila ekipa pod vodstvom Petra Naurja. Ta jezik je povzročil celo družino jezikov, podobnih Algolu (najpomembnejši predstavnik je Pascal). Leta 1968 se je pojavil novo različico jezik. Ni našla tako široke praktične uporabe kot prva različica, vendar je bila v krogih teoretikov zelo priljubljena. Jezik je bil precej zanimiv, saj je imel v tistem času številne edinstvene značilnosti.

8. Nadaljnji razvoj programskih jezikov

Na tej točki bi se raje ustavil in podal nekaj pripomb. Ustvarjanje vsakega od zgornjih jezikov (z možno izjemo Algola) so narekovale nekatere praktične zahteve. Ti jeziki so služili kot osnova za kasnejši razvoj. Vsi predstavljajo isto programsko paradigmo. Naslednji jeziki so v svojem razvoju šli bistveno dlje, v smeri globlje abstrakcije.

Podajal bom informacije o kasnejših jezikih v obliki opisov jezikovnih družin. Tako boste bolje izsledili razmerje med posameznimi jeziki.

9. Pascalu podobni jeziki

Leta 1970 je Niklaus Wirth ustvaril programski jezik Pascal. Jezik je izjemen po tem, da je prvi razširjen jezik za strukturirano programiranje (prvi, strogo gledano, je bil Algol, vendar ni bil tako razširjen). Operater brezpogojnega skoka je prvič prenehal igrati temeljno vlogo pri nadzoru vrstnega reda izvajanja stavkov. Ta jezik uvaja tudi močno preverjanje tipov, ki vam omogoča prepoznavanje številnih napak med prevajanjem.

Negativna lastnost jezika je bila pomanjkanje sredstev za razdelitev programa na module. Wirth se je tega zavedal in razvil jezik Modula-2 (1978), v katerem je ideja o modulu postala eden ključnih konceptov jezika. Leta 1988 je bila predstavljena Modula-3 z dodatkom objektno usmerjenih funkcij. Oberon in Oberon-2 sta logično nadaljevanje Pascala in Module. Zanje je značilno gibanje proti usmerjenosti predmeta in komponent.

10. C-podobni jeziki

Kernighan in Ritchie sta leta 1972 ustvarila programski jezik C. Ustvarjen je bil kot jezik za razvoj operacijskega sistema UNIX. C se pogosto imenuje "prenosni sestavljalnik", kar pomeni, da omogoča manipulacijo s podatki skoraj tako učinkovito, kot lahko v zbirnem jeziku, hkrati pa zagotavlja strukturirane nadzorne konstrukcije in abstrakcije na visoki ravni (strukture in matrike). Prav s tem je njegova ogromna priljubljenost povezana z današnjim dnem. In prav to je njegova Ahilova peta. Prevajalnik C je zelo šibek pri nadzoru tipov, zato je zelo enostavno napisati navzven popolnoma pravilen, a logično napačen program.

Leta 1986 je Bjarne Stroustrup ustvaril prvo različico jezika C ++, pri čemer je jeziku C dodal objektno usmerjene funkcije, prevzete iz Simule (glej spodaj), ter popravil nekatere napake in slabe odločitve jezika. C ++ se še naprej izboljšuje, zato je leta 1998 izšla nova (tretja) različica standarda, ki je vsebovala nekaj precej pomembnih sprememb. Jezik je postal osnova za razvoj sodobnih velikih in zapletenih projektov. Ima pa in šibke strani ki izhajajo iz zahtev glede učinkovitosti.

Leta 1995 sta pri Sun Microsystems ustvarila Ken Arnold in James Gosling jezik Java... Podedoval je sintakso C in C ++ ter se znebil nekaterih nadležnih lastnosti slednjega. Posebnost jezika je kompilacija v kodo nekega abstraktnega stroja, za katerega je nato napisan emulator (Java Virtual Machine) za resnične sisteme. Poleg tega Java nima kazalnikov in večkratnega dedovanja, kar močno izboljša zanesljivost programiranja.

V letih 1999-2000 je Microsoft ustvaril jezik C #. Je precej podobna Javi (in je bila zasnovana kot alternativa slednji), vendar ima tudi posebne značilnosti. Osredotočen je predvsem na razvoj večkomponentnih internetnih aplikacij.

11. Jezika Ada in Ada 95

Leta 1983 je bil pod okriljem ameriškega ministrstva za obrambo ustvarjen jezik Ada. Jezik je izjemen po tem, da je v fazi prevajanja mogoče odkriti veliko napak. Poleg tega podpira številne vidike programiranja, ki so pogosto prepuščeni na milost in nemilost operacijskemu sistemu (sočasnost, obravnava izjem). Leta 1995 je bil sprejet jezikovni standard Ada 95, ki se razvija prejšnja različica, dodal ji objektno usmerjenost in popravil nekatere netočnosti. Oba jezika se ne uporabljata široko zunaj vojaških in drugih velikih projektov (letalstvo, železniški promet). Glavni razlog je težava pri učenju jezika in precej okorna sintaksa (veliko bolj okorna kot Pascal).

12. Jeziki obdelave podatkov

Vsi zgornji jeziki so jeziki splošnega namena v smislu, da niso ciljno usmerjeni ali optimizirani za uporabo kakršnih koli specifičnih podatkovnih struktur ali za uporabo na katerih koli posebnih področjih. Razvitih je bilo veliko jezikov, ki so namenjeni precej specifičnim aplikacijam. Spodaj je kratek pregled takih jezikov.

Leta 1957 so poskusili ustvariti jezik za opis matematične obdelave podatkov. Jezik je bil poimenovan APL (Application Programming Language). Njegova posebnost je bila uporaba matematični simboli(kar je otežilo uporabo na besedilnih terminalih; videz grafičnih vmesnikov je to težavo odpravil) in zelo zmogljivo sintakso, ki je omogočala izvajanje številnih netrivialnih operacij neposredno na kompleksnih predmetih, ne da bi se zatekli k njihovemu razbitju na komponente. Široko uporabo je preprečila, kot že omenjeno, uporaba nestandardnih simbolov kot sintaksnih elementov.

14. Snobol in ikona

Leta 1962 se je pojavil jezik Snobol (in leta 1974 njegov naslednik Icon), namenjen obdelavi strun. Sintaksa ikone je podobna C in Pascal hkrati. Razlika je v prisotnosti zmogljivih vgrajenih funkcij za delo z nizi in posebne semantike, povezane s temi funkcijami. Sodobni dvojnik Icon in Snobol je Perl, jezik za obdelavo nizov in besedil, ki je dodal nekaj objektno usmerjenih funkcij. Velja za zelo praktičen jezik, vendar mu manjka eleganca.

15. SETL

Leta 1969 je nastal jezik SETL – jezik za opis operacij nad množicami. Glavna podatkovna struktura v jeziku je množica, operacije pa so podobne matematičnim operacijam na množicah. Uporabno pri pisanju programov, ki se ukvarjajo s kompleksnimi abstraktnimi predmeti.

16. Lisp in podobni jeziki

Leta 1958 se je pojavil jezik Lisp - jezik za obdelavo seznamov. Široko se uporablja v sistemih umetne inteligence. Ima več potomcev: Planner (1967), Scheme (1975), Common Lisp (1984). Mnoge njegove lastnosti so bile podedovane. sodobnih jezikih funkcionalno programiranje.

17. Skriptni jeziki

V zadnjem času so se zaradi razvoja internetnih tehnologij, široke uporabe visokozmogljivih računalnikov in številnih drugih dejavnikov razširili tako imenovani skriptni jeziki. Ti jeziki so bili prvotno namenjeni uporabi kot jeziki notranjega nadzora v vseh vrstah zapletenih sistemov. Mnogi od njih pa so presegli okvire svoje prvotne uporabe in se zdaj uporabljajo na povsem drugih področjih. Značilnosti teh jezikov so, prvič, njihova interpretabilnost (prevajanje je nemogoče ali nezaželeno), drugič, preprostost sintakse in tretjič, enostavna razširljivost. Zato so idealni za pogosto uporabo. spremenljivi programi, zelo majhni programi ali v primerih, ko izvajanje jezikovnih stavkov traja čas, ki je neprimerljiv s časom njihovega razčlenjevanja. Ustvarjenih je bilo dokaj veliko število takšnih jezikov, navajamo le glavne in najpogosteje uporabljene.

18. JavaScript

Jezik je ustvaril Netscape Communications kot jezik za opis zapletenega obnašanja spletnih strani. Prvotno imenovano LiveScript, je bilo ime spremenjeno zaradi trženjskih razlogov. Razlaga brskalnik, ko se prikaže spletna stran. Sintaksa je podobna Javi in ​​(na daljavo) C / C ++. Ima možnost uporabe objektne funkcionalnosti, vgrajene v brskalnik, vendar ni resnično objektno usmerjen jezik.

19. VBScript

Jezik je Microsoft ustvaril na več načinov kot alternativo JavaScriptu. Ima podobno področje uporabe. Sintaktično podoben Visual Basicu (in je zmanjšana različica slednjega). Tako kot JacaScript ga izvaja brskalnik pri upodabljanju spletnih strani in ima enako stopnjo objektne usmerjenosti.

20. Perl

Jezik je bil ustvarjen za pomoč sistemskemu skrbniku operacijskega sistema Unix pri obdelavi različnih vrst besedil in poudarjanju potrebnih informacij. Razvito kot zmogljivo orodje za obdelavo besedil. Je tolmačen jezik in se izvaja na skoraj vseh obstoječih platformah. Uporablja se za obdelavo besedil, pa tudi za dinamično generiranje spletnih strani na spletnih strežnikih.

21. Python

Interpretirani objektno usmerjen programski jezik. Po strukturi in obsegu je podoben Perlu, vendar manj razširjen ter bolj strog in logičen. Obstajajo implementacije za večino obstoječih platform.

22. Objektno usmerjeni jeziki

Objektno usmerjen pristop, ki je nadomestil strukturirani, se ni prvič pojavil v C++, kot nekateri menijo. Obstaja cela vrsta čistih objektno usmerjenih jezikov, brez katerih bi bila naša raziskava nepopolna.

23. Simula

Prvi objektno usmerjen jezik je bil Simula (1967). Ta jezik je bil namenjen modeliranju različnih predmetov in procesov, v njem pa so se pojavile objektno usmerjene lastnosti prav za opis lastnosti modelnih objektov.

24. Smalltalk

Priljubljenost objektno usmerjenega programiranja je prinesel jezik Smalltalk, ustvarjen leta 1972. Jezik je bil namenjen oblikovanju kompleksnih grafičnih vmesnikov in je bil prvi resnično objektno usmerjen jezik. V njem so razredi in objekti edine programske konstrukcije. Velike pomanjkljivosti Smalltalka so velike zahteve po pomnilniku in slaba zmogljivost nastalih programov. To je posledica slabe implementacije objektno usmerjenih funkcij. Priljubljenost jezikov C ++ in Ada 95 je posledica prav dejstva, da se objektna usmerjenost izvaja brez znatnega poslabšanja zmogljivosti.

25. Eiffel

Obstaja jezik z zelo dobro izvedbo objektne usmerjenosti, ki ni zgrajen nad nobenim drugim jezikom. To je jezik Eiffla (1986). Kot čisti objektno usmerjen programski jezik izboljšuje tudi zanesljivost programa z uporabo "kontrolnih trditev".

26. Vzporedni programski jeziki

Večina računalniških arhitektur in programskih jezikov je osredotočena na zaporedno izvajanje programskih stavkov. Trenutno pa obstajajo sistemi programske in strojne opreme, ki omogočajo organizacijo vzporednega izvajanja različnih delov istega računalniškega procesa. Programiranje takšnih sistemov zahteva posebno podporo programskih orodij, zlasti programskih jezikov. Nekateri jeziki splošnega namena vsebujejo elemente podpore za paralelizem, vendar programiranje resnično vzporednih sistemov včasih zahteva posebne tehnike.

27. Occamov jezik

Jezik Occam je nastal leta 1982 in je namenjen programiranju transputerjev – večprocesorskih sistemov za porazdeljeno obdelavo podatkov. Opisuje interakcijo vzporednih procesov v obliki kanalov – načinov prenosa informacij iz enega procesa v drugega. Upoštevajte posebnost sintakse jezika Šccam - v njem sta zaporedni in vzporedni vrstni red izvajanja operaterjev enak in morata biti izrecno označena s ključnima besedama PAR in SEQ.

28. Model vzporednega računalništva Linda

Leta 1985 je bil predlagan model vzporednega računalništva Linda. Njegova glavna naloga je organizirati interakcijo med vzporedno tekočimi procesi. To je doseženo z uporabo globalnega prostora tuple. Proces lahko tja postavi vodnik s podatki (to je zbirko več, po možnosti heterogenih podatkov), drugi proces pa lahko počaka, da se vodček pojavi v območju vodnika, in po njegovem pojavu prebere vodnik z morebitnim naknadnim izbris. Upoštevajte, da lahko proces na primer postavi vodnik v obseg in izstopi, drugi proces pa lahko ta niz uporabi čez nekaj časa. To omogoča asinhrono komunikacijo. Očitno je s pomočjo takšnega modela mogoče posnemati tudi sinhrono interakcijo. Linda je model vzporednega računalništva in ga je mogoče dodati kateremu koli programskemu jeziku. Obstajajo dokaj učinkovite izvedbe Linde, ki se ukvarjajo s problemom globalne regije tuple s potencialno neomejenim pomnilnikom.

29. Neimperativni jeziki

Vsi jeziki, o katerih smo govorili prej, imajo eno skupno stvar: so nujni. To pomeni, da programi na njih na koncu predstavljajo korak za korakom opis rešitve določenega problema. Lahko poskusite opisati samo formulacijo problema, problem pa zaupate prevajalcu. Obstajata dva glavna pristopa k razvoju te ideje: funkcionalno in logično programiranje.

30. Funkcionalni jeziki

Glavna ideja funkcionalnega programiranja je predstavitev programa v obliki matematičnih funkcij (to je funkcij, katerih vrednost je določena samo z njihovimi argumenti in ne z izvedbenim kontekstom). Operator dodelitve se v takih jezikih ne uporablja (ali vsaj odsvetujemo njegovo uporabo). Obvezne zmogljivosti so praviloma na voljo, vendar je njihova uporaba obdana z resnimi omejitvami. Obstajajo jeziki z lenobno in energično semantiko. Razlika je, grobo rečeno, v tem, da se v jezikih z energijsko semantiko izračuni izvajajo na istem mestu, kjer so opisani, v primeru lene semantike pa se računanje izvaja le takrat, ko je res potrebno. Prvi jeziki imajo učinkovitejšo implementacijo, drugi pa boljšo semantiko.

Med jeziki z energično semantiko omenjamo ML in dva njegova moderna narečja - Standard ML (SML) in CaML. Slednji ima objektno usmerjenega potomca – Objective CaML (O'CaML).

Med jeziki z leno semantiko sta najpogostejša dva: Haskell in njegovo enostavnejše narečje Clean.

Za več informacij o funkcionalnih jezikih glejte TUKAJ:

31. Logični programski jeziki

Programi v logičnih programskih jezikih so izraženi kot formule matematične logike, prevajalnik pa poskuša iz njih izpeljati posledice.

Prednik večine logičnih programskih jezikov je jezik Prolog (1971). Ima številne potomce - Parlog (1983, osredotočen na vzporedno računalništvo), Delta Prolog itd. Logično programiranje, tako kot funkcionalno programiranje, je ločeno področje programiranja in za več podrobnosti bralca napotimo na strokovno literaturo.

32. Namesto sklepa

Dovolil si bom izpostaviti nekaj splošnega trenda v razvoju programskih jezikov. Pronicljivi bralec je verjetno že zdavnaj uganil, kaj bom povedal. Jeziki se razvijajo v smeri vse bolj abstrakcije. In to spremlja padec učinkovitosti. Vprašanje je: ali je abstrakcija vredna? Odgovor: vredno. To je vredno, saj povečanje stopnje abstrakcije pomeni povečanje stopnje zanesljivosti programiranja. Z nizko učinkovitostjo se je mogoče boriti z ustvarjanjem več hitri računalniki... Č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 zavezujte se. Še bolje, čim bolj otežite jih. In prav 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 vsej raznolikosti obstoječih jezikih programiranje. Med programerji pogosto obstaja mnenje o "splošni uporabnosti" določenega jezika (C, C ++, Pascal itd.). To mnenje nastane iz več razlogov: pomanjkanje informacij, navada, vztrajnost razmišljanja. Prvi dejavnik sem poskušal nekoliko kompenzirati. Za ostalo pa lahko rečem le, da bi si moral pravi profesionalec nenehno prizadevati za izpopolnjevanje svojih poklicnih kvalifikacij. In za to se vam ni treba bati eksperimentirati. Kaj pa, če vsi okoli njih pišejo v C / C ++ / VB / Pascal / Perl / Java / ... (podčrtajte potrebno)? Zakaj ne bi poskusili nečesa novega? Kaj pa, če se izkaže za bolj učinkovito? Seveda, preden se odločite za uporabo novega jezika, 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 sodeloval v razpravah, kot je "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. Tukaj je res včasih treba kaj prepirati. In odločitev je včasih daleč od očitne. Vendar je trditi "na splošno" očitna neumnost.

Ta članek naj bi bil odgovor tistim, ki vzklikajo "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 spoznavno vrednost.

Gradivo iz Wikipedije

Programski jezik- formalno sistem znakov namenjena snemanju računalniških programov... Programski jezik definira niz leksikalni , skladenjski in pomensko pravila, ki določajo videz programa in dejanja, ki jih bo izvajalec (običajno računalnik) izvajal pod svojim nadzorom.

Hkrati so se v štiridesetih letih 20. stoletja pojavili električni digitalni računalniki in razvil se je jezik, ki ga lahko štejemo za prvi računalniški programski jezik na visoki ravni - " Plankalkül"Ustvaril nemški inženir K. Zuse od do 1945 let.

Od sredine petdesetih let prejšnjega stoletja se uporabljajo jeziki tretje generacije, kot je npr Fortran , Lisp in Cobol... Programski jeziki te vrste so bolj abstraktni (imenovani so tudi "jeziki visoke ravni") in univerzalni, nimajo toge odvisnosti od določenega strojna platforma in navodila za stroj, ki so na njem uporabljena. Program v jeziku visoke ravni se lahko izvaja (vsaj v teoriji, v praksi običajno obstajajo številne specifične različice ali narečja izvedbe jezika) na katerem koli računalniku, na katerem je prevajalec za ta jezik (a orodje, ki prevede program v jezik stroja, nato pa ga lahko izvede procesor).

Posodobljene različice navedenih jezikov so še danes v uporabi. programsko opremo, in vsak od njih je imel določen vpliv na kasnejši razvoj programskih jezikov. Nato se je v poznih petdesetih letih prejšnjega stoletja pojavil ALGOL, kar je služilo tudi kot osnova za številne nadaljnje razvoje na tem področju. Treba je opozoriti, da je na format in uporabo zgodnjih programskih jezikov v veliki meri vplival vmesnik omejitve .

Popolnost

Pomembno področje dela postaja vizualni (grafični) programski jeziki, pri katerem se postopek »pisanja« programa kot besedila nadomesti s procesom »risanja« (konstruiranja programa v obliki diagrama) na računalniškem zaslonu. Vizualni jeziki zagotavljajo jasnost in boljše človeško zaznavanje programske logike.

Standardizacija programskih jezikov

Za številne razširjene programske jezike, mednarodnih standardih... Posebne organizacije redno posodabljajo in objavljajo specifikacije in formalne definicije ustreznega jezika. V okviru tovrstnih odborov se nadaljuje razvoj in posodabljanje programskih jezikov ter obravnavajo vprašanja razširitve ali podpore obstoječih in novih jezikovnih konstrukcij.

Vrste podatkov

Sodobni digitalni računalniki so binarno podatki pa so shranjeni v binarni (binarni) kodi (čeprav so možne tudi izvedbe v drugih številskih sistemih). Ti podatki običajno odražajo informacije iz resničnega sveta (imena, bančni računi, meritve itd.), ki predstavljajo koncepte na visoki ravni.

Poseben sistem, po katerem so podatki organizirani v programu, je tip sistem programski jezik; razvoj in študij tipskih sistemov je znan kot teorija tipov... Jezike lahko razdelimo na statično tipkanje in dinamično tipkanje , in breztipskih jezikov (npr. Naprej ).

Statično tipizirane jezike je mogoče nadalje razdeliti na jezike z obvezna izjava kjer ima vsaka deklaracija spremenljivke in funkcije obvezno deklaracijo tipa in jeziki z sklepane vrste... Včasih se imenujejo dinamično tipkani jeziki latentno vtipkano.

Podatkovne strukture

Tipski sistemi v jezikih visoke ravni omogočajo opredelitev kompleksnih, sestavljenih tipov, ti podatkovne strukture... Običajno so strukturirani podatkovni tipi oblikovani kot kartezijanski izdelek osnovni (atomski) tipi in prej definirani sestavljeni tipi.

Osnovne podatkovne strukture (seznami, čakalne vrste, hash tabele, binarna drevesa in pari) so pogosto predstavljene s posebno sintakso v jezikih visoke ravni. Takšni podatki so strukturirani samodejno.

Semantika programskih jezikov

Obstaja več pristopov k definiranju semantike programskih jezikov.

Najbolj razširjene sorte teh treh so: operativna, izpeljavna (aksiomatska) in denotacijska (matematična).

  • Pri opisovanju semantike znotraj delovanje pristop, se izvajanje konstrukcij programskega jezika običajno interpretira s pomočjo nekega namišljenega (abstraktnega) računalnika.
  • Aksiomatska semantika opisuje posledice izvajanja jezikovnih konstrukcij z uporabo jezika logike in določanja pred- in postpogojev.
  • Zobozdravstveni semantika operira s pojmi, značilnimi za matematiko - množice, korespondence, pa tudi sodbe, izjave itd.

Paradigma programiranja

Programski jezik je zgrajen v skladu z eno ali drugo osnovno računalniški model in paradigmo programiranje.

Kljub temu, da je večina jezikov osredotočena na imperativni računalniški model ki jih daje von Neumannova računalniška arhitektura, obstajajo tudi drugi pristopi. Omenimo lahko jezike z naloženim računskim modelom ( utrdba , Faktor , PostScript itd.), pa tudi delujoč (Lisp , Haskell , , , REFAL ki temelji na modelu računanja, ki ga je uvedel sovjetski matematik A. A. Markov mlajši) in logično programiranje (Prolog).

Trenutno se tudi aktivno razvijajo deklarativno in vizualni programski jeziki kot tudi razvojne metode in orodja problemsko specifičnih jezikih(cm. Jezikovno usmerjeno programiranje).

Načini izvajanja jezikov

Programski jeziki se lahko izvajajo kot sestavljeno , interpretirano in vgrajeno.

Program v prevedenem jeziku z uporabo prevajalnik(posebni program) se pretvori v ( sestavlja) v strojno kodo (nabor navodil) za določen tip procesorja in nato sestavljen v izvedljivi modul, ki se lahko izvaja kot ločen program. Z drugimi besedami, prevajalnik prevede izvorno kodo programa iz programskega jezika visoke ravni v binarne kode navodil procesorja.

Če je program napisan v interpretiranem jeziku, potem tolmač neposredno izvaja ( razlaga) izvirno besedilo brez predhodnega prevoda. V tem primeru program ostane v izvirnem jeziku in ga ni mogoče zagnati brez tolmača. Računalniški procesor v zvezi s tem lahko imenujemo tolmač strojne kode.

Delitev na prevedene in tolmačene jezike je pogojna. Torej, za kateri koli tradicionalno preveden jezik, kot je npr Pascal, lahko napišeš tolmača. Poleg tega večina sodobnih »čistih« tolmačev ne izvaja neposredno jezikovnih konstrukcij, temveč jih prevede v neko vmesno predstavitev na visoki ravni (na primer s spremenljivim dereferenciranjem in razširitvijo makrov).

Ustvarite lahko prevajalnik za kateri koli interpretirani jezik – na primer, izvorno interpretiran jezik Lisp je mogoče prevesti brez kakršnih koli omejitev. Kodo, ustvarjeno med izvajanjem, je mogoče tudi dinamično prevesti med izvajanjem.

Prevedeni programi praviloma delujejo hitreje in ne zahtevajo dodatni programi, saj so že prevedeni v strojni jezik. Hkrati pa ga je treba vsakič, ko se besedilo programa spremeni, ponovno prevesti, kar upočasni razvojni proces. Poleg tega se lahko prevedeni program izvaja samo na enakem tipu računalnikov in praviloma pod istim operacijskim sistemom, za katerega je bil prevajalnik zasnovan. Ustvariti izvedljivo datoteko za drugo vrsto stroja je potrebna nova kompilacija.

Tolmačeni jeziki imajo nekaj posebnosti dodatne lastnosti(glej zgoraj), poleg tega je mogoče programe na njih zagnati takoj po spremembi, kar olajša razvoj. Pogosto se lahko izvaja program za tolmačen jezik različni tipi stroji in operacijski sistemi brez dodatnega napora.

Vendar se interpretirani programi izvajajo opazno počasneje kot prevedeni programi; poleg tega jih ni mogoče izvesti brez programa tolmača.

Ta pristop vam v nekem smislu omogoča uporabo prednosti tako tolmačev kot prevajalnikov. Omeniti je treba, da obstajajo jeziki, ki imajo tako tolmač kot prevajalnik ( utrdba).

Programski jeziki nizke ravni

Prve računalnike je bilo treba programirati z binarnimi strojnimi kodami. Vendar je programiranje na ta način precej zamudno in okorno opravilo. Za poenostavitev te naloge so se začeli pojavljati programski jeziki nizke ravni, ki so omogočili nastavitev strojnih navodil v človeku berljivi obliki. Da jih pretvorite v binarna koda so bile ustvarjene posebne programe - prevajalci.

Primer jezika nizke ravni je montažer... Jeziki nizke ravni so specifični za tip procesor in upoštevati njegove posebnosti, zato ga je treba za prenos programa v zbirniku na drugo strojno platformo skoraj v celoti prepisati. Obstajajo tudi določene razlike v sintaksi programov za različne prevajalnike. resnica, centralne procesne enote za službene računalnike AMD in Intel praktično združljivi in ​​se razlikujejo le v nekaterih posebnih ukazih. Toda specializirani procesorji za druge naprave, na primer grafične kartice in telefone, vsebujejo bistvene razlike.

Jeziki nizke ravni se praviloma uporabljajo za pisanje majhnih sistemskih programov, gonilnikov naprav, modulov za vmesnike z nestandardno opremo, programiranje specializiranih mikroprocesorjev, ko so najpomembnejše zahteve kompaktnost, hitrost in zmogljivost. neposredni dostop na vire strojne opreme.

Programski jeziki na visoki ravni

Posebnosti specifičnih računalniških arhitektur v njih niso upoštevane, zato se ustvarjene aplikacije zlahka prenašajo iz računalnika v računalnik. V večini primerov je dovolj, da preprosto znova prevedete program za določeno računalniško arhitekturo in operacijski sistem... Veliko lažje je razvijati programe v takih jezikih in manj je napak. Čas razvoja programa se znatno skrajša, kar je še posebej pomembno pri delu na velikih programskih projektih.

Zdaj v razvojni skupnosti verjamejo, da je treba programske jezike, ki imajo neposreden dostop do pomnilnika in registrov ali imajo vstavke v zbirnem jeziku, obravnavati kot programske jezike z nizko stopnjo abstrakcije. Zato se večina jezikov, ki so pred letom 2000 veljali za jezike visoke ravni, ne štejejo več za jezike visoke ravni.

Pomanjkljivost nekaterih jezikov na visoki ravni je velika številka programi v primerjavi s programi v jezikih nizke ravni. Po drugi strani pa za algoritemsko in strukturno zapletene programe pri uporabi superkompilacija prednost je lahko na strani jezikov na visoki ravni. Samo besedilo programov v jeziku visoke ravni je manjše, če pa ga vzamemo v bajtih, bo koda, ki je bila prvotno napisana v zbirnem jeziku, bolj kompaktna. Zato se jeziki na visoki ravni uporabljajo predvsem za razvoj programske opreme za računalnike in naprave, ki imajo veliko količino pomnilnika. Za programiranje drugih naprav se uporabljajo različni podtipi asemblerja, kjer je velikost programa kritična.

Uporabljeni simboli

Sodobni programski jeziki so zasnovani za uporabo ASCII, torej razpoložljivost vseh grafično Znaki ASCII so nujen in zadosten pogoj za zapis katere koli jezikovne konstrukcije. menedžerji ASCII znaki uporablja se v omejenem obsegu: dovoljeni so samo povratni zavihek CR, pomik vrstice LF in vodoravni jeziček HT (včasih tudi navpični jeziček VT in prehod na naslednjo stran FF).

Zgodnji jeziki, ki so se pojavili v tej dobi 6-bitni znaki uporabljal bolj omejen nabor. Na primer, abeceda Fortran vsebuje 49 znakov (vključno s presledkom): A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 = + - * / (). , $ ":

Pomembna izjema je jezik APL ki uporablja veliko posebnih znakov.

Uporaba znakov, ki niso ASCII (kot so znaki KOI8-R ali znaki Unicode) je odvisna od implementacije: včasih so dovoljeni samo v komentarjih in konstantah znakov/nigov, včasih pa le v identifikatorjih. V ZSSR obstajali so jeziki, v katerih so bile vse ključne besede zapisane z ruskimi črkami, vendar ti jeziki niso pridobili velike priljubljenosti (izjema je Vgrajeni programski jezik 1C: Enterprise).

Širitev nabora znakov je omejena z dejstvom, da je veliko projektov razvoja programske opreme mednarodnih. Zelo težko bi bilo delati s kodo, kjer so imena nekaterih spremenljivk zapisana z ruskimi črkami, drugih v arabščini, tretjih pa s kitajskimi črkami. Hkrati za delo z besedilnimi podatki so programski jeziki nove generacije ( Delphi 2006 , , Java) podpora Unicode.

Kategorije programskih jezikov

Matematično neoporečni programski jeziki

To so jeziki, katerih semantika je neposredno utelešenje določenega matematičnega modela, rahlo prilagojenega (brez kršitve celovitosti), da bi bil bolj praktičen jezik za razvoj pravih programov. V to kategorijo spada le nekaj jezikov, večina jezikov je zasnovana prednostno na podlagi možnosti učinkovitega prevoda v Turingov stroj, in imajo le določeno podmnožica v svoji sestavi, ki pooseblja eno ali drugo matematični model- od