Počítače Okna Internet

Různé programovací jazyky. Programovací jazyk

Až do poloviny šedesátých let byl osobní počítač příliš drahým strojem, který sloužil výhradně ke speciálním úkolům a vykonával vždy jen jeden úkol.

Programovací jazyky v té době, stejně jako počítačové zařízení, na kterém byly použity, byly vyvinuty pouze k provádění úkolů konkrétního plánu, například pro vědecké výpočty, a nikoli. Z důvodu, že stroje, jak jsme si řekli výše, byly velmi drahým potěšením a vždy se prováděl pouze jeden úkol, byl čas považován za drahý - proto byla v popředí rychlost provádění programu.

V průběhu šedesátých let však náklady začaly klesat a nastala doba, kdy si toto potěšení mohly dovolit i malé firmy. Navíc se zvýšila rychlost a stroje stály dlouhou dobu nečinné, aniž by vykonávaly jakékoli úkoly. A aby se tomu zabránilo, byly zavedeny systémy sdílení času.

Procesorový čas v těchto systémech, jak to říci, „řezat“ a uživatelé mohli přijímat střídavě krátké úseky právě tohoto času. Počítačové zařízení začalo pracovat mnohem rychleji, což uživateli umožnilo cítit se u terminálu, jako by svou práci dělal se systémem sám. Zařízení bylo zase méně nečinné, protože provádělo ne jeden, ale několik úkolů najednou. Sdílení času výrazně snížilo náklady na hardwarový čas, to vše díky skutečnosti, že jedno zařízení mohlo sdílet více uživatelů, a to dokonce ne dva, ale stovky.

Když se tedy energie stala levnější a dostupnější, ti, kdo vytvořili programovací jazyky, začali stále více přemýšlet o pohodlnějším psaní softwaru, a ne o rychlosti jejich provádění. „Malé“ operace, tedy operace atomového typu, které byly přímo prováděny přístrojovými zařízeními, byly spojeny do „objemnějších“ operací. vysoká úroveň a jednotné designy, se kterými bylo pro uživatele mnohem pohodlnější a snazší provádět jejich činnosti.

Co jsou programovací jazyky?

Na tuto otázku si nyní dáme jasnou odpověď. Programovací jazyk je formální znakový systém, který je určen k popisu algoritmů ve formě, která je pro umělce pohodlnější, např. osobní počítač... Programovací jazyk zahrnuje balík sémantických, syntaktických a lexikálních pravidel, která se používají k vytvoření počítačového programu. S pomocí takového jazyka bude programátor schopen přesně určit, na jaké události bude počítač reagovat, jak budou informace ukládány a přenášeny a také jaké akce je třeba provést za těchto různých typů okolností.

Při vytváření prvních programovatelných zařízení bylo vynalezeno téměř tři tisíce programovacích jazyků. Jejich počet se každým rokem zvyšuje a seznam je doplňován o nové. Existují některé jazyky, které ví, jak je používat jen malý počet tvůrců, kteří je vyvinuli, jiné se stávají známými velkému počtu uživatelů. Při své práci jich programátoři využívají více než deset různé jazyky programování.

K čemu jsou programovací jazyky?

Proces PC je provádění programu. Abych to řekl víc jednoduchý jazyk, tedy dávka příkazů, které následují v určitém pořadí. Typ instrukce strojového typu, která se skládá z nul a jedniček, udává, jaké akce by měl centrální procesor provádět. Z toho plyne: pro nastavení PC posloupnosti akcí, které mají být provedeny, se nastaví sekvence binárních kódů odpovídajících příkazů. Ve strojových kódech se software skládá z mnoha instrukcí. Psaní takového softwaru je časově náročné, těžkopádné a zdlouhavé. Programátor musí znát kombinaci jedniček a nul binárního typového kódu každého programu, navíc si musí pamatovat binární typové kódy datových adres, které jsou použity při jeho provádění. Je mnohem snazší napsat software v jazyce, který je bližší lidskému přirozenému jazyku, a nařídit počítači, aby přeložil tento program do kódů strojového typu. Tak se objevily programovací jazyky, které jsou určeny speciálně pro psaní softwaru.

V současnosti existuje velké množství různých programovacích jazyků. Chcete-li vyřešit mnoho problémů, můžete použít každý z nich. Odborníci ve svém oboru přesně vědí, který programovací jazyk použít k řešení jakýchkoli problémů, protože každý z jazyků je vybaven vlastními schopnostmi, orientací na určité typy úkolů a má také svůj vlastní způsob popisu objektů a konceptů, které jsou používá k řešení velkého množství problémů.

Programovací jazyky jsou rozděleny do 2 skupin

Existují jazyky, které jsou na nízké úrovni, a jazyky, které jsou na vysoké úrovni.

Do první skupiny patří jazyky symbolických instrukcí, kde se používají instrukční symboly ve formě symbolů, které jsou rychle a jasně zapamatovatelné. Symboly se zapisují místo posloupnosti příkazů binárního typu a místo adres dat binárního typu, které se používají při provádění příkazu, jména těchto dat ve formě symbolů volí programátoři a berou je . Takový programovací jazyk má jiný název - autocode nebo mnemotechnický kód.

Programovací jazyky na vysoké úrovni však nejčastěji používají pro programy ti, kteří je vytvářejí. Takový jazyk má v zásadě, stejně jako lidský jazyk, svou vlastní abecedu, totiž velké množství symbolů, které se v jazycích používají. Tyto znaky jsou potřebné k sestavení klíčových slov daného jazyka. Každé klíčové slovo má svoji funkci, stejně jako v u nás obvyklé řeči slov, která jsou složena z písmen abecedy. Klíčová slova jsou vzájemně kombinována do vět pomocí syntaktických pravidel jazyka. Každý ze všech návrhů je zodpovědný za pořadí akcí, které PC provede.

Programovací jazyk, který má vysokou úroveň, je spojovacím článkem mezi PC a uživatelem a nabízí mu komunikaci s PC způsobem, který je pro člověka nejpohodlnější. Poměrně často vám tento jazyk pomůže vybrat správnou metodu řešení problémů.

Před zahájením psaní softwaru v programovacím jazyce, který má vysokou úroveň, odborník vypracuje algoritmus pro řešení problémů, konkrétně sestavuje akční plán krok za krokem, který je třeba provést k vyřešení tohoto problému. Proto se programovací jazyky, které vyžadují předběžnou kompilaci algoritmu, nazývají jazyky algoritmického typu.

No a jsme tady, můžeme říct to hlavní. Nyní vám řekneme, jaké jsou programovací jazyky.

Jaké programovací jazyky existují

Fortran

V polovině padesátých let začali vědci vytvářet programovací jazyky. A úplně první jazyk tohoto typu se jmenoval Fortran a byl vyvinut v roce 1957. Používá se k popisu algoritmu pro řešení problémů vědeckého a technického typu pomocí digitálního počítače. Kromě toho, stejně jako první výpočetní jednotky, byl tento typ jazyka používán k provádění přírodních věd a matematických výpočtů. Tento jazyk ve vylepšeném typu přežil až do dnešní doby a je mezi moderními jazyky, které mají vysokou úroveň, nejvíce používaný ve vědeckém výzkumu. Nejběžnější možnosti jsou dnes Fortran-I2, Fortran-I4, EASIC Fortran a jejich zobecnění.

