Stručná historie programovacích jazyků. Programovací jazyky: proč se objevily, významní představitelé, jak si vybrat jazyk

Poznámka 1

Pro fungování prvních programů bylo nutné nastavit klíčové spínače na předním panelu výpočetního zařízení. Touto metodou lze přirozeně psát pouze malé programy. Jeden z prvních pokusů o vytvoření plnohodnotného programovacího jazyka učinil německý vědec Konrad Zuse, který v období 1943-1945. vyvinul jazyk Plankalkul. Plankalkul byl velmi nadějný jazyk, který byl vlastně jazykem vysoké úrovně, ale během války se mu nedostalo řádné praktické implementace a jeho popis byl zveřejněn až v roce 1972.

strojový kód. assembler

Historie programovacích jazyků začíná vývojem strojového jazyka: jazyka logické nuly a jedničky. Psaní tímto jazykem bylo velmi obtížné a zdlouhavé.

Usnadnit práci programátorům na konci 40. let. jazyk assembleru byl vyvinut. Místo binárních čísel, která označovala jakýkoli příkaz, se psala krátká slova nebo zkratky. Jazyk symbolických instrukcí je programátory považován za nízkoúrovňový programovací jazyk, protože je blízký jazyku nejnižší úrovně, strojovému jazyku. Programy napsané v assembleru přímo závisí na vlastnostech konkrétního procesoru, proto se mu říká strojově orientovaný jazyk.

Psaní programů v assembleru je poměrně obtížný úkol a je nutná i znalost počítačových zařízení. Nicméně programy v assembleru jsou nejefektivnější a nejefektivnější.

Algoritmické jazyky

V průběhu vývoje programování bylo nutné vyvinout nové, pokročilejší programovací jazyky, které by byly podobné přirozeným jazykům a umožňovaly by nepracovat přímo se strojovými instrukcemi. Staly se známými jako jazyky na vysoké úrovni. Jazyky na vysoké úrovni jsou zaměřeny na popis algoritmů, proto se nazývají algoritmické jazyky. Výhodou těchto jazyků je větší viditelnost a nezávislost na konkrétním počítači.

Protože počítač rozpoznává pouze strojový jazyk, musí být program napsaný v algoritmickém jazyce před spuštěním přeložen do tohoto jazyka speciálním programem, překladačem. Překladač obsahuje všechna pravidla algoritmického jazyka a způsoby převodu jeho různých konstrukcí do strojového jazyka. Existují dva typy vysílání:

  • Kompilace je způsob spouštění programů, při kterém se programové instrukce provádějí až po sestavení překladu celého textu programu.
  • Interpretace je způsob provádění programů, ve kterém jsou instrukce programu přeloženy a okamžitě provedeny.

Poznámka 2

Výhodou programů napsaných v algoritmickém jazyce je zjednodušení práce s programem díky relativní jednoduchosti zápisu, snadná čitelnost a možnost jeho opravy. Mezi nevýhody patří: další čas a paměť pro vysílání.

Strukturované programování

V roce 1954 byl zahájen vývoj prvního překladače jazyků na vysoké úrovni. O dva roky později se objevil jazyk Fortran (FORmula TRANslator - "překladač vzorců"). Jazyk obsahoval funkce, které značně zjednodušovaly vývoj, ale programování ve Fortranu nebylo snadným úkolem: pokud bylo v krátkých programech snadno srozumitelné, pak když šlo o velké programy, jazyk se stal nečitelným. Navzdory tomu byl jazyk docela úspěšný a vyšlo mnoho verzí.

Problémy byly vyřešeny po vývoji strukturních programovacích jazyků: mají schopnost vytvářet programové bloky, nezávislé podprogramy, podporu rekurze a lokálních proměnných a absenci operátoru nepodmíněného skoku (GoTo). Takové jazyky tedy začaly podporovat možnost rozdělení programu na jeho základní prvky.

Během deseti let bylo vytvořeno poměrně velké množství nových jazyků:

  1. Algol (1958) byl určen k psaní algoritmů, které jsou složeny z odlišných bloků;
  2. Cobol (1959) byl použit pro hromadné zpracování dat v oblastech administrativy a obchodu;
  3. Basic (1965) umožňoval psát jednoduché programy, sloužil k výuce základů programování.

Velmi málo vytvořených jazyků bylo strukturováno. Byly také vytvořeny specializované jazyky: Lisp, Prolog, Forth atd. Za zmínku stojí zejména Pascal (1970), pojmenovaný po vědci Blaise Pascalovi, který byl používán jak pro učení, tak pro řešení problémů různé složitosti. Programy Pascal jsou snadno čitelné, umožňují rychle najít a opravit chyby a byly dobře strukturované. Vše výše uvedené vedlo k jeho širokému použití a i dnes se aktivně používá ve vzdělávacích institucích.

V roce 1972 se objevil jazyk C, což byl úspěšný krok v programování. Jazyk kombinoval výhody mnoha jazyků a měl velké množství různých inovací. Široké možnosti, strukturovanost a relativní jednoduchost jeho studia umožnila, aby se jazyk rychle stal uznávaným a získal místo jednoho z hlavních jazyků.