ALGOL

Pokračujeme v našem tématu programovacích jazyků. Jak jste již pochopili, nyní budeme mluvit o takovém programovacím jazyce, jako je Algol, který se objevil v letech 1958-1960. V letech 1964-1968 byl zdokonalen, takže se objevil Algol - 68. Jazyk tohoto typu vyvinula komise, ve které byli vědci z Ameriky a Evropy, a zařadila jej mezi jazyky, které mají vysokou úroveň. Pomocí jazyka tohoto typu lze algebraické vzorce snadno převést na příkazy programu. Algol byl populární nejen v Evropě, ale také v Rusku. Pro všechny programovací jazyky vytvořené po nějaké době měl tento typ jazyka znatelný dopad, a to zejména jazyk Pascal. Tento typ jazyka byl v principu, stejně jako jazyk FORTRAN, vytvořen pro řešení problémů vědeckého a technického typu. Kromě toho byl jazyk používán jako prostředek k výuce základů programování, tedy umění kompilovat software.

Cobol

Programovací jazyk Cobol vznikl v letech 1959-1960 a tento jazyk patří do třetí generace. Především je určen pro vývoj aplikací pro podnikání a pro řešení problémů ekonomického typu, pro zpracování bankovních dat, pro pojišťovny a další instituce. Cobolovým „vynálezcem“ je Grace Hopper. Obvykle je COBOL kritizován pro svou těžkopádnost a mnohomluvnost, protože jedním z cílů tvůrců tohoto jazyka bylo maximální přiblížení se anglický jazyk... Programovací jazyk měl přitom na svou dobu vynikající nástroje pro provádění činností s datovými strukturami a soubory, a to mu mimochodem zajišťovalo dlouhou životnost v podnikových aplikacích. Alespoň ve Spojených státech určitě.

Lisp

Dalším v řadě je programovací jazyk Lisp. Programovací jazyk Lisp byl vyvinut téměř ve stejné době jako programovací jazyk Cobol. Tento jazyk je založen na programové reprezentaci systémových seznamů lineárních znaků, které jsou hlavní datovou strukturou jazyka. Po Fortranu je to druhý nejstarší programovací jazyk. Hojně se používá ke zpracování informací ve formě symbolů a používá se k vytváření softwaru, který napodobuje činnost lidského mozku.

Lisp program se skládá ze sekvencí výrazů, tedy forem. Výsledkem programu je výpočet těchto výrazů, zapsaných ve formě seznamu - jedné z hlavních struktur tohoto typu jazyka. Hlavním bodem programu Lisp je „život“ v symbolickém prostoru.

ZÁKLADNÍ

Programovací jazyk BASIC byl vyvinut programátory na Dartmouth College ve Spojených státech v polovině šedesátých let. Jazyk vycházel zčásti z Fortranu 2 a zčásti z Algolu - 60, byly také provedeny doplňky, které jej usnadnily práci v režimu sdílení času a po několika letech se stal i vhodným pro zpracování textu a maticovou aritmetiku. Tento typ programovacího jazyka byl původně implementován na sálovém počítači GE-265, který podporuje velké množství terminálů. V době svého vzniku se na rozdíl od všeobecného přesvědčení jednalo o kompilovaný jazyk.

Tento druh programovacího jazyka byl navržen tak, aby studenti mohli psát programy pomocí terminálů pro sdílení času. Byl vytvořen nejen za účelem vyřešení problému, který je spojen s problematickými, staršími jazyky, ale byl také zamýšlen tak, aby jej mohli používat „jednoduchí“ uživatelé, které rychlost programu nezajímá, ale zajímá je v možnosti využití PC k řešení svých úkolů. Většina začínajících programátorů, kvůli jednoduchosti tohoto typu jazyka, začíná svou programovací cestu s ním.

Pevnost

Programovací jazyk Fort se objevil na konci šedesátých let na začátku sedmdesátých let. Tento typ jazyka byl použit v problémech ovládání různých druhů systémů poté, co na něj jeho tvůrce Moore Charles napsal software, který byl určen k ovládání radioteleskopů arizonské observatoře.

Mnoho vlastností, jako je flexibilita, interaktivita a jednoduchost „vynálezu“, učinilo Forth efektivním a atraktivním jazykem v aplikovaném výzkumu a při vytváření nástrojů tohoto typu. Zřejmými oblastmi použití tohoto typu programovacího jazyka jsou vestavěné řídicí systémy. Kromě toho, co bylo řečeno, našel uplatnění také při programování PC pod kontrolou různých druhů operačních systémů.

Pascal

V pokračování tématu si nelze nevšimnout takového druhu programovacího jazyka, jako je Pascal. Pascal byl vytvořen v roce 1972 a pojmenován po Blaise Pascalovi, který byl svého času skvělým matematikem a vynálezcem první aritmetické jednotky na světě. Švýcarský vědec a počítačový vědec Nikolaus Wirth je právem považován za tvůrce jazyka. Inovace byla využita pro výuku metodami programování. Pascal je programovací jazyk obecný účel.

Ze všech jeho funkcí lze nazvat hlavní - to jsou nejpřísnější typizace a dostupnost programovacích nástrojů strukturovaného typu. Pascal byl jedním z prvních takových jazyků. Programovací jazyk Pascal učí správnosti psaní programu a správnému vývoji metod řešení problémů a také pomáhá naučit se volit správné možnosti prezentace a organizace dat, která jsou v úloze použita. Od roku 1983 byl zaveden jazyk Pascal školení informatika na amerických středních školách.

V pokračování tématu programovacích jazyků jsme se rozhodli promluvit o jiném typu jazyka - to je jazyk Ada. Programovací jazyk Ada byl inspirován Pascalem na konci sedmdesátých let a pojmenován po Adě Lovelace, nadané matematičce. Byla to tato talentovaná žena, která v roce 1843 vysvětlila světu možnosti analytické jednotky Charlese Babbage. Tento typ jazyka byl vyvinut na objednávku, kterou vytvořilo americké ministerstvo obrany, a původně se používal k řešení problémů řízení vesmírných letů.

Programovací jazyk Ada je modulární, strukturovaný a objektově orientovaný programovací jazyk, který obsahuje vysokoúrovňové programovací nástroje pro paralelní procesy. Syntax programovací jazyk tohoto typu je převzat z Pascalu a Algolu, byl rozšířen a proveden v logickém a přísném stylu. Ada je programovací jazyk, který má silné psaní a zcela vylučuje práci s objekty, které nemají žádné typy, a také omezuje automatické převody na naprosté minimum.

Programovací jazyk C je mezi programátory zdaleka nejoblíbenější a nejpoužívanější. Tento typ programovacího jazyka pochází ze 2 jazyků, a to BCPL a B. Martin Richards v roce 1967 vytvořil BCPL jako jazyk, který byl určen pro psaní systémového softwaru a kompilátorů. Co to je, vám prozradíme níže. Ken Thompson použil DEC PDP-7 na svém PC v roce 1970 k vytvoření dřívějších verzí UNIXu. V prvním i druhém jazyce nebyly proměnné rozděleny do typů – každá datová hodnota měla v paměti jedno slovo.