Nástup strukturovaného programování přinesl vynikající výsledky, ale stále bylo obtížné psát dlouhé a seriózní programy.

Objektově orientované programování (OOP)

Od 70. let 20. století byly položeny základy objektově orientovaného programování (OOP), které vznikly jako důsledek rozvoje procedurálního programování, ve kterém data a podprogramy pro jejich zpracování nebyly formálně propojeny.

OOP zahrnuje následující základní pojmy:

  • Třída- model předmětu, který ještě neexistuje. Ve skutečnosti je to schéma objektu, popisující jeho strukturu.
  • Objekt– instance třídy, entity v adresním prostoru výpočetního systému, která se objeví, když je vytvořena instance třídy.
  • Abstrakce- přiřazení objektu vlastnosti, které jasně definují jeho hranice, které jej odlišují od všech ostatních objektů. Základní myšlenkou je oddělit způsob použití složených datových objektů od detailů jejich implementace jako jednodušších objektů.
  • Zapouzdření- kombinace vlastností (dat) a metod (podprogramů) ve třídě za účelem skrytí dat objektu před zbytkem programu a zajištění integrity a nezávislosti objektu (změna vlastností objektu je možná pouze pomocí speciálních třídní metody).
  • Dědictví- jazykový mechanismus, který umožňuje popsat novou třídu na základě existující třídy (nebo tříd) s přidáním nových vlastností a metod.
  • Polymorfismus– vlastnost systému používat objekty se stejným rozhraním bez získávání informací o jeho typu a vnitřní struktuře.

Poznámka 3

V roce 1967 se objevil jazyk Simula - první programovací jazyk, ve kterém byly navrženy principy objektové orientace. Podporoval práci s objekty, třídami, virtuálními metodami atd., ale všechny tyto vlastnosti nedostaly důstojné hodnocení současníků. Většinu těchto konceptů však Alan Kay a Dan Ingalls začlenili do jazyka Smalltalk, který se stal prvním rozšířeným objektově orientovaným programovacím jazykem.

V současné době je počet aplikovaných programovacích jazyků, které implementují objektově orientované paradigma, největší ve srovnání s ostatními paradigmaty. Hlavní jazyky, které podporují koncept OOP, jsou: C++, C#, Object Pascal (Delphi), Java atd.

Vývoj internetu

S rozvojem technologie WWW (World Wide Web) se internet stal velmi populárním. Bylo vytvořeno velké množství pomocných jazyků, které poskytují přístup k internetu, návrh webových stránek, přístup ke zdrojům atd.

Perl, interpretovaný jazyk, se stává rozšířeným a vyznačuje se jednoduchostí a snadnou přenositelností na jiné platformy. Je určen pro psaní aplikací a CGI skriptů různé složitosti. Jazyk Java je také široce používán a hraje významnou roli ve vývoji a fungování internetu.

V 70. letech 20. století Objevil se jazyk SQL - strukturovaný dotazovací jazyk, který byl vytvořen pro přístup a práci s databázemi.

Pro psaní kódů pro webové stránky byl vyvinut hypertextový značkovací jazyk HTML, který obsahuje příkazy pro označování a zdobení textu a grafiky. Aby byl web atraktivnější a funkčnější, používáme:

  • JavaScript skripty, které se spouštějí ve webovém prohlížeči uživatele a používají se především ke zlepšení vzhledu a dojmu z webu a provádění menších úkolů.
  • PHP skripty, které běží na straně serveru a odesílají již zpracované informace do prohlížeče uživatele. Používají se k vytváření dynamických HTML stránek, návštěvních knih, fór a anket.
  • CGI skripty, které jsou napsány primárně v Perlu, C/C++, se spouštějí na straně serveru a závisí na konkrétních akcích uživatele. Používají se stejně jako PHP skripty k vytváření dynamických HTML stránek, návštěvních knih, fór a anket.

V padesátých letech dvacátého století, s příchodem počítačů na elektronkách, začal rychlý vývoj programovacích jazyků. Počítače, které v té době stály podstatně více než vývoj jakéhokoli programu, vyžadovaly vysoce efektivní kód. Takový kód byl vyvinut ručně v jazyce assembler. V polovině 50. let byl pod vedením Johna Backuse pro IBM vyvinut algoritmický programovací jazyk FORTRAN. Navzdory skutečnosti, že již došlo k vývoji jazyků, které převáděly aritmetické výrazy na strojový kód, výchozím bodem se stalo vytvoření jazyka FORTRAN (FORmula TRANslator), který poskytuje možnost napsat výpočetní algoritmus pomocí podmíněných operátorů a operátorů vstupu / výstupu. éry algoritmických programovacích jazyků.

Na jazyk FORTRAN byly požadavky na vytvoření vysoce efektivního kódu. Proto bylo původně mnoho jazykových konstruktů vyvinuto s ohledem na architekturu IBM 407. Úspěch vývoje tohoto jazyka vedl k tomu, že výrobci jiných výpočetních systémů začali vytvářet vlastní verze překladačů. S cílem jistého možného sjednocení jazyka v té době se jazyk FORTRAN IV, vyvinutý v roce 1966, stal prvním standardem, nazvaný FORTRAN 66.

Jako alternativa k jazyku FORTRAN, původně zaměřenému na architekturu IBM, byl vyvinut ALGOL (ALGOritmický jazyk) pod vedením Petera Naura koncem 50. let. Hlavním cílem, který vývojáři tohoto jazyka sledovali, byla nezávislost na specifické architektuře výpočetního systému. Kromě toho se tvůrci jazyka ALGOL snažili vyvinout jazyk, který je vhodný pro popis algoritmů a používá zápis blízký tomu, který se používá v matematice.

Jazyky FORTRAN a ALGOL byly prvními programově orientovanými jazyky.

Jazyk PL/I, jehož první verze se objevily na počátku 60. let, byl původně zaměřen na IBM 360 a rozšířil možnosti jazyka FORTRAN o některé vlastnosti jazyka COBOL vyvinutého ve stejných letech. I přes jistou oblibu jazyka PL/I mezi programátory, kteří pracovali na počítačích IBM a strojích řady EC, je v současnosti ryze teoretický zájem.

Na konci 60. let byl pod vedením Nayarda a Dahla vyvinut jazyk Simula-67 využívající koncept uživatelsky definovaných datových typů. Ve skutečnosti je to první jazyk, který používá koncept tříd.

V polovině 70. let navrhl tento jazyk Wirth Pascal který se okamžitě stal široce používaným. Ve stejné době byly z iniciativy amerického ministerstva obrany zahájeny práce na vytvoření jazyka na vysoké úrovni, zvaného Ada – na počest Ady Lovelace, programátorky a dcery lorda Byrona. Tvorba jazyka začala definicí požadavků a vývojem specifikací. Na projektu pracovaly čtyři nezávislé skupiny, ale všechny používaly jako základ jazyk Pascal. Na počátku 80. let byl vyvinut první komerční jazykový kompilátor. Ada.

Univerzální programovací jazyk S byl vyvinut v polovině 70. let Denisem Ritchiem a Kenem Thompsonem. Tento jazyk se stal oblíbeným systémovým programovacím jazykem a kdysi se používal k psaní jádra operačního systému UNIX. Standard jazyka C začala vyvíjet pracovní skupina ANSI Standards Institute v roce 1982. Mezinárodní standard pro jazyk C byl přijat v roce 1990. Jazyk C tvořil základ pro vývoj programovacích jazyků C++ a Java.

Spolu s algoritmickými jazyky se paralelně vyvíjely jazyky určené pro zpracování obchodních informací a také jazyky umělé inteligence. Prvním je COBOL (COMmon Business Oriented Language) a druhým jazyky COBOL. LISP(Zpracování seznamu) a Prolog. Jazyk LISP, vyvinutý v 60. letech pod vedením J. McCarthyho, byl prvním funkčním jazykem pro zpracování seznamu, který našel široké uplatnění v teorii her.

S příchodem osobních počítačů se jazyky staly nedílnou součástí integrovaných vývojových prostředí. Existují jazyky používané v různých kancelářských programech, jako je VBA (Visual Basic for Application).

V 90. letech s rozšířením internetu se rozšiřuje možnost distribuovaného zpracování dat, což se odráží ve vývoji programovacích jazyků. Existují jazyky zaměřené na vytváření serverových aplikací, jako např Jáva, Perl a PHP, jazyky popisu dokumentu - HTML a XML. Tradiční programovací jazyky C++ a Pascal také procházejí změnami: programovací jazyk začíná znamenat nejen funkčnost jazyka samotného, ​​ale také knihovny tříd, které programovací prostředí poskytuje. Důraz se přesouvá ze specifikace samotných programovacích jazyků na standardizaci mechanismů pro interakci distribuovaných aplikací. Objevují se nové technologie - COM a CORBA, které specifikují interakci distribuovaných objektů.

Počítače stále špatně rozumějí přirozeným jazykům, které se používají ke komunikaci mezi lidmi, alespoň se jim ještě nenaučily rozumět.

Lidé zase nerozumí strojovým jazykům dobře. Proto byly vytvořeny programovací jazyky, které zakrývají tuto díru v porozumění, v modelu myšlení mezi člověkem a počítačem.

Programovací jazyky mohou být:

  • jednoduchý,
  • komplexní a
  • nesrozumitelné (například grafické).

Historie vzniku programovacích jazyků

Nyní se používá několik stovek programovacích jazyků, ale mnohem více takových jazyků se již nepoužívá. Postupem času byly vyvinuty nové programovací jazyky pro nové úkoly.

Nulová generace

  • (elektro),
  • naprogramované strukturou vlastního zařízení
  • vysoce specializované
  • možnosti programování jsou omezené.

žakárový stav