Programovací jazyk C byl poprvé implementován v roce 1972 na PC DEC PDP-11. Ale dokázal si získat svou popularitu a slávu jako operační systém UNIX. Všechny dnešní hlavní operační systémy jsou napsány v C nebo C++. Programovací jazyk C je po několika desetiletích dostupný na velkém počtu počítačů. A mimochodem, stojí za zmínku, je zcela nezávislý na hardwaru.

Jazyk C se na konci sedmdesátých let stal tradičním programovacím jazykem. Tento typ jazyka je vybaven bohatými nástroji, které umožňují psát flexibilní software, který se používá ve všech typech moderních počítačů.

Prolog

No a tady se dostáváme ke konci. Naše téma programovacích jazyků zakončíme příběhem o nejnovějším jazyce v této oblasti – a jmenuje se Prolog. Tento typ jazyka je považován za programovací jazyk budoucnosti a byl vytvořen na počátku sedmdesátých let. Na vývoji se podíleli specialisté z univerzity v Marseille. Dostal název podle slov „PROGRAMOVÁNÍ V JAZYKU LOGICKY“. Programovací jazyk byl vytvořen na základě zákonů matematické logiky. Tento typ jazyka, na rozdíl od programovacích jazyků popsaných výše, není algoritmický a patří k takzvaným deskriptivním, tedy deskriptivním jazykům.

Nyní si promluvme o tom, co je to kompilátor a interpret?

Překladač a tlumočník

Vyvinout jazyk, který je vhodný pro psaní programu, nestačí. Každý jazyk musí mít překladač, což je speciální program – překladač.

Překladač je tedy program, který je určen k překladu softwaru, který byl napsán v jednom programovacím jazyce, do softwaru do jiného programovacího jazyka. Tento proces překladu se nazývá překlad. Příkladem překladače je kompilátor, což je také program. Je určen pro překlad softwaru, který je napsán v libovolném jazyce, do softwaru ve strojových kódech. Tento proces se nazývá kompilace.

Existuje další způsob, který může kombinovat procesy překladu a provádění programu, a nazývá se interpretace. Podstata procesu je následující: nejprve se převede do kódů strojového typu, poté se provede první řádek softwaru. Po dokončení prvního řádku začne překlad druhého řádku a tak dále.

Z toho tedy můžeme usoudit, že interpretace je program, který je určen pro řádkové překlady a zdrojový program.

No, zdá se, že to je pro dnešek vše, teď už víte, co jsou zač programovací jazyky a co jsou zač.

Je dobře známo, že informační technologie jsou jednou z nejrychleji rostoucích oblastí moderního života. Téměř každý den se objevují nové technologie, projekty, názvy a zkratky. A v honbě za pokrokem, ve snaze s ním držet krok, je někdy užitečné se na minutku zastavit, postavit se na špičky a rozhlédnout se. Dívat se za horizont, vzpomínat na historii a myslet na budoucnost... Abyste se mohli vrhnout do práce s čerstvou energií, ovládat nové technologie, zvyšovat vlastní efektivitu a pohodu. Dokud nebudete mít chuť znovu vstát na špičky...

K napsání tohoto článku mě přiměla diskuze, která se rozhořela na jednom z fór dotSITE poté, co se tam objevila zpráva ostře kritizující C # - jednu z hlavních součástí nové platformy .NET od Microsoftu. Zpráva obsahovala již zcela běžnou kritiku Microsoftu obecně a konkrétně (netvrdím zde, že není co Microsoftu vytknout, jen tato kritika již nakopla zuby), stejně jako některá prohlášení konkrétně o C #. V průběhu následné diskuse zaznělo několik zajímavých poznámek, některé záležitosti však zůstaly nedotčeny. To vše mě přimělo k napsání článku, ve kterém se pokouší nějakým způsobem „usmířit“ nositele názorů na exkluzivitu toho či onoho programovacího jazyka. Pokusím se nastínit historický nástin vývoje různých jazyků a vysvětlit některé obecné tendence na příkladech. Snad se mi podaří někoho přesvědčit o marnosti pořádání diskuzí, jako jsou výše uvedené. Nepředstírám objektivitu (i když se o to budu snažit) ani úplnost. Tohle je jen pokus "stát na špičkách a rozhlížet se"...

1. První univerzální jazyky

Takže, začněme. Vraťme se k počátkům vývoje výpočetní techniky. Vzpomeňme na úplně první počítače a programy pro ně. To byla éra programování přímo ve strojových kódech a hlavním paměťovým médiem byly děrné štítky a děrné pásky. Od programátorů se vyžadovalo, aby důkladně znali architekturu stroje. Programy byly vcelku jednoduché, což bylo způsobeno jednak velmi omezenými možnostmi těchto strojů, jednak velkou náročností vývoje a hlavně ladění programů přímo ve strojovém jazyce. Zároveň tento způsob vývoje dal programátorovi neuvěřitelnou moc nad systémem. Stávalo se to možné použití tak důmyslné algoritmy a způsoby organizace programů, o kterých se moderním vývojářům ani nesnilo. Například by mohla být použita (a byla použita!) taková možnost, jako je samomodifikační kód. Znalost binární reprezentace příkazů někdy umožňovala neukládat některá data odděleně, ale vkládat je do kódu jako příkazy. A to není úplný seznam technik, držení alespoň jedné z nich vás nyní okamžitě posune na úroveň extratřídního „guru“.

2. Sestavovač

Prvním významným krokem se zdá být přechod k jazyku symbolických instrukcí (dovolme si malou lyrickou odbočku: anglické jméno assembler, neboli assembler, je do ruštiny přeložen přesně termínem, který byl použit výše. Začátečník zároveň nabude dojmu, že jazyk je pojmenován po určité osobě jménem assembler. Docela vtipná situace, ne?). Zdánlivě nepříliš patrný krok – přechod k symbolickému kódování strojových instrukcí – měl ve skutečnosti velký význam. Programátor se již nemusel ponořit do chytrých způsobů kódování instrukcí na hardwarové úrovni. Navíc často v podstatě identické instrukce byly kódovány zcela odlišnými způsoby v závislosti na jejich parametrech (známým příkladem ze světa moderních počítačů je kódování instrukce mov v procesorech Intel: existuje několik zcela odlišně zakódovaných variant instrukcí; volba jedné nebo druhé možnosti závisí na operandech, ačkoli podstata prováděné operace se nemění: vložte obsah (nebo hodnotu) druhého operandu do prvního). Objevila se také možnost používat makra a štítky, což také zjednodušilo tvorbu, úpravu a ladění programů. Existovalo dokonce jisté zdání přenositelnosti – bylo možné vyvinout celou rodinu strojů s podobnou instrukční sadou a nějakým běžným assemblerem pro ně, přičemž nebylo třeba zajišťovat binární kompatibilitu.