Příkladem takových strojů je žakárový stav s naprogramovaným zařízením. V roce 1804 jej vyrobil Francouz Joseph Marie Jaccard. Mimochodem, na jeho počest se vzorovaná, dekorační látka jmenuje žakár nebo žakár.

Pomocí stroje bylo možné jednoduše a masivně vyrobit výšivku na látku pomocí děrných štítků, jak je znázorněno níže na obrázku:

Rýže. 1. Děrné štítky pro žakárový tkalcovský stav

Na děrných štítcích byla naprogramována sekvence akcí, aby stroje reprodukovaly jakýkoli vzor na tkanině.

Babbageovo auto

Internet a web

Objevily se specializované jazyky:

  • JavaScript.

Mnoho webových stránek je napsáno pomocí PHP a JavaScriptu.

Některé již existující jazyky s příchodem internetu a webu našly nová místa a staly se webově orientovanými:

  • rubín,
  • pynton,
  • Jáva.

Do roku 2000 staré programovací jazyky postupně „umírají“, objevují se nové, ale neexistuje obecně přijímaný koncept toho, co se s těmito věcmi stane.

Jakýkoli programovací jazyk je umělý jazyk, který má svůj vlastní životní cyklus. Podobně mají operační systémy rodiny Windows také své vlastní životní cykly: .

Životní cyklus programovacího jazyka:

  • stvoření,
  • včasná adopce (počáteční používání jazyka),
  • (průmyslový) úspěch,
  • zánik, změna jiných jazyků.

V moderním světě je hlavní část softwaru (software) napsána v 10-15 jazycích, i když za dobu, kterou známe, byly vytvořeny více než stovky programovacích jazyků. Oficiálně je zaregistrováno 300 nebo 400 jazyků.

Co je to programovací jazyk

Jazyk je

  • syntaxe (pravidla pro psaní programů),
  • sémantika (chování prvků, které jsou zahrnuty v pravidlech psaní a jsou zabudovány do jazyka),
  • runtime (runtime).

Syntaxe určuje formu textové reprezentace programů, tedy jak by měly být napsány, jaká slova jsou v jazyce obsažena, jak se vkládají čárky, mezery atd.

Syntaxe na příkladu Lisp

Jedním z nejjednodušších programovacích jazyků, který má formální gramatiku, je seznamový jazyk LISP.

Rýže. 10. Program LISP

LISP je velmi starý jazyk, který generuje seznamy. Gramatikou takového jazyka je gramatika seznamů, čtená shora dolů.

  • V Lisp jsou výrazy: může existovat jeden atom nebo seznam;
  • atom je číslo nebo znak,
  • číslo - číslo, to znamená s plus nebo mínus číslicí, alespoň jednou,
  • symbol - to jsou písmena, kolikrát chcete, můžete dokonce mnohokrát,
  • seznam - seznam, výrazy v závorkách vícekrát.

Lisp program je seznam seznamů. V Lisp nejsou žádná interpunkční znaménka, ale jsou tam závorky. V Lispu mohou být takové dlouhé programy, kde na konci jsou 2-3 listy, skládající se pouze z uzavíracích závorek.

Nejjednodušší interpret Lisp má pouze 19 řádků! Žádný jiný jazyk si nemůže dovolit takový luxus.

Sémantika

Pokud gramatika popisuje formy reprezentace: písmena, čísla, závorky, pak sémantika popisuje, jak program funguje, co tato písmena, čísla, závorky znamenají, jak fungují, vzájemně se ovlivňují atd.

Možnosti reprezentace sémantiky jsou poměrně omezené.

Sémantika může být:

  • popsaný přirozeným, lidským jazykem. Mnoho jazyků lze popsat pouze tímto způsobem. Ve skutečnosti jde o hlavní případ, kdy prostě existuje dokument, kde je v ruštině nebo angličtině popsáno, že taková a taková věc funguje tak a tak, jeden příkaz dělá jednu věc, další dělá takové a takové věci, atd.;
  • specifikováno formálně (ve specializovaných jazycích lze např. u některých výpočtů formálně popsat chování prvků);
  • definovaný původní implementací (používá se zřídka, ale je to „poslední možnost“ popisu, když je sémantika příliš složitá nebo není příliš důležitá);
  • popsán souborem testů (případů), totiž že by to tak mělo fungovat a takto to funguje.

Sémantika je rozdělena do dvou částí:

  • statický,
  • dynamický.

Statická sémantika

  • dává význam lexikálním konstrukcím;
  • určuje povolené hodnoty proměnných a parametrů;
  • popisuje syntaktická omezení, například pomocí syntaxe nebude možné popsat, že nemůžete sčítat řetězce s čísly.

Dynamická nebo frontální sémantika běhu

  • určuje obecnou povahu programu;
  • popisuje, jak fungují vestavěné operace a vestavěné knihovny. Toto je hlavní část sémantiky, která je potřebná k pochopení toho, jak bude program žít a fungovat po jeho napsání;
  • specifikuje požadavky na tlumočníka.

Systém datových typů v programovacích jazycích