Přechod na nový jazyk byl přitom zatížen některými negativními (alespoň na první pohled) stránkami. Bylo téměř nemožné používat všechny druhy chytrých triků podobných těm výše uvedeným. Navíc se zde poprvé v historii vývoje programování objevily dvě reprezentace programu: ve zdrojovém kódu a v kompilované podobě. Zpočátku, zatímco assembleři pouze překládali mnemotechnické pomůcky do strojových kódů, jeden mohl být snadno přeložen do jiného a zpět, ale poté, jak se objevily příležitosti, jako jsou štítky a makra, bylo rozebrání stále obtížnější. Na konci éry assembleru byla schopnost automatického překladu oběma směry zcela ztracena. V tomto ohledu bylo vyvinuto velké množství speciálních disassemblerových programů, které provádějí inverzní transformace, ale ve většině případů jen stěží dokážou oddělit kód a data. Všechny logické informace (názvy proměnných, štítky atd.) jsou navíc nenávratně ztraceny. V případě problému dekompilace vysokoúrovňových jazyků jsou příklady uspokojivého řešení problému poměrně vzácné.

3. Fortran

V roce 1954 v útrobách korporace IBM vytvořila skupina vývojářů vedená Johnem Backusem programovací jazyk Fortran.

Význam této události lze jen stěží přeceňovat. Je to první programovací jazyk na vysoké úrovni. Poprvé mohl programátor skutečně abstrahovat od specifik architektury strojů. Klíčová myšlenka, která odlišuje nový jazyk z assembleru existoval koncept podprogramů. Připomeňme, že toto moderní počítače podporují podprogramy na úrovni hardwaru, poskytující příslušné instrukce a datové struktury (stack) přímo na úrovni assembleru, v roce 1954 to bylo zcela špatně. Kompilace Fortranu proto v žádném případě nebyla triviálním procesem. Syntaktická struktura jazyka byla navíc pro strojové zpracování poměrně složitá, především kvůli tomu, že se vůbec nepoužívaly mezery jako syntaktické jednotky. To vytvořilo mnoho příležitostí pro skryté chyby, jako jsou:

Ve Fortranu následující konstrukce popisuje "cyklus for až do štítku 10, když se index změní z 1 na 100": DO 10 I = 1 100 Pokud zde nahradíte čárku tečkou, získáte operátor přiřazení: DO10I = 1,100 It říká se, že taková chyba způsobila výbuch rakety během startu!

Jazyk Fortran byl (a dodnes se používá) pro vědecké výpočty. Trpí absencí mnoha známých jazykových konstruktů a atributů, kompilátor prakticky nijak nekontroluje syntakticky správný program z hlediska sémantické správnosti (typová korespondence apod.). Postrádá podporu pro moderní způsoby strukturování kódu a dat. Sami vývojáři si toho byli vědomi. Podle samotného Backuse byli postaveni před úkol vyvinout spíše kompilátor než jazyk. Pochopení nezávislého významu programovacích jazyků přišlo později.

Příchod Fortranu se setkal s ještě zuřivější kritikou než zavedení assembleru. Programátory vyděsil pokles efektivity programů kvůli použití mezičlánku v podobě kompilátoru. A tyto obavy byly opodstatněné: skutečně dobrý programátor s největší pravděpodobností při řešení nějakého malého úkolu ručně napíše kód, který funguje rychleji než kód získaný kompilací. Po nějaké době došlo k pochopení, že realizace velkých projektů není možná bez použití jazyků na vysoké úrovni. Síla počítačů rostla a bylo možné se vyrovnat s poklesem efektivity, který byl dříve považován za hrozivý. Výhody jazyků na vysoké úrovni se staly tak zřejmé, že přiměly vývojáře k vytváření nových jazyků, stále dokonalejších.

4. Cobol

V roce 1960 byl vytvořen programovací jazyk Cobol. Byl koncipován jako jazyk pro vytváření komerčních aplikací a stal se jím. V Cobolu jsou napsány tisíce komerčních aplikací. Charakteristickým rysem jazyka je schopnost efektivně pracovat s velkým množstvím dat, což je typické pro komerční aplikace. Obliba Kobolu je tak vysoká, že se i nyní se všemi jeho nedostatky (co se týče struktury a designu Kobol v mnohém podobá Fortranu) objevují jeho nové dialekty a implementace. Tak se nedávno objevila implementace Cobolu kompatibilní s Microsoft .NET, která si pravděpodobně vyžádala zavedení některých vlastností objektově orientovaného jazyka do jazyka.

V roce 1964 vytvořila stejná společnost IBM jazyk PL / 1, který měl ve většině aplikací nahradit Cobol a Fortran. Jazyk disponoval výjimečnou bohatostí syntaktických konstrukcí. Poprvé zavedl zpracování výjimek a podporu souběžnosti. Je třeba poznamenat, že syntaktická struktura jazyka byla extrémně složitá. Mezery již byly použity jako oddělovače syntaxe, ale klíčová slova nebyly rezervovány. Konkrétně následující řádek je naprosto normální operátor PL / 1: IF ELSE = THEN THEN THEN; JINAK JINAK

Kvůli těmto vlastnostem byl vývoj kompilátoru pro PL / 1 extrémně obtížný. Jazyk se nikdy nestal populárním mimo svět IBM.

6. ZÁKLADNÍ