Důležitou součástí sémantiky je typový systém - to je soubor pravidel a výrazů pro metody, které jsou zapsány v ideologii jazyka a jak se vzájemně ovlivňují.

Programovací jazyk má obvykle systém datových typů - to jsou řetězce, čísla, seznamy atd. Existuje například jazyk Force, kde jsou všechna data jednoduše, jinými slovy, existují jazyky, kde nejsou datové typy zabudovány vůbec.

Pokud je přítomen typový systém, lze programovací jazyky rozdělit do dvou nezávislých tříd, které jsou uvedeny níže.

Systém typu dat:

  • psaný nebo nepsaný jazyk
  • statické nebo dynamické psaní
  • silné nebo slabé psaní

Pokud je psaní statické, pak jsou typy všech a výrazů, které jsou v programu zapsány, známy až do okamžiku jeho spuštění, to znamená, že když jsou popsány funkce, třídy, proměnné, pak jsou okamžitě nastaveny nebo explicitně poskytnuty podmínky tak, aby typ takové konstrukce je znám od samého počátku.zač.

Pokud je psaní dynamické, pak je naopak typ kontextových jazykových objektů neznámý až do okamžiku provedení, to znamená, že typ funkce nebo čehokoli bude neznámý až do samého konce.

Silné typování znamená, že pokud má entita nějaký typ a je znám, lze tento typ nahradit, ale samotný objekt má pevný typ a ten se nemění.

Při slabém psaní se typ objektu může lišit v závislosti na kontextu a na tom, co s ním děláte.

Musíte dávat pozor na typový systém jazyka. Kvůli nesprávně zadanému typu pouze jednoho, nepříliš patrného znaku na začátku programu, se mění typ celého výrazu a mohou tak vzniknout velmi podivné chyby.

Další důležitou vlastností jazyka je

Paradigma programovacího jazyka

  • z řečtiny - předloha, příklad, ukázka;
  • je to systém myšlenek a konceptů, které definují styl psaní programů v tomto jazyce - způsob, jakým jazyk zahrnuje psaní programů v něm (wiki);
  • jazyk „upřednostňuje“ jedno nebo více paradigmat (multiparadigma).

Hlavní paradigmata

  • imperativ: program je soubor sekvenčních instrukcí, které mění vnitřní stav počítače, dat atd. To znamená, že program je instrukce;
  • funkční: program je soubor matematických funkcí. Práce programu je výpočet hodnoty funkcí;
  • objektově orientovaný: předmětová oblast je popsána pomocí objektů s vlastnostmi a metodami. Program - proces interakce objektů;
  • logické: program je soubor prohlášení o předmětné oblasti. Úkolem programu je zjistit pravdivost tvrzení o této oblasti.

Často lze stejný praktický problém implementovat pomocí kteréhokoli z výše uvedených paradigmat.

Další důležitou součástí jazyka, kterou je třeba vzít v úvahu při používání jazyka, je Runtime – jak se jazyk provádí.

Runtime - provádění programu

Program může běžet různými způsoby:

  1. nejjednodušším a nejnaivnějším způsobem spuštění programu je interpretace – čtení zdrojového kódu v okamžiku spuštění. Takto fungují odlehčené skriptovací jazyky. Programátor sám také pracuje: když napíše program, podívá se na svůj vlastní program na vlastní oči a zjistí, jak bude jeho program fungovat a co dělat;
  2. běžným způsobem spouštění programů je kompilace do strojového kódu – samostatný krok před spuštěním. Existuje samostatný nástroj - kompilátor, kde se načtou zdrojové kódy programu, něco se s nimi udělá, převede je na strojové kódy srozumitelné současnému systému. Poté je tento kód spuštěn přímo hardwarem;
  3. hybridním způsobem je kompilace bajtů a provádění ve virtuálním stroji. Kompilátor načte zdrojový kód, poté se vytvoří bytecode, který běží na virtuálním stroji.

Tyto tři metody jsou různé a používají se pro různé účely. Tyto techniky lze kombinovat – překladač může některé části programu zkompilovat za chodu, aby fungoval rychleji. Dynamicky generovaný kód lze interpretovat bez kompilace.

Jazykoví zástupci

jazyk C

- jeden z nejpopulárnějších, jeden z nejdůležitějších z hlediska kódu, který je na něm fyzicky napsaný, prakticky je to „naše všechno“.

Byl vytvořen v roce 1972 Dennisem Ritchiem a kolegy. D. Ritchie také vytvořil systém Linux a mnoho dalších užitečných věcí.

  • rozkazovací způsob,
  • sestaven,
  • manuální správa paměti (pomocí některých operací zabudovaných do jazyka je potřeba alokovat paměťové prvky pro proměnné a ty pak uvolníte, když už nejsou potřeba).

Mimochodem, C je stále relevantní a používá se pro:

  • systémové programování (například linuxové jádro je napsáno v C),
  • number-crunching (takzvaná čísla drtiče, tedy pro velké výpočty, kde je důležitá rychlost),
  • programování mikrokontrolérů a vestavěných systémů.

C je nízkoúrovňový jazyk, dá se říci, že je to Assembler s lidskou tváří, protože člověk může ručně převést do Assembleru téměř jakoukoli C konstrukci a získá celkem srozumitelné operace.

C programy jsou velmi kompaktní. Nejsou o moc větší, než kdyby byly podobné programy napsány v assembleru. Vývoj v C je přitom mnohem rychlejší než v Assembly.

Proto se C nyní používá pro úlohy, kde je vyžadována rychlost, velmi důležitá je správa paměti a velký význam má kompaktní velikost samotného programu. Pokud máte malý mikrokontrolér, který je zabudován do nějakého druhu zařízení, pak program pro něj bude s největší pravděpodobností napsán buď v Assembleru, nebo v C.

Rýže. 11. Příklad jednoduchého C programu.

Jáva

  • Vytvořeno v roce 1995,
  • tvůrci - James Gosling (James Gosling) a Sun Microsystems (Gosling v této společnosti pracoval).
  • Objektově orientovaný, imperativní (C je imperativ, ale NENÍ objektově orientovaný),
  • silně a staticky typováno,
  • byte-kompilovaný s virtuálním strojem,
  • žádný přístup k paměti, automatické shromažďování odpadků (druhé funguje dobře, pokud je třetina nebo čtvrtina volné paměti).

V 90. letech si JAVA získala velkou oblibu jako multiplatformní jazyk. Jakmile napíšete virtuální stroj pro nějakou platformu, řekněme pro Windows nebo pro Linux nebo pro Mac, můžete na něm spouštět libovolné JAVA programy bez rekompilace. Proto byl jazyk populární v době webu, kdy existovaly různé platformy (různé verze Windows, různé Macy). Programy JAVA fungovaly rychle a poměrně dobře napříč platformami.

Používá se pro:

  • programování aplikací, včetně programování webu,
  • vestavěné systémy (pokud se C používá pro mikrokontroléry, pak JAVA je pro mobilní telefony, terminály atd.),
  • vysoce zatížené systémy s velkým počtem uživatelů (bankovní programy, systémy řízení letového provozu atd.).

Je třeba rozlišovat mezi specifikacemi jazyka Java a různými implementacemi JVM:

  • Sun JDK (od Sun, nyní Oracle),
  • IBM JDK (prodává se za peníze),
  • OpenJDK (zcela zdarma)
  • atd.

Rýže. 12. Ukázka jednoduchého JAVA programu.

Jak je vidět na Obr. 12, k dokončení jednoduchých akcí musíte napsat hodně písmen. Java je často označována jako nový Cobol, protože obsahuje stejné negativní vlastnosti, které kdysi z Cobolu dělaly špatný jazyk.

Přesto je JAVA velmi oblíbená, zejména je v ní napsána klientská část operačního systému.

Lisp

  • Opravdu dokončuje Lis t P processor (LisP);
  • vytvořeno v roce 1958;
  • tvůrci - John McCarthy;
  • čistý funkcionální jazyk, navzdory poněkud zvláštní syntaxi;
  • silně a dynamicky typovaný;
  • obvykle vykládáno;
  • žádný přístup k paměti, automatické shromažďování odpadků, které připadá na interpret, a ne na virtuální počítač.

Používá se pro:

  • vědecké programování a výzkum;
  • umělá inteligence – Lisp vznikl na samém počátku hledání s inteligencí. Koncem 50. a počátkem 60. let 20. století panoval ve vědeckých kruzích silný pocit, že se chystá vytvoření umělé inteligence. Tehdy se věřilo, že klíčovými rysy umělé inteligence bude schopnost pracovat s přirozeným jazykem, textem, číst, mluvit a dělat nějaké rozumné věci. Lisp byl vytvořen pro zpracování sémantických dat z textu, umožňuje vám takové věci dělat dobře;
  • cokoliv, ale zpravidla se nepoužívá příliš efektivně.

Jazyk Lisp, vyvinutý v roce 1958, prošel mnoha změnami.

Má četné implementace a dialekty:

  • CommonLisp (vytvořený v 70. letech 20. století) je klasická implementace, která je považována za hlavní;
  • Schéma (schéma) - zjednodušený dialekt, který vyhazuje některé věci z CommonLispu a usnadňuje jeho provádění;
  • Clojure je dialekt Lisp, pokud jde o jazyk, ale běží na stroji JAVA, to znamená, že se kompiluje do bajtkódu a spouští se, jako by to byl program JAVA.

Rýže. 13. Program LISP: Bubble Sort

Krajta

  • Pojmenováno po britské show ze 70. let Monty Pynton's Flying Circus (staré vtipy, ale vtipné)
  • vytvořena v roce 1991
  • vytvořil Nizozemec Guido van Rossum
  • multiparadigmatický jazyk, objektově orientovaný, imperativní, funkční
  • silně a dynamicky typované
  • interpretovaný, bajtově kompilovaný s virtuálním strojem (v závislosti na implementaci)