V roce 1963 byl na Dartmouth College vytvořen programovací jazyk BASIC (Beginners' All-Purpose Symbolic Instruction Code). Jazyk byl koncipován především jako výukový nástroj a jako první výukový programovací jazyk. Předpokládalo se, že je snadno interpretovatelný a kompilovatelný. Musím říci, že BASIC se skutečně stal jazykem, ve kterém se lidé učí programovat (alespoň to bylo před pár lety; nyní tuto roli hraje Pascal). Bylo vytvořeno několik výkonných implementací BASIC, které podporují nejmodernější koncepty programování (nejvýraznějším příkladem je Microsoft Visual Basic).

7. Algol

V roce 1960 byl týmem vedeným Peterem Naurem vytvořen programovací jazyk Algol. Tento jazyk dal vzniknout celé rodině jazyků podobných Algolu (nejvýznamnějším představitelem je Pascal). V roce 1968 se objevil novou verzi Jazyk. Nenašel tak široké praktické uplatnění jako první verze, ale v kruzích teoretiků byl velmi oblíbený. Jazyk byl docela zajímavý, protože měl v té době mnoho jedinečných vlastností.

8. Další vývoj programovací jazyky

Na tomto místě bych se raději zastavil a uvedl několik poznámek. Vytvoření každého z výše uvedených jazyků (s možnou výjimkou Algolu) bylo diktováno některými praktickými požadavky. Tyto jazyky sloužily jako základ pro pozdější vývoj. Všechny představují stejné programovací paradigma. Následující jazyky šly ve svém vývoji výrazně dále, k hlubší abstrakci.

Informace o pozdějších jazycích podám ve formě popisů jazykových rodin. To vám umožní lépe sledovat vztah mezi jednotlivými jazyky.

9. Jazyky podobné Pascalu

V roce 1970 vytvořil Niklaus Wirth programovací jazyk Pascal. Jazyk je pozoruhodný tím, že jde o první rozšířený jazyk pro strukturované programování (prvním, přísně vzato, byl Algol, ale ten nebyl tak rozšířený). Operátor nepodmíněného skoku poprvé přestal hrát zásadní roli v řízení pořadí provádění příkazů. Tento jazyk také zavádí silnou kontrolu typu, která vám umožňuje identifikovat mnoho chyb v době kompilace.

Negativní vlastností jazyka byl nedostatek prostředků pro rozdělení programu do modulů. Wirth si toho byl vědom a vyvinul jazyk Modula-2 (1978), ve kterém se myšlenka modulu stala jedním z klíčových konceptů jazyka. V roce 1988 byla představena Modula-3 s přidáním objektově orientovaných funkcí. Oberon a Oberon-2 jsou logickým pokračováním Pascalu a Moduly. Vyznačují se pohybem směrem k objektové a komponentní orientaci.

10. Jazyky podobné C

V roce 1972 vytvořili Kernighan a Ritchie programovací jazyk C. Byl vytvořen jako jazyk pro vývoj operačního systému UNIX. C se často nazývá „přenosný assembler“, což znamená, že vám umožňuje manipulovat s daty téměř stejně efektivně, jako můžete v jazyce symbolických instrukcí, a zároveň poskytuje strukturované řídicí konstrukce a abstrakce na vysoké úrovni (struktury a pole). S tím je stále spojena jeho nesmírná obliba. A to je právě jeho Achillova pata. Kompilátor C je velmi slabý v řízení typu, takže je velmi snadné napsat navenek naprosto správný, ale logicky chybný program.

V roce 1986 vytvořil Bjarne Stroustrup první verzi jazyka C++, přidal do jazyka C objektově orientované funkce převzaté ze Simuly (viz níže) a opravil některé chyby a špatná rozhodnutí jazyka. Jazyk C++ se v současné době neustále zlepšuje, takže v roce 1998 byla vydána nová (třetí) verze standardu obsahující některé poměrně významné změny. Jazyk se stal základem pro rozvoj moderních velkých a komplexních projektů. Má však a slabé stránky vyplývající z požadavků na účinnost.

V roce 1995 v Sun Microsystems vytvořili Ken Arnold a James Gosling jazyk Java... Zdědilo syntaxi C a C++ a zbavilo se některých nepříjemných vlastností C++. Charakteristickým rysem jazyka je kompilace do kódu nějakého abstraktního stroje, pro který je pak napsán emulátor (Java Virtual Machine) pro reálné systémy. Java navíc nemá ukazatele a vícenásobnou dědičnost, což výrazně zlepšuje spolehlivost programování.

V letech 1999-2000 Microsoft vytvořil jazyk C #. Je docela podobná Javě (a byla koncipována jako alternativa k Javě), ale má také charakteristické rysy. Zaměřuje se především na vývoj vícesložkových internetových aplikací.

11. Jazyky Ada a Ada 95

V roce 1983 vznikl jazyk Ada pod záštitou amerického ministerstva obrany. Jazyk je pozoruhodný v tom, že ve fázi kompilace lze odhalit mnoho chyb. Kromě toho podporuje mnoho aspektů programování, které jsou často ponechány na milost a nemilost operačního systému (souběh, zpracování výjimek). V roce 1995 byla přijata jazyková norma Ada 95, která se vyvíjí předchozí verze přidáním objektové orientace a opravou některých nepřesností. Oba tyto jazyky nejsou široce používány mimo vojenské a jiné rozsáhlé projekty (letectví, železniční doprava). Hlavním důvodem je obtížnost učení jazyka a poměrně těžkopádná syntaxe (mnohem těžkopádnější než Pascal).

12. Jazyky zpracování dat

Všechny výše uvedené jazyky jsou jazyky pro všeobecné použití v tom smyslu, že nejsou cílené ani optimalizované pro použití jakýchkoli specifických datových struktur nebo pro použití v žádných konkrétních oblastech. Bylo vyvinuto velké množství jazyků zaměřených na poměrně specifické aplikace. Níže je krátká recenze takové jazyky.

V roce 1957 byl učiněn pokus vytvořit jazyk pro popis matematického zpracování dat. Jazyk byl pojmenován APL (Application Programming Language). Jeho charakteristickým znakem bylo použití matematické symboly(což znesnadňovalo použití na textových terminálech; vzhled grafických rozhraní tento problém odstranil) a velmi výkonná syntaxe, která umožňovala provádět mnoho netriviálních operací přímo na složitých objektech, aniž by bylo nutné je rozdělovat na komponenty. Širokému použití bylo zabráněno, jak již bylo uvedeno, použitím nestandardních symbolů jako prvků syntaxe.

14. Snobol a ikona

V roce 1962 se objevil jazyk Snobol (a v roce 1974 jeho nástupce Icon), určený pro zpracování řetězců. Ikona se syntaxí podobá C a Pascalu zároveň. Rozdíl spočívá v přítomnosti výkonných vestavěných funkcí pro práci s řetězci a speciální sémantiky spojené s těmito funkcemi. Moderním protějškem Icon a Snobol je Perl, jazyk pro zpracování řetězců a textu, který přidal některé objektově orientované funkce. Je považován za velmi praktický jazyk, nicméně postrádá eleganci.

15. SETL

V roce 1969 vznikl jazyk SETL - jazyk pro popis operací na množinách. Hlavní datovou strukturou v jazyce je množina a operace jsou podobné matematickým operacím na množinách. Užitečné při psaní programů, které pracují se složitými abstraktními objekty.

16. Lisp a podobné jazyky

V roce 1958 se objevil jazyk Lisp – jazyk pro zpracování seznamů. Docela se rozšířil v systémech umělé inteligence. Má několik potomků: Planner (1967), Scheme (1975), Common Lisp (1984). Mnoho z jeho vlastností bylo zděděno. moderní jazyky Funkcionální programování.

17. Skriptovací jazyky

V poslední době se díky rozvoji internetových technologií, rozšířenému používání vysoce výkonných počítačů a řadě dalších faktorů rozšířily takzvané skriptovací jazyky. Tyto jazyky byly původně zamýšleny k použití jako vnitřní řídicí jazyky ve všech druzích komplexních systémů. Mnohé z nich však přesáhly rámec své původní aplikace a nyní se používají ve zcela jiných oblastech. Charakteristickými rysy těchto jazyků jsou za prvé jejich interpretovatelnost (kompilace je buď nemožná nebo nežádoucí), za druhé jednoduchost syntaxe a za třetí snadná rozšiřitelnost. Jsou tedy ideální pro časté používání. upravitelné programy, velmi malé programy nebo v případech, kdy provedení jazykových příkazů zabere čas, který je nesrovnatelný s časem jejich analýzy. Takových jazyků bylo vytvořeno poměrně velké množství, uvádíme pouze ty hlavní a nejčastěji používané.

18. JavaScript

Jazyk byl vytvořen společností Netscape Communications jako jazyk pro popis komplexního chování webových stránek. Původně se jmenoval LiveScript, název byl z marketingových důvodů změněn. Interpretováno prohlížečem při zobrazení webové stránky. Syntaxe je podobná Javě a (vzdáleně) C/C++. Má schopnost používat funkcionalitu objektů zabudovanou do prohlížeče, ale není to skutečně objektově orientovaný jazyk.

19. VBScript

Jazyk byl vytvořen společností Microsoft v mnoha ohledech jako alternativa k JavaScriptu. Má podobnou oblast použití. Syntakticky podobný Visual Basicu (a je jeho oříznutou verzí). Stejně jako JacaScript jej spouští prohlížeč při vykreslování webových stránek a má stejný stupeň objektové orientace.

20. Perl

Jazyk byl vytvořen, aby pomohl systémovému administrátorovi operačního systému Unix zpracovávat různé druhy textů a zvýraznit potřebné informace. Vyvinutý jako výkonný nástroj pro zpracování textu. Je to interpretovaný jazyk a je implementován na téměř všech existujících platformách. Používá se pro zpracování textu a také pro dynamické generování webových stránek na webových serverech.

21. Python

Interpretovaný objektově orientovaný programovací jazyk. Strukturou a rozsahem je podobný Perlu, ale je méně rozšířený a je přesnější a logičtější. Existují implementace pro většinu stávajících platforem.

22. Objektově orientované jazyky

Objektově orientovaný přístup, který nahradil strukturovaný, se poprvé neobjevil v C++, jak se někteří domnívají. Existuje celá řada čistě objektově orientovaných jazyků, bez kterých by náš průzkum nebyl úplný.

23. Simula

První objektově orientovaný jazyk byl Simula (1967). Tento jazyk byl určen pro modelování různých objektů a procesů a objevily se v něm objektově orientované funkce právě pro popis vlastností objektů modelu.

24. Smalltalk

Popularitu objektově orientovaného programování přinesl jazyk Smalltalk vytvořený v roce 1972. Jazyk byl určen pro návrh komplexních grafických rozhraní a byl prvním skutečně objektově orientovaným jazykem. V něm jsou třídy a objekty jedinými programovacími konstrukcemi. Velkou nevýhodou Smalltalku jsou velké paměťové nároky a špatný výkon výsledných programů. To je způsobeno špatnou implementací objektově orientovaných funkcí. Popularita jazyků C++ a Ada 95 je způsobena právě tím, že objektová orientace je implementována bez výrazného snížení výkonu.

25. Eiffel

Existuje jazyk s velmi dobrou implementací objektové orientace, který není postaven na žádném jiném jazyce. Toto je jazyk Eiffela (1986). Jako čistě objektově orientovaný programovací jazyk také zlepšuje spolehlivost programu pomocí „kontrolních asercí“.

26. Paralelní programovací jazyky

Většina počítačových architektur a programovacích jazyků je zaměřena na sekvenční provádění příkazů programu. V současné době však existují softwarové a hardwarové systémy, které umožňují organizovat paralelní provádění různých částí stejného výpočetního procesu. Programování takových systémů vyžaduje speciální podporu programovacích nástrojů, zejména programovacích jazyků. Některé univerzální jazyky obsahují prvky podpory paralelismu, ale programování skutečně paralelních systémů někdy vyžaduje speciální techniky.

27. Occamův jazyk

Jazyk Occam vznikl v roce 1982 a je určen pro programování transputerů – víceprocesorových systémů pro distribuované zpracování dat. Popisuje interakci paralelních procesů ve formě kanálů - způsoby přenosu informací z jednoho procesu do druhého. Všimněte si zvláštnosti syntaxe jazyka Шccam - v něm jsou sekvenční a paralelní pořadí provádění operátorů stejné a musí být výslovně označeny klíčovými slovy PAR a SEQ.

28. Linda Parallel Computing Model

V roce 1985 byl navržen paralelní výpočetní model Linda. Jeho hlavním úkolem je organizovat interakci mezi souběžně běžícími procesy. Toho je dosaženo použitím globálního prostoru n-tice. Proces tam může vložit n-tici s daty (tedy sbírku několika, případně heterogenních dat) a jiný proces může čekat, až se n-tice objeví v oblasti n-tice a po jejím objevení n-tici číst s možným následným vymazání. Všimněte si, že proces může například umístit n-tici do rozsahu a ukončit ji a jiný proces může tuto n-tici po chvíli použít. To umožňuje asynchronní komunikaci. Je zřejmé, že pomocí takového modelu lze emulovat i synchronní interakci. Linda je paralelní výpočetní model a lze jej přidat do jakéhokoli programovacího jazyka. Existují poměrně účinné implementace Lindy, které řeší problém globální n-ticové oblasti s potenciálně neomezenou pamětí.

29. Neimperativní jazyky

Všechny dříve diskutované jazyky mají jednu věc společnou: jsou imperativní. To znamená, že programy na nich ve výsledku představují krok za krokem popis řešení konkrétního problému. Můžete zkusit popsat pouze formulaci problému a problém svěřit kompilátoru. Existují dva hlavní přístupy k rozvoji této myšlenky: funkční a logické programování.

30. Funkční jazyky

Hlavní myšlenkou funkcionálního programování je reprezentace programu ve formě matematických funkcí (tj. funkcí, jejichž hodnota je určena pouze jejich argumenty, nikoli kontextem provádění). Operátor přiřazení se v takových jazycích nepoužívá (nebo se jeho použití alespoň nedoporučuje). Povinné schopnosti jsou zpravidla k dispozici, ale jejich použití je obklopeno vážnými omezeními. Existují jazyky s línou a energickou sémantikou. Rozdíl je, zhruba řečeno, v tom, že v jazycích s energetickou sémantikou se výpočty provádějí na stejném místě, kde jsou popsány, a v případě líné sémantiky se výpočty provádějí pouze tehdy, když je to skutečně nutné. První jazyky mají efektivnější implementaci, zatímco druhé mají lepší sémantiku.

Mezi jazyky s energickou sémantikou zmiňujeme ML a dva jeho moderní dialekty – standardní ML (SML) a CaML. Ten má objektově orientovaného potomka - Objective CaML (O'CaML).

Mezi jazyky s línou sémantikou jsou nejběžnější dva: Haskell a jeho jednodušší dialekt Clean.

Další informace o funkčních jazycích naleznete ZDE:

31. Logické programovací jazyky

Programy v logických programovacích jazycích jsou vyjádřeny jako vzorce matematické logiky a kompilátor se z nich snaží odvodit důsledky.

Předchůdcem většiny logických programovacích jazyků je jazyk Prolog (1971). Má řadu potomků – Parlog (1983, zaměřený na paralelní výpočty), Delta Prolog atd. Logické programování je stejně jako funkcionální programování samostatnou oblastí programování a pro další podrobnosti odkazujeme čtenáře na odbornou literaturu.

32. Místo závěru

Dovolím si vyzdvihnout nějaký obecný trend ve vývoji programovacích jazyků. Bystrý čtenář už asi dávno tušil, co se chystám říct. Jazyky se vyvíjejí směrem k více a více abstrakci. A to je doprovázeno poklesem účinnosti. Otázka zní: stojí abstrakce za to? Odpověď: stojí to za to. Stojí to za to, protože zvýšení úrovně abstrakce znamená zvýšení úrovně spolehlivosti programování. S nízkou účinností lze bojovat vytvářením dalších rychlé počítače... Pokud jsou požadavky na paměť příliš vysoké, můžete množství zvýšit. To samozřejmě vyžaduje čas a peníze, ale dá se to vyřešit. Ale existuje jen jeden způsob, jak se vypořádat s chybami v programech: je třeba je opravit. Ještě lépe, nezavazujte se. Ještě lépe je udělejte co nejobtížnější. A přesně k tomu směřuje veškerý výzkum v oblasti programovacích jazyků. A musíte se smířit se ztrátou účinnosti.

Účelem této recenze bylo pokusit se dát čtenáři představu o celé rozmanitosti existující jazyky programování. Mezi programátory často panuje názor na „obecnou použitelnost“ konkrétního jazyka (C, C ++, Pascal atd.). Tento názor vzniká z několika důvodů: nedostatek informací, zvyk, setrvačnost myšlení. První faktor jsem se snažil mírně kompenzovat. K tomu zbytku mohu jen říci, že skutečný profesionál by se měl neustále snažit zvyšovat svou odbornou kvalifikaci. A kvůli tomu se nemusíte bát experimentovat. Co když tedy všichni kolem píší v C / C ++ / VB / Pascal / Perl / Java / ... (podtrhněte nutné)? Proč nezkusit něco nového? Co když se ukáže, že je to efektivnější? Samozřejmě, než se rozhodnete použít nový jazyk, musíte pečlivě prostudovat všechny jeho vlastnosti, včetně přítomnosti efektivní implementace, schopnosti interakce se stávajícími moduly atd., a teprve poté se rozhodnout. Samozřejmě vždy existuje riziko, že se vydáte špatnou cestou, ale ... Nemýlí se jen ten, kdo nic nedělá.

A dál. Slyšel jsem a někdy se účastnil diskuzí typu „jazyk A je lepší než jazyk B“. Doufám, že po přečtení této recenze se mnozí přesvědčí o nesmyslnosti podobných sporů. Maximálně lze diskutovat o výhodách jednoho jazyka oproti druhému při řešení konkrétního problému za určitých podmínek. Tady je skutečně někdy o čem polemizovat. A rozhodnutí někdy zdaleka není samozřejmé. Nicméně argumentovat "obecně" je zjevný nesmysl.

Tento článek má být reakcí na ty, kteří křičí „jazyk X MUST DIE“. Doufám, že odpověď se ukázala jako zcela adekvátní a přesvědčivá. Doufám také, že článek má kromě polemické i poznávací hodnotu.

Materiál z Wikipedie

Programovací jazyk- formální znakový systém určené k nahrávání počítačové programy... Programovací jazyk definuje množinu lexikální , syntaktický a sémantický pravidla, která určují vzhled programu a akce, které bude exekutor (obvykle počítač) pod jeho kontrolou provádět.

Ve 40. letech 20. století se zároveň objevily elektrické digitální počítače a byl vyvinut jazyk, který lze považovat za první počítačový programovací jazyk na vysoké úrovni – “ Plankalkül„Vytvořil německý inženýr K. Zuse od Pro 1945 let.

Od poloviny 50. let se objevují jazyky třetí generace, jako např Fortran , Lisp a Cobol... Programovací jazyky tohoto typu jsou abstraktnější (nazývají se také „jazyky vysoké úrovně“) a univerzální, nemají pevnou závislost na konkrétním hardwarová platforma a strojní instrukce na něm použité. Program v jazyce vyšší úrovně lze spustit (alespoň teoreticky, v praxi obvykle existuje řada specifických verzí nebo dialektů implementace jazyka) na jakémkoli počítači, na kterém je k dispozici překladač pro tento jazyk (a nástroj, který překládá program do jazyka stroje, poté to může provést procesor).

Aktualizované verze uvedených jazyků se dodnes používají. software a každý z nich měl určitý vliv na následný vývoj programovacích jazyků. Pak se koncem 50. let objevil ALGOL, který také posloužil jako základ pro řadu dalšího vývoje v této oblasti. Je třeba poznamenat, že formát a použití raných programovacích jazyků byly do značné míry ovlivněny rozhraní omezení .

Dokonalost

Stává se důležitou oblastí práce vizuální (grafické) programovací jazyky, ve kterém je proces „psaní“ programu jako textu nahrazen procesem „kreslení“ (sestavení programu ve formě diagramu) na obrazovce počítače. Vizuální jazyky poskytují jasnost a lepší lidské vnímání logiky programu.

Standardizace programovacích jazyků

Pro mnoho rozšířených programovacích jazyků, mezinárodní standardy... Konkrétní organizace pravidelně aktualizují a zveřejňují specifikace a formální definice příslušného jazyka. V rámci těchto komisí pokračuje vývoj a modernizace programovacích jazyků a řeší se otázky rozšiřování či podpory stávajících i nových jazykových konstrukcí.

Typy dat

Moderní digitální počítače jsou binární a data jsou uložena v binárním (binárním) kódu (ačkoli implementace v jiných číselných systémech jsou také možné). Tato data obvykle odrážejí informace ze skutečného světa (jména, bankovní účty, míry atd.) představující koncepty na vysoké úrovni.

Speciálním systémem, kterým jsou data v programu organizována, je typový systém programovací jazyk; vývoj a studium typových systémů je známé jako teorie typu... Jazyky lze rozdělit na mít statické psaní a dynamické psaní , a beztypové jazyky (například, Forth ).

Staticky typované jazyky lze dále rozdělit na jazyky s povinné prohlášení kde každá deklarace proměnné a funkce má povinnou deklaraci typu a jazyky s odvozené typy... Někdy se nazývají dynamicky typované jazyky latentně napsaný.

Datové struktury

Typové systémy ve vyšších jazycích umožňují definici složitých, složených typů, tzv datové struktury... Typicky jsou strukturované datové typy tvořeny jako kartézský součin základní (atomové) typy a dříve definované kompozitní typy.

Základní datové struktury (seznamy, fronty, hashovací tabulky, binární stromy a páry) jsou ve vyšších jazycích často reprezentovány speciální syntaxí. Taková data jsou strukturována automaticky.

Sémantika programovacích jazyků

Existuje několik přístupů k definování sémantiky programovacích jazyků.

Nejrozšířenější odrůdy z následujících tří jsou: operační, derivační (axiomatická) a denotační (matematická).

  • Při popisu sémantiky uvnitř provozní provádění konstrukcí programovacího jazyka je obvykle interpretováno pomocí nějakého imaginárního (abstraktního) počítače.
  • Axiomatická sémantika popisuje důsledky provádění jazykových konstruktů pomocí jazyka logiky a specifikování pre- a post-podmínek.
  • Zubní sémantika operuje s pojmy typickými pro matematiku – množinami, korespondencemi, ale i úsudky, výroky atp.

Programovací paradigma

Programovací jazyk je postaven v souladu s jedním nebo druhým základem výpočetní model a paradigma programování.

Navzdory skutečnosti, že většina jazyků je zaměřena na imperativní výpočetní model dané von Neumannovou počítačovou architekturou, existují i ​​jiné přístupy. Můžeme zmínit jazyky se skládaným výpočetním modelem ( Pevnost , Faktor , PostScript atd.), stejně jako funkční (Lisp , Haskell , , , REFAL na základě výpočtového modelu zavedeného sovětským matematikem A.A. Markovem ml.) a logické programování (Prolog).

V současné době se také aktivně rozvíjejí deklarativní a vizuální programovací jazyky stejně jako vývojové metody a nástroje jazyky specifické pro daný problém(cm. Jazykově orientované programování).

Způsoby implementace jazyků

Programovací jazyky mohou být implementovány jako sestaven , interpretován a vložené.

Program v kompilovaném jazyce používající kompilátor(speciální program) je převeden na ( sestaví) do strojového kódu (souboru instrukcí) pro daný typ procesoru a následně sestaven do spustitelný modul, který lze spustit jako samostatný program. Jinými slovy, kompilátor překládá zdrojový kód programu z vysokoúrovňového programovacího jazyka do binárních kódů instrukcí procesoru.

Pokud je program napsán v interpretovaném jazyce, pak tlumočník přímo provádí ( vykládá) původní text bez předběžného překladu. V tomto případě zůstane program v původním jazyce a nelze jej spustit bez tlumočníka. Počítačový procesor lze v tomto ohledu nazvat interpretem strojového kódu.

Rozdělení na kompilované a interpretované jazyky je podmíněné. Takže pro jakýkoli tradičně kompilovaný jazyk, jako je např Pascal, můžete napsat tlumočníka. Navíc většina moderních „čistých“ interpretů přímo neprovádí jazykové konstrukce, ale kompiluje je do nějaké střední reprezentace na vysoké úrovni (například s proměnnou dereferencí a makroexpanzí).

Můžete vytvořit kompilátor pro jakýkoli interpretovaný jazyk — například nativně interpretovaný jazyk Lisp lze zkompilovat bez jakýchkoli omezení. Kód vytvořený za běhu lze také dynamicky kompilovat za běhu.

Kompilované programy zpravidla běží rychleji a nevyžadují doplňkové programy, protože již byly přeloženy do strojového jazyka. Zároveň při každé změně textu programu je potřeba jej překompilovat, což zpomaluje proces vývoje. Navíc zkompilovaný program může běžet pouze na stejném typu počítačů a zpravidla pod stejným operačním systémem, pro který byl kompilátor navržen. Vytvořit spustitelný soubor pro jiný typ stroje je vyžadována nová kompilace.

Interpretované jazyky mají určitá specifika další funkce(viz výše), navíc na nich lze programy spouštět ihned po změně, což usnadňuje vývoj. Často lze spustit program v interpretovaném jazyce odlišné typy stroje a operační systémy bez dalšího úsilí.

Interpretované programy jsou však znatelně pomalejší než programy zkompilované, navíc je nelze spustit bez překladačového programu.

Tento přístup v jistém smyslu umožňuje využívat výhody jak interpretů, tak kompilátorů. Je třeba zmínit, že existují jazyky, které mají jak tlumočník, tak kompilátor ( Pevnost).

Nízkoúrovňové programovací jazyky

První počítače musely být naprogramovány binárními strojovými kódy. Programování tímto způsobem je však poměrně časově náročný a těžkopádný úkol. Pro zjednodušení tohoto úkolu se začaly objevovat nízkoúrovňové programovací jazyky, které umožňovaly nastavovat strojové instrukce v lidsky čitelné podobě. Chcete-li je převést na binární kód byly vytvořeny speciální programy - překladatelé.

Příkladem jazyka nízké úrovně je assembler... Nízkoúrovňové jazyky jsou typově specifické procesor a vzít v úvahu jeho zvláštnosti, proto k portování programu v assembleru na jinou hardwarovou platformu je nutné jej téměř kompletně přepsat. Existují také určité rozdíly v syntaxi programů pro různé kompilátory. Pravda, centrální procesorové jednotky pro firemní počítače AMD a Intel prakticky kompatibilní a liší se pouze některými specifickými příkazy. Specializované procesory pro jiná zařízení, například grafické karty a telefony, však obsahují značné rozdíly.

Nízkoúrovňové jazyky se zpravidla používají k psaní malých systémových programů, ovladačů zařízení, modulů rozhraní s nestandardním vybavením, programování specializovaných mikroprocesorů, kdy nejdůležitějšími požadavky jsou kompaktnost, rychlost a schopnost. přímý přístup na hardwarové zdroje.

Vysokoúrovňové programovací jazyky

Nejsou v nich zohledněny zvláštnosti konkrétních počítačových architektur, vytvořené aplikace se proto snadno přenášejí z počítače na počítač. Ve většině případů stačí program jednoduše překompilovat pro konkrétní architekturu počítače a operační systém... Je mnohem snazší vyvíjet programy v takových jazycích a je zde méně chyb. Doba vývoje programu je výrazně zkrácena, což je důležité zejména při práci na velkých softwarových projektech.

V komunitě vývojářů se nyní věří, že programovací jazyky, které mají přímý přístup k paměti a registrům nebo mají vložky v assembleru, by měly být považovány za programovací jazyky s nízkou úrovní abstrakce. Proto většina jazyků, které byly před rokem 2000 považovány za jazyky na vysoké úrovni, již nejsou považovány za jazyky na vysoké úrovni.

Nevýhodou některých jazyků na vysoké úrovni je velká velikost programy versus programy v nízkoúrovňových jazycích. Na druhou stranu pro algoritmicky a strukturálně složité programy při použití superkompilace výhoda může být na straně jazyků na vysoké úrovni. Samotný text programů ve vysokoúrovňovém jazyce je menší, pokud jej však vezmeme v bajtech, pak bude kód původně napsaný v assembleru kompaktnější. Proto se jazyky na vysoké úrovni používají hlavně k vývoji softwaru pro počítače a zařízení, které mají velké množství paměti. A různé podtypy assembleru se používají pro programování dalších zařízení, kde je velikost programu kritická.

Použité symboly

Moderní programovací jazyky jsou navrženy pro použití ASCII, tedy dostupnost všech grafický ASCII znaky jsou nezbytnou a postačující podmínkou pro záznam jakékoli jazykové konstrukce. Manažeři ASCII znaky používá se omezeně: povolen je pouze návrat vozíku CR, posun řádku LF a horizontální tabelátor HT (někdy také vertikální tabelátor VT a přechod na další stránku FF).

Rané jazyky, které se objevily během éry 6bitové znaky používal omezenější sadu. Fortranská abeceda například obsahuje 49 znaků (včetně mezery): 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 = + - * / (). , $ ":

Pozoruhodnou výjimkou je jazyk APL který používá spoustu speciálních znaků.

Použití jiných než ASCII znaků (jako jsou znaky KOI8-R nebo znaky Unicode) je závislé na implementaci: někdy jsou povoleny pouze v komentářích a znakových/řetězcových konstantách a někdy jsou povoleny pouze v identifikátorech. PROTI SSSR byly jazyky, kde byla všechna klíčová slova napsána ruskými písmeny, ale takové jazyky nezískaly velkou popularitu (výjimkou je Vestavěný programovací jazyk 1C: Enterprise).

Rozšíření znakové sady je omezeno skutečností, že mnoho projektů vývoje softwaru je mezinárodních. Bylo by velmi obtížné pracovat s kódem, kde jsou názvy některých proměnných psány ruskými písmeny, jiné arabsky a další čínskými znaky. Současně, pro práci s textovými daty, programovacími jazyky nové generace ( Delphi 2006 , , Jáva) Podpěra, podpora Unicode.

Kategorie programovacích jazyků

Matematicky zdravé programovací jazyky

To jsou jazyky, jejichž sémantika je Přímo ztělesnění určitého matematického modelu, mírně upraveného (bez porušení integrity), aby byl praktičtějším jazykem pro vývoj skutečných programů. Do této kategorie spadá pouze několik jazyků, většina jazyků je navržena jako priorita na základě možnosti efektivního překladu do Turingův stroj a mají jen určité podmnožina ve svém složení ztělesňuje jedno nebo druhé matematický model- z