Používá se pro:

  • programování skriptů
  • programování webu
  • vědecké programování (k dispozici jsou velké, výkonné balíčky pro modelování, pravděpodobnost, statistiku a další oblasti, které kombinují zkušenosti získané v jiných oblastech)

Python je jazyková specifikace. Existuje několik hlavních implementací:

  • CPython - hlavní (referenční)
  • Jython - na vrcholu JVM
  • PyPy – Python v Pythonu („Python v Pythonu“ je rychlejší a lepší než CPython a Jython)

Rýže. 14. Program Python: Bubble Sort

Python má důležitou vlastnost - místo hranatých závorek (kulatých, složených) se pro zvýraznění bloků kódu a strukturních prvků používá odsazení s mezerami, což je u všech jazyků zcela neobvyklé. Kromě Pythonu takovou funkci nemá skoro nikdo.

Výběr jazyka pro úkol

Jak si vybrat jazyk pro úkol, když víte, co máte udělat, ale nevíte co?

Důležitá rada: používejte to, co umíte programovat. Je to mnohem lepší než používat něco, co NEVÍTE, jak programovat.

Ekosystém

Jazyk, který chcete používat, nemusí být prostý jazyk, musí mít ekosystém, který zahrnuje:

  • vývojové nástroje (praktické IDE)
  • hotové knihovny a rámce
  • testovací nástroje pro spouštění testovacích případů: testovací rámce a nástroje
  • systémy balení a nasazení, aby bylo možné napsaný kód zabalit, někam rozložit, aby jej ostatní mohli snadno používat. C tuto schopnost nemá, ale Ruby a Python ano.
  • společenství. Nepoužívejte mrtvé jazyky, bez ohledu na to, jak jsou cool. Pokud se nemáte koho zeptat, ocitnete se v naprosté slepé uličce. Má se za to, že některé komunity jsou přátelštější, jiné méně. Například komunita Ruby je skvělá, ale komunita Java je hrozná - ani se tam nemusíte na nic ptát.

Popularita

Je těžké najít v týmu lidi, kteří píší kód v málo používaném jazyce, například v Eiffelovce. Na druhou stranu, volné místo v megapopulárním jazyce JAVA, ve kterém je vstupní práh nízký, narazí na spoustu lidí, ale nebude snadné najít lidi, kteří v něm píší opravdu dobře.

Čím populárnější jazyk, tím více knihoven, komunit, frameworků a dalších věcí, které rostou samy od sebe shora.

Míra učení

Téměř nikdo nezná jazyk až do konce. Při práci se budete muset jazyk učit dál a dál. Některé jazyky je snadné se naučit, zatímco jiné jsou velmi obtížné.

JAVA je jazyk, který se dá snadno naučit a jednoduchý co se týče funkcí a vše se pak staví ne na úkor jazyka, ale na úkor nástrojů.

Je nemožné se naučit C++ úplně, protože tam jsou velmi složité věci s generováním kódu.

Specializované jazyky

Konkrétní jazyky se lépe hodí pro určité specializované úkoly.

Příklad 1: webová aplikace, která

  • interaguje s databází
  • interní servis ve firmě
  • potřebujeme rychlý vývoj, protože šéf se opravdu ptá.

Pro takový úkol s největší pravděpodobností postačí Python nebo Ruby. Nedělejte to v JAVA

Příklad 2: Účtovací systém mobilního operátora

  • tisíce operací za sekundu, spousta různých plateb a převodů
  • vysoká spolehlivost a odolnost proti poruchám
  • flexibilita v konfiguraci, diagnostika problémů

V tomto případě je naší volbou Java, C++, Erlang - bohaté jazyky s bohatými nástroji.

Příklad 3: kód palubního počítače pro satelit

  • omezené zdroje (pouze megabajt paměti a velmi nízká rychlost hodin)
  • tvrdý reálný čas, aby satelit neztratil orientaci, nerozbil se nebo nevybuchl
  • přísně známé úkoly, žádná flexibilita a žádné přizpůsobení
  • hodně výpočtů

Naší volbou jsou jazyky typu C a C (a dokonce i assembler), protože existuje velmi málo zdrojů a tyto požadavky je třeba splnit.

Článek podle videa:

Jak si vybrat správný programovací jazyk - Ivan Kalinin

Video bylo natočeno v prosinci 2014, nicméně všechny informace jsou relevantní a nejsou promlčeny. Mnohé materiály z pozice dnešních reálií jsou nepochybně zajímavé, např. to, že vědci ještě na přelomu 50. a 60. let věřili, že umělá inteligence je již na prahu a s její pomocí bude možné pracovat na počítači s přirozenou , obyčejný, lidský jazyk.

Dovolte mi zdůraznit některé obecné trendy ve vývoji programovacích jazyků. Bystrý čtenář už asi dávno tušil, co řeknu. Jazyky se vyvíjejí směrem k více a více abstrakci. A to je doprovázeno poklesem účinnosti. Otázka: stojí abstrakce za to? Odpověď: stojí to za to. Vyplatí se to, protože zvýšení úrovně abstrakce znamená zvýšení úrovně spolehlivosti programování. S nízkou účinností lze bojovat stavbou rychlejších počítačů. 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: musí být opraveny. Ještě lépe, nedělejte to. Ještě lépe je udělejte co nejobtížnější. A 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 rozmanitosti existujících programovacích jazyků. Mezi programátory často panuje názor na „univerzální 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 trochu vyvážit. Pokud jde o zbytek, mohu jen říci, že skutečný profesionál by se měl neustále snažit zdokonalovat své odborné dovednosti. A kvůli tomu se nemusíte bát experimentovat. Co když tedy všichni kolem píší v C/C++/VB/Pascal/Perl/Java/… (vhodně podtrhněte)? Proč nezkusit něco nového? Bylo by to efektivnější? Samozřejmě, než začnete používat 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 i účastnil diskuzí ve tvaru „jazyk A je lepší než jazyk B“. Doufám, že po přečtení této recenze se mnozí přesvědčí o marnosti 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 někdy není řešení v žádném případě zřejmé. Nicméně argumentovat „obecně“ je zjevně hloupé.

Tento článek měl 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 výchovnou hodnotu.

>> články

Jak se objevily programovací jazyky?

Programovací jazyky byly vytvářeny několik desetiletí a tato práce byla zdlouhavá, složitá a únavná. Ve skutečnosti je strojový jazyk řetězem logicky uspořádaných nul a jedniček, jejichž porušení posloupnosti způsobí zastavení programu a nefunkčnost počítače a požadavky na programátory, kteří vytvářeli nové způsoby psaní příkazů, závisely na vývoji strojů.

Historie programovacích jazyků: Začátek

Počátek 40. let byl poznamenán objevením se prvního jazyka pro programy – assembleru, který v příkazu obsahoval sadu krátkých slov nebo jejich zkratek. Assembler je považován za nízkoúrovňový programovací jazyk, a proto se mu říká strojově orientovaný jazyk. Programy napsané v tomto jazyce se však vyznačují účinností a výkonem.

Jazyky na vysoké úrovni: Algoritmické jazyky

Rozvoj technologií a zavádění nových typů digitálních zařízení přiměly programátory vynalézt jazyk vyšší úrovně se zaměřením na algoritmy psaní. Takto se objevily další programy-překladače, které zahájily činnost algoritmu. Existují dva způsoby překladu:

- sestavení nebo kompilace, kdy instrukce vstoupí v činnost po překladu celého programového balíčku;

- výklad nebo tlumočení, ve kterém se provádění a překlad strojového jazyka provádí synchronně.

Vlastnosti takových programů jsou: snadnost tvorby (zápis kódu), schopnost opravy při používání, snadné čtení.

Rok 1954: strukturované programování

Svět se dostal do povědomí o prvním kompilátoru programovacího jazyka na velmi vysoké úrovni. Řeč je o Fortranu, z anglické zkratky FORmula TRANslator. Vývoj jazyka byl zjednodušen, ale při psaní velkých programů se jazyk stal téměř nečitelným, přestože bylo vydáno mnoho verzí Fortranu.

Vrchol vývoje programovacích jazyků spadá přesně do 50-60 let, poté je vytvořeno několik možností:

- Algol(1958), vytvořené na základě izolovaných bloků;

- Cobol(1959) - jazyk obchodu a managementu, základ C +;

- Základní(1965), známý programátorům dodnes.

V roce 1970 vznikl programovací jazyk, pojmenovaný po vědci B. Pascalovi – Pascal. Programy vytvořené v tomto jazyce byly snadno čitelné a při učení nebyly žádné potíže. Jednoduchý, dobře strukturovaný jazyk je stále oblíbený mezi začínajícími programátory.

O něco později, v roce 1972, byl vyvinut druhý programovací jazyk - C, který zahrnoval úspěchy dříve vytvořených jazyků, inovace, stal se snad nejoblíbenějším mezi uživateli a tvůrci programů. Jednoduchý, dobře strukturovaný, snadno se učí, C se stává oblíbeným mezi ostatními jazyky.

Objektově orientované programování (OOP): 1970

Ideologie procedurálního programování funkcí, které spolu ve zpracování formálně nesouvisejí, donutila vývojáře posadit se a vytvořit nový koncept kompilace jazyka. Základem konceptů OOP jsou:

Model objektu, který ještě neexistuje;

Instance třídy;

Abstrakce, dávání vlastností objektu;

Zapouzdření, kdy jsou vlastnosti a metody kombinovány, s cílem skrýt data;

Dědictví;

Polymorfismus.

Simula byla prvním jazykem a Smalltalk byl vynalezen o něco později. V současné době je tento typ programovacího jazyka podporován moderními programy: Object Pascal (Delphi), C++, C#, Java.

Sled vývoje programovacích jazyků závisí na zavádění nových inovací, takže po příchodu internetu se jazyk stal nezbytným pro přístup ke zdrojům, webům. Technika World Wide Web (WWW) zrodily nové jazyky, které se dodnes aktivně používají: Java, Perl, SQL, HTML, PHP, JavaScript.



Související články: