• Programovací jazyk pro řešení. Moderní programovací jazyky a jejich použití

    2) Co je to stránka s programovacím jazykem 2

    3) Jaké programovací jazyky jsou pro str. 3

    4) Jaké programovací jazyky existují str. 4 – 7

    5) Co je to kompilátor a interpret strana 8

    6) Reference strana 9

    Úvod

    Až do poloviny šedesátých let byly počítače velmi drahé stroje, používané pouze pro speciální úkoly a vykonávající vždy pouze jeden úkol (tzv. dávkové zpracování).

    Programovací jazyky této éry, stejně jako počítače, na kterých byly použity, byly navrženy pro specifické úkoly, jako jsou vědecké výpočty. Vzhledem k tomu, že stroje byly drahé a mohl být proveden pouze jeden úkol najednou, byl strojový čas také drahý, takže rychlost programu byla prvořadá.

    V průběhu 60. let však začala cena počítačů klesat, takže si je mohly dovolit i malé firmy; Rychlost počítačů se zvýšila a přišla doba, kdy začaly často nečinně stát bez úkolů. Aby se tak nestalo, začali zavádět systémy s sdílení času(sdílení času).

    V takových systémech byl čas procesoru „zkrácen“ a všichni uživatelé postupně dostávali krátké segmenty tohoto času. Stroje byly dostatečně rychlé, aby každý uživatel na terminálu měl pocit, že na systému pracuje sám. Stroj byl zase méně nečinný, protože vykonával ne jeden, ale mnoho úkolů najednou. Sdílení času drasticky snížilo náklady na strojový čas, protože jeden stroj mohly sdílet stovky uživatelů.

    Za těchto podmínek - když se moc stala levnou a dostupnou - začali tvůrci programovacích jazyků stále více přemýšlet pohodlí při psaní programy, a nejen rychlost jejich provádění. „Malé“ (atomové) operace prováděné přímo strojními zařízeními byly spojeny do větších operací vyšší úrovně a celých struktur, se kterými se člověku mnohem snadněji a pohodlněji pracuje.

    Co je to programovací jazyk

    Programovací jazyk- formální znakový systém určený k popisu algoritmů ve formě, která je vhodná pro umělce (například počítač). Programovací jazyk definuje soubor lexikálních, syntaktických a sémantických pravidel používaných při kompilaci počítačového programu. Umožňuje programátorovi přesně určit, na jaké události bude počítač reagovat, jak budou data ukládána a přenášena a jaké akce by se s nimi měly za různých okolností provádět.

    Od vytvoření prvních programovatelných strojů lidstvo vymyslelo více než dva a půl tisíce programovacích jazyků. Každým rokem se jejich počet doplňuje o nové. Některé jazyky používá pouze malý počet vlastních vývojářů, jiné se stávají známými milionům lidí. Profesionální programátoři někdy při své práci používají více než tucet různých programovacích jazyků.

    Tvůrci jazyků si koncept vykládají jinak. programovací jazyk. Mezi komunity míst, které uznává většina vývojářů, jsou následující:

    • Funkce: programovací jazyk je pro psaní počítačové programy, které slouží k přenosu instrukcí do počítače pro provedení konkrétního výpočetního procesu a organizaci řízení jednotlivých zařízení.
    • Úkol: Programovací jazyk se liší od přirozených jazyků v tom, že je určen k přenosu příkazů a dat z osoby do počítače, zatímco přirozené jazyky se používají pouze pro komunikaci mezi lidmi. V zásadě lze zobecnit definici „programovacích jazyků“ – jde o způsob předávání příkazů, příkazů, jasný návod k jednání; zatímco lidské jazyky slouží také k výměně informací.
    • Provedení: Programovací jazyk může používat speciální konstrukce k definování a manipulaci s datovými strukturami a řízení procesu výpočtu.

    K čemu jsou programovací jazyky?

    Proces činnosti počítače spočívá ve vykonávání programu, to znamená sady přesně definovaných instrukcí v přesně definovaném pořadí. Strojová forma příkazu skládající se z nul a jedniček udává, jaký druh akce má být proveden procesor. To znamená, že abyste mohli počítači sdělit sekvenci akcí, které musí provést, musíte nastavit sekvenci binárních kódů pro odpovídající příkazy. Programy strojového kódu se skládají z tisíců instrukcí. Psaní takových programů je obtížný a únavný úkol. Programátor si musí zapamatovat kombinaci nul a jedniček binárního kódu každého programu a také binární kódy datových adres použitých při jeho provádění. Je mnohem snazší napsat program v nějakém jazyce, který je bližší přirozenému lidskému jazyku, a svěřit počítači úkol převést tento program do strojových kódů. Tak vznikly jazyky navržené speciálně pro psaní programů - programovací jazyky.

    Je jich mnoho různé jazyky programování. K vyřešení většiny problémů můžete použít kteroukoli z nich. Zkušení programátoři vědí, který jazyk je lepší použít pro řešení každého konkrétního problému, protože každý jazyk má své vlastní schopnosti, orientaci na určité typy úloh, svůj vlastní způsob popisu pojmů a objektů používaných při řešení problémů.

    Celou sadu programovacích jazyků lze rozdělit do dvou skupin: jazyky nízká úroveň A jazyky na vysoké úrovni.

    Mezi jazyky nízké úrovně patří jazyky assembleru (z angličtiny toassemble - sestavit, sestavit). Jazyk symbolických instrukcí používá pro pokyny symboly, které jsou snadno srozumitelné a snadno zapamatovatelné. Místo posloupnosti binárních kódů příkazů se zapisují jejich symbolická označení a místo binárních adres dat použitých při provádění příkazu se zapisují symbolická jména těchto dat, zvolená programátorem. Jazyk symbolických instrukcí je někdy označován jako mnemokód nebo autokód.

    Většina programátorů používá k psaní programů jazyky na vysoké úrovni. Stejně jako běžný lidský jazyk má i takový jazyk svou vlastní abecedu – soubor symbolů používaných v jazyce. Tyto symboly tvoří tzv. klíčová slova jazyka. Každé z klíčových slov plní svou funkci, stejně jako v jazyce, na který jsme zvyklí, máme slova složená z písmen abecedy. daný jazyk, může vykonávat funkce různé části mluvený projev. Klíčová slova jsou navzájem spojeny do vět podle určitých syntaktických pravidel jazyka. Každá věta definuje určitou sekvenci akcí, které musí počítač provést.

    Jazyk na vysoké úrovni funguje jako prostředník mezi člověkem a počítačem a umožňuje člověku komunikovat s počítačem pro člověka známějším způsobem. Často tento jazyk pomáhá při výběru správná metodařešení problému.

    Před napsáním programu v jazyce vyšší úrovně musí programátor napsat algoritmusřešení problémů, tzn plán krok za krokem kroky, které je třeba podniknout ke splnění tohoto úkolu. Proto se často nazývají jazyky, které vyžadují předběžnou kompilaci algoritmu algoritmické jazyky.

    Jaké jsou programovací jazyky

    Fortran

    Programovací jazyky se objevují od poloviny 50. let minulého století. Jedním z prvních jazyků tohoto typu byl jazyk Fortran (anglicky FORTRAN z FORmulaTRANslator - překladač vzorců), vyvinutý v roce 1957. Fortran se používá k popisu algoritmu pro řešení vědeckých a technických problémů pomocí digitálního počítače. Stejně jako první počítacích strojů, tento jazyk byl určen především pro provádění přírodovědných a matematických výpočtů. Ve vylepšené podobě tento jazyk přežil až do naší doby. Mezi moderními jazyky na vysoké úrovni je jedním z nejpoužívanějších v dirigování vědecký výzkum. Nejběžnější varianty jsou Fortran-II, Fortran-IV, EASICFortran a jejich zobecnění.

    ALGOL

    Po Fortranu se v letech 1958-1960 objevil jazyk Algol (Algol-58, Algol-60) (anglicky ALGOL z ALGOrithmicLanguage - algoritmický jazyk).Algol byl zdokonalen v letech 1964-1968 - Algol-68. Algol byl vyvinut výborem v r. mezi které patřili evropští a američtí vědci. Patří mezi jazyky vyšší úrovně (high-level language) a usnadňuje převod algebraických vzorců do programových příkazů. Algol byl populární v Evropě, včetně SSSR, zatímco srovnatelný Fortran byl běžný v USA a Kanadě. Algol měl znatelný vliv na všechny později vyvinuté programovací jazyky, a zejména na jazyk Pascal. Tento jazyk, stejně jako Fortran, byl určen pro řešení vědeckých a technických problémů. Kromě toho byl tento jazyk využíván jako prostředek výuky základů programování – umění programování.

    Obvykle se termín Algol vztahuje k jazyku Algol-60, zatímco Algol-68 považován za samostatný jazyk. I když se jazyk Algol téměř přestal používat k programování, stále zůstal úřední jazyk pro publikační algoritmy.

    cobol

    V letech 1959 - 1960 byl vyvinut jazyk COBOL (angl. COBOL z COmmom Business Oriented Language - běžný obchodně orientovaný jazyk). Jedná se o programovací jazyk třetí generace určený především pro vývoj podnikových aplikací, Cobol byl také určen pro řešení ekonomických problémů, zpracování dat pro banky, pojišťovny a další instituce tohoto druhu. Grace Hopperová byla vývojářkou prvního jednotného standardu Cobol ( babička Cobola).

    Cobol je běžně kritizován za to, že je upovídaný a nepraktický, protože jedním z cílů tvůrců jazyka bylo vytvořit konstrukty co nejblíže angličtině. (Dodnes je Cobol považován za programovací jazyk, v němž je napsáno nejvíce řádků kódu.) Cobol měl zároveň na svou dobu vynikající zázemí pro práci s datovými strukturami a soubory, což mu dalo dlouhou životnost v podnikových aplikacích, alespoň v USA.

    Různé programovací jazyky a jejich oblasti použití. Přednáška v Yandexu

    Náš první letošní příspěvek jsme se rozhodli věnovat zcela základnímu tématu, o kterém zazněla přednáška na Malém SHAD. Navštěvují ji středoškoláci, kteří se zajímají o techniku, proto ta specifičnost prezentace – přednáška zaujme především ty, kteří s programováním teprve začínají a přemýšlí, jakým směrem se dále rozvíjet. Pro ně má Yandex kurz „Úvod do programování (C++)“, který lze absolvovat na platformě Stepic.org.

    Přednášející Michail Gustokashin - kurátor akademických programů na Yandex, ředitel Centra studentských olympiád Fakulty informatiky HSE. Michail připravil desítky vítězů a laureátů celoruských programovacích olympiád.

    Přednáška vypráví o tom, jaké programovací jazyky jsou, čím se liší, jak se objevily a které jsou lepší a které horší. Na začátku si povíme něco o historii jazyků - jak se objevily, jak lidé začali programovat, jak se vše vyvíjelo, co se děje nyní. Druhá část se dotkne toho, pro jaké úkoly se který jazyk hodí, jak si „vybrat svůj oblíbený jazyk a užívat si života“. Lektor také něco málo povypráví o tom, jak se to vše podle jeho názoru naučit a následně získat práci.

    Jako vždy je pod střihem podrobný přepis přednášky, abyste se mohli orientovat v jejím obsahu.

    Historie programovacích jazyků

    Začněme úplně od začátku. Na začátku počítače neměly ani klávesnice! To znamená, že všechno bylo velmi špatné - neměli ani klávesnici, ani obrazovku, měli děrné štítky (to jsou takové drobnosti s dírami nebo bez dírek). Podle toho tam byly buď ty čepy naražené, nebo tam svítily světlem. Pokud je tam díra (nebo naopak ne) - znamenalo to nulu nebo jedničku. A programy se v té době psaly pomocí strojových kódů – každá operace v počítači (sčítání, odčítání, některé složitější operace) měla nějaký strojový kód. Lidé si sami vybrali tento kód z talíře, všemožné adresy v paměti, všechno to vyklepali rukama a vrazili do čtečky – a bylo to zváženo. Samozřejmě, že práce programátora tehdy asi nebyla moc zajímavá - dělat díry - a s rozvojem vědy a techniky samozřejmě začali vymýšlet nejrůznější „zajímavější“ věci. Například assembler (Assembler), který už život trochu usnadnil.

    No a jak si usnadnil život? Místo toho, abychom si pamatovali, že pro tým existuje nějaký „magický“ kód, byly použity všechny druhy slov podobných „lidskému“. anglický jazyk- nějaké add nebo mov - no, pak byly vypsány registry nebo paměťové oblasti, proměnné, se kterými je potřeba tyto operace provádět. Ale je jasné, že to obecně vyžadovalo také dost vysokého napětí mysli, abychom měli na paměti, v jakém registru máme co leží, kde jsou proměnné a co se obecně děje. Proč se to stalo? Protože počítače byly "hloupé" a nedokázaly pochopit nic "chytřejšího". Sestavení strojového kódu z assembleru ve skutečnosti také vyžaduje čas a paměť (v té době ho samozřejmě nebylo dost).

    Postupně se ukázalo, že je velmi obtížné vyvinout tak rozsáhlé komplexní programy. Produktivita programátora v těchto příkazech byla extrémně nízká - to znamená, že psal několik řádků denně (smysluplné) a každý řádek nedělal nic zvláštního - nějaké jednoduché aritmetické operace. A lidé chtěli, aby se jazyky mnohem více podobaly lidskému jazyku, zejména angličtině, aby bylo jednodušší a pohodlnější psát programy. A jedeme!

    Staré a mrtvé jazyky

    Jedním z prvních jazyků byl Fortran. Mimochodem, vytloukalo se to i na děrných štítcích - na vytloukání programů Fortranu existovaly speciální děrné štítky. Ale když si teď vezmeš tenhle Fortran - podle mě je to dokonce někde mezi 50-60 lety. se objevil - a zkuste na to něco napsat, bude to pro vás velmi nepříjemné, to vám garantuji! Moderní Fortran je stále živý, ale již zcela odlišný od toho, co byl předtím.

    Jiné jazyky - teď napíšu jednu věc, o které jste pravděpodobně slyšeli, ale pouze na nejrůznějších akcích, kde se mluví o historii programování - to je COBOL. Byl to jazyk pro psaní obchodních aplikací. Co jsou obchodní aplikace? Nějaké transakce v bankách, něco jiného, ​​to vše bylo napsáno v Cobolu. Nejsme samozřejmě moc oblíbení. Myslím, že programátora Cobolu v Moskvě najdete jen velmi obtížně. A někde ne v Moskvě – s ještě většími obtížemi. Ale překvapivě ještě před 10 lety byla více než polovina veškerého kódu napsaného lidstvem napsána v Cobolu. A doteď značná část všech bankovních transakcí probíhá pomocí programů na tom napsaných (COBOL) a lidé na to stále něco píší.

    Existuje také „vtipný“ jazyk, jmenoval se Algol (68. verze, která charakterizuje rok svého vzniku). Je to algoritmický jazyk. Obecně tam něco věděli, ale teď nás moc nezajímá, co umí. A tím může být náš exkurz do starověku a relativně nepoužívaných jazyků završen a můžeme přejít k tomu, co stále žije (a aktivně žije).

    Staré, ale živé jazyky

    Algol byl vynalezen v Evropě a Fortran se používal hlavně ve Státech - nejsou tam žádné velké rozdíly. Jaký trend je vidět? Zpočátku bylo všechno těžké a abyste mohli psát, museli jste být téměř inženýr, elektroinženýr, abyste pochopili, kde jsou které kontakty sepnuté, a něco jiného na programování. Pak bylo také nutné sedět s listy a počítat vzpomínku, hlídat ji. A postupně se pro programátora vše zjednodušovalo, zjednodušovalo, zjednodušovalo a dále ještě usnadňovalo – co nejméně, aby člověk myslel, co nejvíce dělal automaticky. Kolem konce tohoto období (přednášející ukazuje na Algol a Kobol) se začínají objevovat jazyky, které v jistém smyslu „přežily“ dodnes.

    ZÁKLADNÍ. Snad na to ještě někteří něco píšou, alespoň jsem viděl, že v některých institucích učí v QBasicu - takové modré okénko, kde je napsáno „1989“. Obecně platí, že „s mocnými a hlavními“ životy! Byl koncipován jako jazyk pro neprogramátory. V té době byl programátor taková velmi specializovaná profese. A tady vám řeknou: „Tady máme cool Základní jazyk, a každý rozumný člověk si na to vezme a napíše program - snadno. Opět platí, že BASIC a moderní BASIC je obrovský rozdíl. Všechny tyto řádky od 10, všelijaké GOTO a další hrůzy - s moderním BASICem už nemají nic společného a dokonce ani s BASICem 89. ročníku mají pramálo společného.

    Další úsměvnou historkou je jazyk Pascal, široce známý v univerzitních kruzích, především v Rusku a v zemích bývalého Sovětského svazu. Překvapivě se používal a nadále používá výukový jazyk. Ve zbytku světa je méně častý, ale také živý a zdravý. Existuje takový člověk Wirth - tady je to vědec, teoretik. Zúčastnil se diskuse o Algolu, nelíbilo se mu, co se stalo, a přišel s vlastním jazykem - Pascalem. A pak to vzala společnost Borland (a předtím mnoho dalších společností - konkrétně Apple) a všechno zničila. Měl krásnou teorii, štíhlou – „všechno bude v pořádku“ – a vzali ji a nacpali do ní to, co lidé potřebují k práci. No, nedopadlo to tak hezky, jak chtěl.

    A nakonec, . C vynalezli inženýři. Jestliže Pascal vynalezl vědec, pak C vynalezli Kernighan a Ritchie, pracovali jako inženýři v Bell. Jak se to stalo? V té době v těchto jazycích (přednášející ukazuje na Fortran, COBOL, Algol) nebylo možné napsat nic systémového. Co je to "systémové"? Například operační systém, nějaké ovladače, něco jiného. Tyto jazyky byly určeny pro matematické výpočty, pro obchodní výpočty, pro všechno. A vše ostatní bylo napsáno v assembleru. Některé jazyky byly, nyní jsou mrtvé, to znamená, že jazyk C se neobjevil okamžitě z Assembleru, ale prostřednictvím některých přechodných věcí.

    Jaký je smysl? Kernighan a Ritchie si rádi hráli na hračku Asteroids - letí vesmírná loď a jsou tam asteroidy, střílí na ně a ony se rozpadnou. Měli server, kde hráli, ale bylo tam hodně lidí a hračka se zpomalila. A někde ve své kanceláři zjistili, že mají nějaký počítač, který nikdo nepoužívá. Byl tu ale problém – měla jinou architekturu a hra byla napsána v assembleru.

    Samozřejmě ho přepsali, dokonce přidali nějaké funkce, které na něm lze hrát. To je ale vedlo k myšlence, že přepisování pod nová architektura pokaždé není moc chytré. A rozhodli se napsat jazyk na vysoké úrovni, který by byl vhodný pro systémové programování, to znamená, ve kterém by bylo možné spravovat paměť, ve kterém by bylo možné pochopit, kde co leží a jak se k těmto částem paměti dostat. . A tak se objevil jazyk C, který měl obrovský dopad na vše, co následovalo. Všechny (přednášející ukazuje na Algol, Fortran a další zmíněné jazyky) měly velký vliv, ale C - správně, ano ...

    V souladu s tím to byl hlavní jazyk v Unixu, operačním systému, který byl tehdy ještě populárnější než nyní. A kolem 80. let byla situace něco takového (přednášející ukazuje v Basicu, C a dalších zmíněných jazycích). Předpokládejme, že tohle všechno už s námi pomalu vymřelo (přednášející maže zmínku o Assembleru, Fortranu a Algolu) ... A v 80. letech se počítače zmenšovaly, chytřely, zlevňovaly a lidé chtěli nejrůznější podivnosti, aby žít ještě lépe, žít ještě zábavněji.

    Jazyky z 80. let

    Jednou z prvních zvláštností byl jazyk C++. Jazyk C má obrovské množství nedostatků (no prostě jeden obrovský) - můžete v něm dělat všechno, včetně střelby do nohy, střelby do nohy fikcí, do druhé nohy, střelby jednou nohou dovnitř druhá noha, obecně - to, co chcete dělat. Ale zároveň jsou tam některé architektonické věci dost ztížené – opět jako v Assembleru musíme mít přehled o tom, kde jsme, jakou a jakou paměť jsme alokovali; neustále někde tato paměť "teče" - to znamená, že jsme alokovali, zapomněli smazat, smazali špatnou věc, vylezli z paměti, obecně - shráblo spoustu problémů.

    C++ byl původně vytvořen jako sada rozšíření jazyka C, která by usnadnila vývoj. V té době přišlo do módy objektově orientované programování a lidé usoudili, že vše lze popsat jako hierarchii, to znamená, že máte míč (abstraktní), zdědíte z něj fotbalový míč, volejbalový míč, další abstraktní míč. Tehdy bylo v módě, že „teď vše píšeme formou nějaké hierarchie a všechno bude v pořádku, život se zlepší, všechno bude v pořádku a hotovo“. C++ v jistém smyslu implementovalo tento objektový přístup – nebyl to první objektově orientovaný programovací jazyk, ale stal se docela populární a začaly se v něm objevovat nejrůznější funkce. C++ si přitom zachovalo téměř úplnou kompatibilitu (v té době) s jazykem C, program napsaný v C byl v 99 % případů úspěšně zkompilován jako C++ a dokonce fungoval stejně. Cílem bylo usnadnit migraci z C do C++.

    Kromě objektového přístupu (v C++) se poměrně rychle objevila standardní knihovna šablon (STL). Myslím, že ve škole ti, kteří ještě studovali Pascal, zjistili, že za prvé tam nemáte zabudované třídění (ve starověkém modrém Borland Pascalu, nyní již existuje v moderní verze) - je tam ukázka (zdroj) řazení, můžete zkopírovat a vložit. Ale pokud zde chcete seřadit celá čísla, zde chcete reálná čísla a zde chcete řetězce, které lze vzájemně porovnávat, museli jste napsat tři různé druhy, které dělají přesně to samé, jen mají odlišné typy data. To není příliš dobré a šablony, které se v C ++ okamžitě neobjevily, tento problém značně usnadnily. To znamená, že jste měli abstraktní program, který úspěšně třídil něco, co se dalo vzájemně porovnávat.

    Skriptovací jazyky z 90

    Čas se ale nezastavil, v 80. letech se událo mnoho zajímavého. Jenže někde na přelomu 80. a 90. let se počítače staly tak dobrými, že už bylo možné dělat velmi podivné a velmi neefektivní věci. Konkrétně se jednalo o skriptovací jazyky, které nebyly kompilovány do strojového kódu, ale interpretovány. BASIC byl někdy také interpretován, ale tyto skriptovací jazyky byly určeny hlavně pro zpracování textu - například Perl, Python (tenkrát to nebylo příliš slavné), PHP, Ruby - to jsou skriptovací jazyky ​​že v jednom nebo do určité míry stále žijí (všem se podařilo objevit před rokem 2000, dokonce mnohem dříve).

    Pojďme si je trochu projít, protože to jsou specifické věci a nyní se používají na spoustě míst. co je to za nápad? Pokud nezkompilujeme, můžeme povolit mnohem více. Program se například může podívat na svůj kód a nějak ho použít; ví, co se v ní děje, a díky tomu můžete dělat spoustu zajímavých věcí.

    Perl byl navržen pro zpracování textu - v té době už bylo v počítačích tolik paměti, že jste tam mohli vložit nějaký text a udělat s tímto textem něco užitečného (například počítat slova, nějaká hledat). Ale podle mého názoru to bylo navrženo lidmi, kteří byli tak trochu blázni, protože je o tom takový vtip: "Jakákoli znaková sada napsaná v Perlu je správný program." Podle mě se na to dá jen psát, nedá se to číst. Když se podívám na kód v Perlu a snažím se něčemu porozumět, nerozumím ničemu. Možná, kdybych ho znal lépe, něco bych pochopil, ale jak jsem slyšel od těch lidí, kteří to ještě umí, říkají, že je to jednodušší přepsat. To znamená, že programy jsou krátké a opravdu snadněji se přepisují, než zjišťovat, co tam je, a opravovat to.

    Zhruba v té době, v polovině 90. let, se objevil internet. Nejdřív to byla pošta, stránky se statickým HTML, ale lidé tam chtěli přidat nějakou dynamiku, aby se vše dělo dynamicky, daly se vyplňovat nějaké formuláře, dělat knihy hostů, něco jiného. V souladu s tím to vyžadovalo určitý druh interakce, přišli s protokolem, jak to interaguje, a co je nejdůležitější, s generováním těchto statických (podmíněně) stránek, které budou uživateli „vyplivnuty“ v reakci na jeho požadavek.

    Obecně se nic jiného než Pearl v té době nehodilo. Psát v čistém C nebo C++ handler byl špatný nápad. A pro nedostatek lepšího v té době (a dostatečně dlouho), Pearl byl jazykem pro vývoj webových aplikací. Samozřejmě, že rozsah nelze srovnávat s tím, co se děje nyní.

    PHP se objevilo jako ... náhodou. Jeden člověk s tím docela rychle přestal - udělal si nějakou vlastní stránku, měl nějakou knihu návštěv, něco jiného, ​​něco. A napsal sadu některých maker pro Perl, která vypadala jako C, protože věděl, jak používat C, jednoduše proto, že to pro něj bylo tak pohodlné. A nazval to Osobní domovská stránka. Sdílel to a řekl: "Lidé, podívejte se, co jsem napsal, tady je všechno mnohem jasnější než na Perlu a můžete to upravit." A lidem se to líbilo.

    Pak tu věc nechal. Obecně lze říci, že díky tomu začalo toto PHP žít a postupem času se stalo mnohem populárnějším než Perl. Ale toto jeho "porodní trauma" (nápad jako soubor maker pro Pearl) si s ním zahrálo dost krutý vtip. Jazyk je zvláštní. To znamená, že se to vyvíjelo samo, nikdo to nenavrhoval, nikdo neřídil vývojový proces (ani společnost, ani nikdo), ale bylo mnoho skupin, z nichž každá pila, co se jí líbilo. Tím pádem se tam funkce volají jinak, není tam ani styl, vše je přes podtržení, obecně i tak, nastavení je tu a tam a jak to všechno bude fungovat, není moc jasné. Ale můžete si sednout a psát v PHP za dvě hodiny, protože si to myslel.

    Python a Ruby: Ruby je nyní méně populární, Python je tak nějak lépe "hoblovaný", o tom později. Je jasné, že v té době to byly (přednášející ukazuje na Perl, Python, Ruby, PHP) vysoce specializované jazyky pro vysoce specializované účely. V obecném případě v té době nikdo nenapsal žádné systémové programování, žádnou obchodní logiku a nyní to moc nedělá.

    Kompilované jazyky z 90. let

    Půjdeme přibližně ve stejný čas, ale jiným směrem. C++ se u nás tehdy používalo skoro na všechno, co bylo potřeba napsat ne pro web, ne pro zpracování textu, ale právě pro aplikace, pro operační systémy, pro hračky - obecně pro cokoliv. Ale C++ je strašidelný jazyk, opravdu. Proč? Protože za prvé zdědil všechny problémy C kvůli zpětné kompatibilitě. Pořád jich může zabít milion různé způsoby, stejné, které byly v C (samozřejmě byly přidány nové způsoby v C ++). Přitom pokud vše dobře a správně napíšete, jak to zamýšleli autoři C++, tak už se samozřejmě nedalo zabít starými céčkovými způsoby a zdá se, že tam bylo jich méně. Měl však velmi zvláštní vlastní objektový model. Rozdělení programu na moduly, na kousky, nějak přišlo z C (pokud víte, jak napsat include v C nebo C++ - ve skutečnosti to bylo koncipováno jako pouhé vložení textu knihovny do vašeho programu, v důsledku toho, když napíšete hromadu include, máte vše - pokud je to „primitivní“, jako to bylo na úplném začátku - vše se vloží do jednoho souboru a pak se to všechno strašně dlouho kompiluje, protože to jde několikrát Stejný Pascal, Virtovský, byl v tomto ohledu mnohem promyšlenější, pozdější verze jsou ještě lepší.

    Obecně má C++ spoustu nedostatků. Kvalifikace programátora musela být vysoká, aby mohla psát v C++, a takoví programátoři byli drahí (jak školení, tak něco jiného, ​​to znamená, že je těžké najít programátory na trhu, musí hodně platit, no, obecně o to nejde... ). A naše počítače počítají stále rychleji, zlevňují, lidé si kupují nové počítače a chtějí Další aplikace, více hraček pro telefon, obecně - více radosti.

    Tak se zrodila Java. Existuje také docela úsměvná historka o tom, jak tento jazyk dostal své jméno. Existují programátoři, pijí kávu neustále a v té době bylo v módě pít kávu, která rostla na ostrově Jáva. Jazyk byl koncipován jako jazyk pro vestavěná zařízení, zejména pro kávovar. Tak vznikl název...
    Co u ní obecně začalo, co v ní bylo dobrého a proč si získala velkou oblibu? Nejprve se úplně zbavili Sishnoiova dědictví. Žádné ukazatele, tím méně způsoby, jak si ustřelit část těla a všechno rozbít. Zadruhé, představili mnohem novější myšlenky z hlediska objektový model- to znamená, že C++ se objevil mnohem dříve než Java a používal archaičtější, "divoký" objektový model. No a tady (přednášející ukazuje na Javu) už to bylo tenkrát promyšlenější a teoreticky lidé přemýšleli, aplikovali v praxi a vše udělali mnohem cool.

    A konečně třetí. Naše programy v Javě nebyly sestaveny do strojového kódu, ale do kódu pro virtuální stroj. To znamená, že jste měli virtuální stroj (VM) JVM - Java. Vaše programy byly sestaveny do jakési mezilehlé reprezentace a poté s pomocí tohoto stroje již byly provedeny. co to dalo? Za prvé se zpomalil, za druhé žral paměť strašnou silou, za třetí byl přenosný kamkoli (teoreticky) - i do kávovaru, dokonce i do mlýnku na kávu, dokonce i do počítače, dokonce i do mobilu. Na jednu stranu je to dobře, to znamená, že jste právě napsali implementaci virtuálního stroje a pak všude spouštíte své Java programy. Ale na druhou stranu je špatné, že v té době bylo na stejném telefonu málo paměti, byl nízký výkon a to vše se navíc začalo otupovat a zpomalovat.

    Ale ani to není to hlavní, pro co byl jazyk obecně vynalezen. Jazyk Java byl vynalezen, aby snížil požadavky na kvalifikaci programátorů. To znamená, že horší programátoři umí psát dobré programy v Javě, protože neumožňuje psát špatné programy - neexistují žádné prostředky k psaní špatných programů. Tam můžete psát jen dobré programy. Tedy v chápání tvůrců jazyka.

    To znamená, že pokud v C, v C++, v Pythonu, na čemkoli můžeme vypěstovat nějakou strašlivou smetiště z našeho projektu, kde máme všechno pomíchané, běžící hodiny a ještě něco. Na Jávě je také možné chovat popelnici, ale k tomu už musíte vynaložit určité úsilí. To znamená, že ve výchozím nastavení to není „skládka odpadu“, ukazují se další problémy, že se tam něco zdědilo, zdědilo - obecně se deset nepříliš smysluplných ukazuje jako jedna smysluplná linie. Ale možná takový středně zkušený programátor dokáže napsat docela kvalitní kód.
    Už jsme skoro na konci. U nás se jako další objevilo .Net (dotnet) a konkrétně nás zajímá C # (téměř to samé [přednášející ukazuje na Javu], tedy rozdíly v detailech, pokud si mezi nimi vyberete - podívejte se, kde zaplatíte více peněz).

    A ještě jedna věc - JavaScript. Nemá nic společného s jazykem Java, objevil se ve stejném roce - slovo bylo módní, licencovali ochranná známka použít.

    Na co je nejdůležitější si dát pozor? (Přednášející kreslí šipky z C++ do Javy, .Net, C#, JavaScript a PHP). Chcete-li napsat jednoduchý program v jednom z těchto jazyků a v mnoha dalších - pokud znáte C ++, obecně nepotřebujete znát nic jiného - vezmete a napíšete v C ++ a pak na začátku přidáte dolary , něco jiného udělá maličkosti a na čemkoli vám to začne fungovat (lektor ukazuje na jazyky, ke kterým byly šipky z C++ přiřazeny). To znamená, že jsou si v některých jednoduchých věcech extrémně podobní. Pokud řešíte nějaké školní problémy, vzdělávací problémy, něco jiného (nenavrhujete velký projekt - máte jeden soubor, který čte čísla, zobrazuje čísla v konzoli, dělá něco jiného), tak mezi těmito jazyky není téměř žádný rozdíl . Je vidět, že JavaScript a PHP jsou specializované, všechno mají trochu jinak. A zde (přednášející ukazuje na Javu a C #) je rozdíl velmi malý.

    Od té doby se objevily všechny možné další zajímavosti, ale není jasné, zda budou žít nebo úspěšně zemřít. Co teď, pro jaké úkoly to používají?

    Výběr jazyka v závislosti na úkolu

    Předpokládejme, že stojíte před úkolem napsat ovladač pro grafickou kartu. Jaký jazyk dnes použijete? (Křičte z publika: Java!) Proč… Java je skvělá, ale proč ne v Ruby nebo PHP? (Přednášející mluví sarkasticky.)

    nízkoúrovňové programování

    Pokud píšete něco nízkoúrovňového, pak je nejlepší volbou C, ale slyšel jsem (ale neviděl), že se k tomu používá C++. Ale moc tomu nevěřím, protože v C můžete jasně ovládat - protože jste dali tolik bajtů paměti, znamená to, že jich bude tolik. A jak je v C++ (STL) implementován řetězec? No, nějak implementováno. A nakonec nevíme, jak a co se tam stane, možná nám dojde paměť na naší grafické kartě nebo se stane něco jiného. Proto C stále žije a neumírá, stále existují takové úkoly programování systému - napsat operační systém, napsat ovladače, napsat něco jiného - C je na to skvělé. Navíc se nyní objevují všemožná zařízení (Internet věcí slibuje, že to brzy přijde), která žijí na baterie (a samozřejmě jich budou miliony, všechno bude ovíjeno tímto internetem věcí) , musí být velmi levné a spotřebovávají velmi málo elektřiny. Podle toho tam budou 2 KB paměti, procesor na 5 kHz a samozřejmě co do toho našroubovat nějaký virtuální stroj resp. skriptovací jazyk v blízké budoucnosti to nevyjde - to znamená, že budeme muset něco napsat v C. A dokonce i nyní, například výpočty na grafické kartě (OpenCL nebo nějaká jiná technologie) - nepřicházejí s novým jazykem pro psaní programů pro ně - dělají C s určitými velkými omezeními. Jen proto, že lidé už vědí jak, proč se učit něco nového? Formálně je to pravděpodobně také v jistém smyslu C.

    Webové programování

    Řekněme, že chcete psát nový facebook(sociální síť). Na co to napíšeš? (Z publika se mluví o HTML a CSS.) HTML, CSS je design a my chceme, aby tam bylo možné přidávat fotky, spřátelit se, zanechávat komentáře.

    Pro skriptovou část – tedy to, co se bude dít na straně klienta – je to JavaScript. Navíc se někdy JavaScript vygeneruje v jiném jazyce a odešle (stane se, že se skript vygeneruje ... protože je někdy jednodušší zpracovat některé změny v logice).

    Překvapivě je to napsané v PHP – a Facebooku a mnoha dalších velkých projektech. Samozřejmě jsem si musel psát své vlastní věci, aby to stále fungovalo dobře, a ne jako dělané, ale udělali to. V principu je jedno v čem píšeš, ale Perl nedoporučuji. Tady a teď samozřejmě nikdo nepíše pro web nic od začátku. Každý píše nějaký rámec nebo něco jiného. Internetový obchod? Stáhli jsme si framework pro internetový obchod – to je vše, napsali jsme internetový obchod.

    Obchodní programování

    Dále chcete napsat nějakou nudnou bankovní aplikaci. Nebo máte například někoho, kdo prodává sim karty? Možná jste si někdy koupili telefon nebo tak něco a řekli vám: „Tady systém visí, nemůžeme nic dělat.“ Na co takovou žádost napíšete? (Výkřik publika o Pythonu) Takové věci nemůžete psát v Pythonu, co jste?! V Pythonu by nemělo být napsáno nic pro podnikání. Proč? Protože když něco píšete v Pythonu, nemůžete v procesu psaní najít významný počet chyb. Python je dynamicky typován všemi možnými způsoby a obecně tam můžete skrýt chybu tak, že se objeví v takové situaci, že ani nechápete, co tam ti pokřivení uživatelé udělali, že se vám všechno porouchalo. To znamená, že je lepší psát v Pythonu pro sebe, malé skripty - rozumíte tomu, co se tam děje a co se dělá. No, nebo něco, co vám nevadí vyhodit: chcete něco uvést před konkurencí, tak co když se to pokaždé porouchá. Napsali jste v Pythonu a to je vše - zachytili jste trh. A pokud něco píšete delší dobu, například nějakou bankovní aplikaci (aby schvalovala půjčky, něco jiného) - napíšete to v Javě. Protože tam jde o vážnou věc, papíry, peníze, doklady, ještě něco, ale nesmí se to tak pokazit, aby se všechno rozbilo, jinak se lidi urazí - peníze jim odešly a nikam nedosáhly, protože máte v určité chvíli se řetězec změnil v číslo nebo naopak. Takže to znamená, že metodicky bereš a píšeš v Javě, píšeš... No, nebo na .Netu se takové situace v zásadě také stávají. Tam samozřejmě můžete také narazit na problémy, ale pravděpodobnost je stále o něco nižší.

    Programování pro armádu, letecký průmysl

    A teď si představte, že se rozhodli poslat vás na Měsíc v raketě. Čemu byste dali přednost při psaní kódu, který ovládá motory rakety? Pojďme se podívat. To asi (přednášející ukazuje na Perl, Python, PHP, Ruby) nestojí za to - zpomaluje se, děje se něco jiného, ​​no, obecně bych nesouhlasil s létáním na takové raketě. V C++? Abych byl upřímný, ani bych ne, protože v C++ je příliš mnoho způsobů, jak se zabít. Když jste někde ve vesmíru, není to moc dobré.

    Možná v Javě? Všechno se tam zdá být docela spolehlivé a architektura je dobrá, žádné divoké typy, žádné přetečení paměti navíc. Řekněme, že nastal ten nejzásadnější okamžik a naše Java se rozhodla, že za nás bude sbírat odpadky. Musíme přistát, zpomalit a ona říká: "Ne, odpadky jdou." Obecně ani moc ne.

    Abych byl upřímný, byl bych raději, kdyby byl tento program napsán v Pascalu. Samozřejmě nemám Pascala rád, ale v takových věcech by to bylo velmi cool.

    Použití více jazyků pro vývoj softwaru najednou

    Co by se mělo říci o moderních jazycích obecně. Nyní mnoho projektů nežije v jednom jazyce, to znamená, že některé z nich žijí v jednom jazyce, některé v jiném a některé více ve třetím. Například, pokud máte nějakou webovou aplikaci, která zpracovává divoké množství informací, přístupy na disky (dokonce ani do databází, ty jsou tak obrovské, že i tam již zapsaná databáze se nedá ani stáhnout) jsou pravděpodobně zapsány v některých low-level C, zapisovat na disk divoce rychle a tak dále. Přirozeně nemá cenu psát celý projekt v C. Možná existuje nějaká přechodná logika napsaná v Javě, která volá funkce C pro rychlé volání. No a frontend (to, na co se uživatel dívá), už je samozřejmě na něčem napsaný, na nějakých skriptech, na tom, co přímo spouští prohlížeč (JavaScript). A to vše spolu žije a úspěšně interaguje.

    Při vývoji některých aplikací, i těch velkých, někdy lidé dělají co? Vezmou to a napíší prototyp v Pythonu (jak to všechno bude fungovat), načrtnou to, přemýšlejí o nějaké architektuře. Psaní na něm je opravdu velmi rychlé - hodili prototyp, experimentovali s ním a řekli: „Páni! To je tak hustý! A kompletně přepsaný. Zdálo by se, že práci udělali dvakrát, což trvalo dvakrát déle (dobře, jeden a půl). Ale ne! Často se ukáže, že tento způsob není špatný, protože pokud okamžitě napíšete do něčeho, například v Javě, a pak se rozhodnete: „Ne, pojďme refaktorovat, úplně změnit architekturu a tak,“ strávíte 10krát více času. I takové věci existují a žijí.

    Podmínky úspěchu jakéhokoli programovacího jazyka

    Nyní si promluvme o tom, proč některé dobře vypadající jazyky nepřežily nebo nežily ve velmi omezeném prostoru. Když Wirth viděl, co špatné společnosti Apple, Borland a všechno, co udělaly s jeho Pascalem, přišel s ještě lepším jazykem - Oberon. Bylo to prostě divoce minimalistické - to znamená, že tam bylo velmi málo příkazů (Řetězce? Proč potřebujeme řetězce? Vytvoříme pole znaků!). No, něco se mu nepovedlo, do té míry, do jaké to šlo.

    Ještě jedna věc. Americká armáda byla požádána, aby je také vyvinula cool jazyk, na kterém vše funguje a vše lze napsat. Výsledkem byl poměrně obludný jazyk Ada, ve kterém se však stále něco píše, ale opět - pouze pro armádu.

    Co je za problém? Proč některé jazyky jako Python, které zpočátku žádná společnost nepodporovala, převzaly trh. PHP, které je také špatně navržené, se také ujalo a ukořistilo trh (většinu) samo. A všelijaké miliardy dolarů byly investovány (přednášející ukazuje na Adu) a nikam nešly, nic se nedělo. S čím to souvisí? Je to proto, že kolem těchto jazyků neexistuje žádná infrastruktura. To znamená, že jazyk může být vynikající, ale pokud neexistuje žádná dokumentace, pokud neexistuje komunita, která by mohla odpovídat na otázky (na Stack Overflow), a konečně, což je nejdůležitější, pokud neexistuje velká počet knihoven, jazyk nestřílí. To znamená, že jste například chtěli napsat web na Oberon. A co to je, proč ne? A problém začíná... Nemůžete nastavit svůj webový server na Oberonu tak, aby jej lehce otestoval, nemůžete připojit žádné knihovny, protože na Oberonu nejsou. A to vše se děje přes jakési berličky, síly jdou stranou a celkově plivete a píšete své stránky v čistém C místo Oberonu. A ty jazyky, které jsou schopny používat knihovny z jiných jazyků, žijí dobře. Stejný Python v těch místech, kde se zpomaluje. Obecně platí, že v C jsou napsány všechny možné standardní věci jako třídění a něco jiného a on (Python) ví, jak s nimi pracovat.

    Java má také nativní rozhraní Java. Toto je v podstatě C, to znamená, že tam (podle mého názoru chtějí vždy zakázat, ale zdá se, že ještě nezakázali) tyto jazyky mohou interagovat s existujícími knihovnami (hlavně Cs). A díky tomu berou a pracují. Chápete myšlenku, kterou se vám snažím sdělit, že? Nepište v těch jazycích, které nevědí, jak připojit C-knihovnu. No, pokud chcete použít něco skvělého. No a postupně získávají (jazyky) jakousi infrastrukturu. A žijí dobře.

    Programovací jazyk a kariérové ​​poradenství

    Nyní si promluvme o tom, jak porozumět tomu, co v životě chcete. Co se stane ze skvělých věcí? Můžeš dělat nějaké systémové programování, že? Je skvělé počítat tyto bajty, chcete spustit kvadrokoptéry, nějaké kamery, udělat něco jiného. Pak je C pravděpodobně vaše volba.

    Pokud chcete psát, možná ne ty nejzajímavější aplikace v životě, ale je pro vás skvělé je navrhovat, přemýšlet o tom všem a vydělávat spoustu peněz za to, že většinu času sedíte a nudíte se (za tohle musíte zaplatit pokud jste dobří, chybíte mi), tady jsou - Java, .Net. Jdeš pracovat do nějaké banky, píšeš, chodíš do práce v devět v bílé košili, máš dobrý plat a píšeš podle doporučení nejlepších Java vývojářů, oveček .Net a toho všeho ...

    Pokud chcete psát nějaké aplikace, nějaký prohlížeč, nějaké hračky, něco jiného, ​​pak je C++ skvělé. Pokud chcete psát weby, tak tady jsou, jazyky dle vašeho výběru (přednášející ukazuje Perl, Python, PHP, Ruby), není velký rozdíl. Jediná věc je, že PHP zemře dříve než Python, takže pokud jste příliš líní učit se nové věci, naučte se Python. Nevšimnete si velkého rozdílu, ale déle vydržíte.

    Co se stane s Ruby, je také nejasné. No, můžete také PHP, pokud jste se to již naučili, protože jsou tak jednoduché, že netrvá tak dlouho se tam znovu učit.

    A konečně je tu další oblast použití programovacích jazyků - to je, když je používá neprogramátor. Řekněme, že jste matematik, fyzik, chemik, analytik, kdokoli a potřebujete rychle něco spočítat, analyzovat nějaká data (biologům například, kolik lišek žije na Velitelských ostrovech). To vše můžete vložit do tabulky v Excelu nebo to něčím analyzovat. Dobře se k tomu hodí i Python, umí pracovat s textem a knihovny jsou plné všeho druhu, statistické a tak dále. Pokud chcete dělat nějaký druh strojového učení, zpracovávat nějaká data, předpovídat, pak to Python nyní dělá také nejrychleji. Je pravda, že je třeba poznamenat, že úkoly jsou velmi odlišné. Pokud například chcete okamžitě obchodovat na burze v podmínkách, kdy se kotace neustále mění, pak bez ohledu na to, jak cool Machine Learning napíšete v Pythonu, lidé, kteří to mají napsané v něčem rychlejším, budou mít čas koupit si vše dříve, dokud nebudete počítáni, i když jejich algoritmy jsou horší. Proto i tyto úlohy strojového učení (některé z nich) vyžadují vysoký výkon(a extrémně vysoké), a tedy i jiné jazyky.

    Jediný způsob, jak pochopit, co chcete, je vyzkoušet všechno. Teď řeknu jako jednu z vizí, jak si všechno můžete vyzkoušet. Jak se stát programátorem a být šťastný? Tak. S čistý břidlice začít. Zde se ve škole učíte svou matematiku, ruský jazyk a další povinné a volitelné předměty a vaše znalosti z oblasti programování se na tabuli promítají (lektor ukazuje na prázdnou tabuli) na tento moment. A chcete se stát šťastným člověkem, dělat to, co milujete, vydělávat spoustu peněz a nic si neodpírat a být šťastný.

    Jeden ze způsobů, jak toho dosáhnout. Existují samozřejmě nejrůznější inspirativní příběhy o lidech, kteří vůbec nechodili na vysoké školy, nebo je nechali a stali se miliardáři, majiteli firem a podobně. Ale je třeba poznamenat, že většina lidí, kteří se možná nestali miliardáři, ale také si dobře žijí, univerzitu v určitém okamžiku vystudovala.

    Jaká je naše situace se vstupem na VŠ (nyní studujete na škole)? Zatímco jste ve škole, musíte pochopit, že dalším krokem je zapsat se a postarat se o to. Složte zkoušku nebo vyhrajte olympiádu. Na zkoušce lze použít Pascal, C ++ (včetně čistého C), Python (nebudu je dále uvádět). Na olympiádě - stejný Pascal, stejný C++, stejný Python (teď si povíme o jeho problémech) a nejčastěji je tam Java. Cokoli jiného se stane v závislosti na olympiádě, ale o to nejde.

    Jak vypadá harmonogram distribuce jazyků na celoruské olympiádě v informatice? Lidé, kteří se účastní celoruské, nejlepší olympiády, o čem píší? Vypadá to takto (zde to znamená Pascal a tady je to asi 2000 a tady je to asi nula, tady je to C ++ a tady je to 2015).

    V roce 2000 skoro nikdo nepsal C++. Uplynulo 15 let a téměř nikdo nepíše v Pascalu, přestože Pascal je moderní. Je to jazyk, který umí v podstatě to samé. Je to tak, že všichni jsou příliš líní se to naučit se všemi druhy nových trendů a všichni pokračují v psaní v Borland Pascal, což samozřejmě nemůže nic dělat. V C++ lidé píší nějaké algoritmy (STL) pro řazení - skvělé, napsali sort () a je to. Na Pascalu, na obvyklém, na starém - to je problém. Napsali nějakou sadu (potřebu) - vynikající, napsali to v C ++, v Pascalu zase samá muka. Na nových Pascalech to samozřejmě můžete udělat, ale obecně stojí peníze. Možná jste si toho nevšimli, ale je to tak.

    Existuje také Java, ale v Javě je spousta písmen. Je to pro velké projekty, ale pro malé jednorázové programy to dopadá dost špatně, protože je tam spousta písmen navíc. Ale i někteří lidé píší, můžete se na tom naučit psát. Ale není k dispozici na USE a USE bude muset být stále z větší části.

    Co je na zkoušku nejlepší? Na zkoušku je nejlepší (pokud nic neumíte a ve škole vás nic nenaučí) naučit se Python. Některé zkouškové otázky jsou na něm dobře vyřešeny. Na olympiádě se obecně ukazuje, že C ++ je (používá se), protože Python je hodně pomalý, ne všechno se na něm řeší.

    Takže jste se naučili nějakou malou podmnožinu jazyka a nějaké algoritmy (možná) a vyřešili spoustu problémů, abyste získali diplom z olympiády a šli na univerzitu, abyste získali vyšší vzdělání.

    Nyní budu mluvit o tom, jak budujeme kurz na HSE, v jakém pořadí se jazyky vyučují, jak se studují v aplikované matematice a informatice Fakulty aplikovaných věd, což děláme s Yandexem. V prvním semestru - Python (ne v plném rozsahu, o tom, jak by vás měli učit ve škole) a C++ (již širší, mnohem širší, než se běžně učí na školách). Řekněme hned, abyste se nebáli, když to najednou chcete udělat, řeknete si: „Co, já už to všechno vím, proč bych měl jít někam studovat? Radši půjdu jinam." Pro ty, kteří již umí dobře programovat, je tu možnost jít rovnou na studium algoritmů, a to ve spíše teoretické přípravě. Teď se na ně nedíváme, tohle (ukazuje na tabuli) je pro ty, kteří programují průměrně nebo vůbec.

    První semestr vás naučí základy Pythonu, jen aby se lidé naučili programovat a aby se nikdo moc neurazil. Python se ve školách vyučuje jen zřídka, většinou lidé přicházejí se znalostí Pascalu nebo C++. V podstatě i Pascal, pokud je to masová škola. No, aby se nikdo nepohoršoval, všichni se učí nový jazyk (jakoby si byli rovni). A C++, jednoduše proto, že z C++ pak můžete jít kamkoli.

    Následuje kurz "Algoritmy" a samostatný projekt kurzu. Klasické algoritmy s implementací. Ne že bychom teoreticky něco vzali, vypočítali složitost. Na přednášce jsme vzali, vypočítali složitost, na semináři - vzali, implementovali algoritmus. Projekt je, že studenti dělají něco hotového. Jeden z projektů byl například: vypočítat... Řekněme, že máte v Moskvě hodně bytů a rozumíte: „Ach, mám spoustu věcí navíc, jeden si pronajmu. A stanoví nějakou cenu a nikdo si od vás nechce pronajmout byt - pravděpodobně příliš drahý. Nebo vám nasadili nějakou cenu, hned vám to stáhli a vy si říkáte: „Ach, asi jsem to levně minul“ – a vy jste také naštvaní. To znamená, že bylo nutné spočítat, kolik stojí pronájem bytu? Vy zadáváte data – vytvoří hodnocení za vás. Takový web, který se skládal z několika věcí: vzít věty, analyzovat, aplikovat nějaký algoritmus strojového učení (pravděpodobně) jednoduše a vytvořit krásnou webovou tvář, ve které si můžete něco vybrat, něco zajet, pár metrů, nějaký počet místností, počet saun, počet jacuzzi ve vašem bytě a zhruba odhadněte náklady. Tedy nějakou hotovou, nepříliš složitou věc. Zde to znamená (přednášející ukazuje na kurz o algoritmech) takový rázný C++, s konzolovým I/O. No a tady (přednášející ukazuje na nápis „projekt“) něco pod vedením mentora, třeba s databázemi, možná s parsováním textu a ještě něco.
    Pak přichází třetí semestr – předmět s názvem „Počítačové systémy“. Je tam docela dost assembleru k pochopení (velmi málo) a pak něco podobného čistému C a interakci s ním operační systémy, v podstatě systémové programování. A projekt na seminář je i něco na téma všemožných síťových interakcí, docela nízkoúrovňové: vyvinout nějakou utilitu, třeba rsync (synchronizace, asi znáte. V čistém C víceméně napište analog rsync, který budete mít přes síť synchronizované složky s veškerým přístupem k souborům a tak dále).

    A konečně čtvrtý. Ani nevím, jak to nazvat, je to taková směsice technologií potřebných pro skutečný vývoj, jako je vývoj webu. To je vše praktické využití databáze, opět něco podobného, ​​co se dělalo v projektu (přednášející ukazuje na projekt 2 kurzů), ale již více do hloubky. Tedy už takové víceméně konkrétní věci, praktické programování. Paralelně s tím existuje nějaká teorie, no, tady se pořád dělá věda.

    A po dvou kurzech se lidé rozejdou dělat to, co je zajímá, protože tato věc pokrývá takové základy programování poměrně široce a v tuto chvíli už lidé chápou, že dělat nechtějí počítačové systémy v žádném případě (například se jim nelíbilo systémové programování), ale chtějí se zabývat nějakými teoretickými algoritmy, obtížností počítání, vymýšlením nových věcí, distribuovaným nebo něčím jiným. Nebo si naopak myslí, že toho tu moc nemají ( lektor ukazuje na řádek prvního kurzu s Pythonem a C++) šel, pak ( lektor ukazuje na linii třetího kurzu se systémovým programováním) - jak se ti to nelíbí, počítej bajty a nastav si všemožná omezení čtení-zápis, dělej streamy, vlákna a něco jiného. A v souladu s tím si lidé vybírají nějaký směr a studují. Tedy v zásadě proto, aby se u vás nerozvinul „syndrom káčátka“ – jako první jste viděli svého Pascala a teď si řekli „Pascal je síla“; nebo pokročilejší - viděl jsi C++ a začal jsi o všech mluvit, že C++ je síla a všechno ostatní tam není moc dobré.

    Zde je potřeba se na to podívat (lektor ukazuje na seznam předmětů na tabuli) šířeji - to je jedna z metod, která byla zvolena zejména na HSE (objevila se nedávno, takže je celkem moderní) . Jsou i jiné způsoby, jak se seznámit. Jiné dobré univerzity mají trochu jiné pořadí a jiné akcenty. Ale také se snaží lidi seznámit se vším, co mají.

    Jak najít práci programátora

    Ty jsi ( lektor ukazuje na seznam kurzů) udělal všechno, naučil se na univerzitě, ještě dva roky dělal něco produktivnějšího a je potřeba jít do práce. Jak si vybíráte něco, s čím budete pracovat? Za prvé, všechno jste poznali, šli někam hluboko a už víte, co máte rádi. Musíte si přirozeně vybrat, co se vám líbí. Protože pokud milujete, budete investovat své úsilí, budete mít motivaci a obecně bude vše v pořádku. Protože nejde jen o peníze, ale o to, aby to pro vás bylo zajímavé a příjemné. No, a chcete se dostat dovnitř cool společnost, ucházet se o práci. Jakého člověka bych osobně rád viděl? Řekněme, že ke mně přijde sto studentů – musím vzít dva do práce nebo jednoho. Proč přicházejí, vůbec nechápu, kdo jsou, co jsou, jak se mají? V lepším případě mi ukážou diplom, který dostali na univerzitě, a já řeknu: „Páni! To je skvělý diplom, ale tohle není tak cool!” A mimochodem, mohu se mýlit. Možná měl ten člověk hodně volného času a mnohem lépe se učil.

    co by bylo skvělé? Nejprve nějaký open source projekt, který jste napsali od začátku do konce. Nejlépe, když dělám nějakou infrastrukturu, aby se data rychle četla, nebo něco jiného, ​​tak by mě samozřejmě zajímalo něco open-source napsat. Neudělali nějaký web, ale něco k tématu. Proč je to pro mě zajímavé? Mohu se podívat na váš kód, vidím, jak často se zavazujete, vidím, jak jste reagovali na chyby od uživatelů, chyby od vývojářů, kteří jej používají – vše se zaznamenává, podívám se na všechno a pomyslím si: „Páni, tato chyba má byl dva roky zavřený, pak jsi uživateli nezdvořile odpověděl, je tu něco jiného - neberu to. Takže toto je váš osobní projekt.

    Dále, co jiného by bylo skvělé? Chtěl bych vidět, jak jsi dopadl týmová práce. To znamená, že za mnou přijdete na pohovor a řeknete: „S kluky z univerzity jsme spláchli nějakou dobrou přihlášku. Udělal jsem tam databázi, udělali tam nějakou mobilní aplikaci a taky jsme tam měli jednoho kluka, designéra, kluka z technické podpory. Bylo nás pět a vytvořili jsme skvělý projekt.“ Dobře, podívám se na to, jaký je skutečně váš projekt, a říkám: "Jaký je váš?" Znovu se podívám na kód a pochopím, že umíte pracovat v týmu s lidmi.

    Programátor není ten, kdo sedí sám (takový indie) v garáži, někde se zhasnutým světlem, s nikým nemluví, nechá si narůst vousy a píše. Přesto existuje určitý druh interakce s lidmi. Třeba se šéfem, který vám může občas nadávat (šéfové jsou takoví, ne vždy laskaví). A vidím, že umíte pracovat s lidmi a dělá mi radost, když máte nějaký dobrý tým. I když to není dobré, je to lepší než žádné.

    Co bych si osobně ještě přál? Pokud jste se ukázali ve velkých projektech. Například jste něco svěřili linuxovému jádru, pokud se zabýváte programováním systému, opravili jste nějakou chybu. To znamená, že ukázali, že můžete číst kód někoho jiného a vědět, jak v něm provést nějaké změny. Podívám se: "Oh, opravdu, přišel jsi na něco složitého a opravil jsi nějaké chyby!" A začíná mě to opravdu bavit. Protože jsem... no, já nevím... tak můj programátor skončil, protože mu jeho konkurenti nabídli vyšší plat, a já naléhavě potřebuji někoho, kdo by mu zastrčil místo - vás. Vypadám, jako byste psal od začátku a nevíte, jak číst a upravovat kód někoho jiného, ​​a jsem naštvaný.

    A nakonec, v závislosti na konkrétní pozici, existují různé další věci. Pokud se ucházíte o práci analytika, rád bych, abyste vyřešili problémy s analýzou dat na Kaggle. Pokud se pouštíte do nějakých algoritmických věcí, byl bych rád sportovní programování udělal nějaké algoritmy. A nakonec, pokud jste přemýšleli o profesi, přečetli jste si, jak probíhají pohovory, setkali jste se s tím, že tam někteří lidé vyjadřují velkou nespokojenost: „Přišel jsem a ptají se mě, jaký je můj koníček. Sedím jako sova a neodpovídám, protože nemám koníčka,“ a myslí si, že to personalisté dělají. Ve skutečnosti se snaží pochopit, jak přátelští a adekvátní jste. Pokud jste nepřátelští a neadekvátní, pak bez ohledu na to, jak jste génius a workoholik, skvělý specialista s velkými znalostmi, bude pro tým obtížné s vámi spolupracovat a projekt nemůžete vytáhnout sami. Navíc, i když ho vytáhnete, dokážete si představit, jaká zátěž společnost čelí. A co zítra přijdeš a řekneš: "Zvyš mi plat 10x, jinak tě opustím." Firmy se samozřejmě do takové situace nechtějí dostat. Pěstování přiměřenosti a dobré vůle je proto v sobě samém stejně důležité (přinejmenším) jako rozvoj některých odborných dovedností.

    Suma sumárum, co k tomu říct? Které jazyky jsou dobré a které špatné? No a v rámci nějaké skupiny jazyků, například mezi Ruby, Pythonem a PHP, co si vybrat? Správná odpověď je samozřejmě Python, ale ve skutečnosti je rozdíl mezi nimi v počtu povolených chyb, v množství něčeho jiného - 5%, dobře, možná 10%. To znamená, že pokud již máte hotový projekt napsaný v PHP, pak nikdo se zdravým rozumem neřekne: „Přepišme vše v Pythonu.“ Řeknou: "Najmeme více vývojářů PHP a budeme pokračovat v psaní v PHP." Dobře, to je dobrá volba. Samozřejmě, pokud náhle začnete psát nějaký projekt, pak může být moudré zvolit Python hned. I když, také záleží. Možná máte na trhu spoustu levných PHP vývojářů a ty Pythonové jsou drahé a říkáte si: „Ano, technologie je více cool, ale ušetřím peníze za hotové vývojáře.“ A všechno je v pořádku, už tam chodíš a pracuješ.
    Jak si vybrat mezi Java a C++? Ano, děje se přesně to samé. Myslím, že ve chvíli, kdy se rozhodnete, v jakém jazyce začít nový velký projekt, získáte znalosti ve své profesní oblasti a budete schopni dělat správná volba. Právě teď si tuto volbu ještě nemusíte dělat, a tak vám radím, abyste dělali to, co vás baví.

    Základy, jak jsem řekl, samotné základy programování (co je funkce, co jsou if’s, for’s, pole, něco jiného) se lze naučit víceméně v jakémkoli jazyce. Například v C++, protože mnoho věcí je mu podobných a specifika v něm (na této úrovni) jsou nejméně a nejméně zbytečných písmen k psaní. Když se tedy naučíte nějaké složité architektonické věci, naučíte se a nemusíte se o to moc starat. To znamená, že hlavní je zkoušet, hledat, co se vám líbí, a když si uvědomíte, že už jsou 4 hodiny ráno, sedíte a píšete pro zábavu, protože se vám to líbí - pravděpodobně, v tomto v okamžiku je jasné, že jste našli svůj .

    Není žádným tajemstvím, že programátoři patří mezi nejlépe placené profesionály na světě. Rusko není výjimkou. dobří programátoři jsou zde také ceněny. A pokud máte zájem o rychle rostoucí a lukrativní kariéru, možná budete chtít studovat a stát se programátorem.

    Abych vám pomohl s tímto výběrem, shromáždil jsem údaje z různých stránek pro hledání zaměstnání. Ačkoli toto není úplný seznam, poskytuje pohled na nejžádanější programovací jazyky (požadované zaměstnavateli).

    9 nejžádanějších programovacích jazyků roku 2016

    Není divu, že SQL je na prvním místě v seznamu, protože se používá téměř všude a v širokém rozsahu. Databázové technologie jako MySQL, PostgreSQL a Microsoft SQL se používají na serverech velkých i malých podniků, nemocnic, bank, univerzit atd. Opravdu, téměř každý počítač a osoba s přístupem k databázi se nakonec dotkne SQL. Například všechny telefony se systémem Android a iPhone mají přístup k databázi SQL data s názvem SQLite a mnoho dalších mobilní aplikace, vyvinutý společností Google, Skype a Dropbox jej přímo používají.

    1. Jáva

    Technická komunita nedávno oslavila 20. výročí Javy. Je to jeden z nejrozšířenějších programovacích jazyků, který používá asi 9 milionů vývojářů a běží na 7 miliardách zařízení po celém světě. Je to programovací jazyk používaný k vývoji všech nativních aplikace pro Android. Popularita vývojářů v jazyce Java pochází ze skutečnosti, že tento jazyk má dlouhodobou kompatibilitu, která zajišťuje, že staré aplikace budou nadále fungovat nyní i v budoucnu. Jediným problémem je, že tento jazyk je poměrně obtížné zvládnout, zejména pro začátečníky.

    JavaScript je další z nejpopulárnějších a nejvýkonnějších programovacích jazyků a používá se k oživení webových stránek tím, že jsou interaktivní. JavaScript lze například použít k přidávání efektů na webové stránky, zobrazování vyskakovacích zpráv nebo vytváření her se základními funkcemi. Za zmínku také stojí, že JavaScript je skriptovací jazyk. Celosvětová Síť, který je ve výchozím nastavení zabudován do všech hlavních webových prohlížečů, včetně Internet Exploreru, FireFoxu a Safari. Téměř každý web nějaké obsahuje prvky JavaScriptu, což zvyšuje poptávku po vývojářích JavaScriptu. V posledních letech se také JavaScript začal používat jako páteř Node.js, serverová technologie který mimo jiné umožňuje komunikaci v reálném čase.

    C# (vyslovováno C-Sharp) je relativně nový programovací jazyk vyvinutý společností Microsoft pro širokou škálu aplikací. firemní aplikace které běží na .NET Framework. Evoluce C a C++, jazyk C# je jednoduchý, moderní, bezpečný a objektově orientovaný.

    C++ (vyslovováno C-plus-plus) je objektově orientovaný programovací jazyk. obecný účel, založený na jazyce "C". C++, který navrhl Bjarne Stroustrup v Bell Labs, byl poprvé vydán v roce 1983. Stroustrup spravuje rozsáhlý seznam aplikací napsaných v C++. Seznam zahrnuje aplikace Adobe a Microsoft, databáze MongoDB, většinu Mac OS/X a je to nejlepší jazyk pro výuku aplikací kritických pro výkon, jako je vývoj twitch her nebo zpracování zvuku/videa.

    Python je univerzální programovací jazyk, který byl pojmenován po "Monty Python". Python je jednoduchý a snadno čitelný (pro ty, kteří umí anglicky). Je to skvělý jazyk pro začátečníky i zkušené profesionály. Existuje mnoho kurzů programování pro Python, 8 z 10 oddělení informatiky vyučuje kódování pomocí Pythonu. Vzhledem k použití jazyka Python ve vzdělávání existuje mnoho knihoven vytvořených pro Python souvisejících s matematikou, fyzikou, přírodním zpracováním atd.

    PHP, vytvořené dánsko-kanadským programátorem Rasmusem Lerdorfem v roce 1994, nebylo zamýšleno jako nový programovací jazyk. Místo toho byl vytvořen, aby sloužil jako sada nástrojů, které pomáhají jeho tvůrci udržovat jej. osobní stránka na internetu (v PHP). Dnes je PHP skriptovací programovací jazyk na straně serveru, který lze použít k vytváření webových stránek napsaných ve formátu HTML. PHP je velmi oblíbený jazyk, protože je snadno použitelný pro začínající programátory, ale také nabízí mnoho pokročilých funkcí pro zkušenější programátory.

    Stejně jako Java nebo C je Ruby univerzální programovací jazyk. Ruby on Rails se používá k psaní webových aplikací a také k zajištění jejich integrace s webovým serverem a databází. Ruby on Rails má mnoho pozitivních vlastností, včetně rychlého vývoje a širokého výběru knihoven. Používá jej mnoho společností od malých začínajících až po velké podniky. Hulu, Twitter, Github a Living Social používají Ruby on Rails alespoň pro jednu ze svých webových aplikací.

    V ROCE 2014 rok společnosti Apple se rozhodli vymyslet svůj vlastní programovací jazyk. Výsledkem je Swift, nový programovací jazyk pro iOS a OS X pro vývojáře. Vývojáři tvrdí, že mnoho částí Swiftu znají z jejich zkušeností v C++ a Objective-C. Mnoho společností na západě, včetně American Airlines, LinkedIn a Duolingo, přešlo na Swift a tento jazyk bude v následujících letech získávat stále větší oblibu.

    Každý mistr má kompletní sadu nástrojů, z nichž každý je vhodný pro konkrétní úkol. Stejně tak u programování nikdy nebude existovat pouze jeden jazyk a každý jazyk se bude časem vyvíjet a zdokonalovat, aby držel krok s inovacemi.

    Proto, pokud se chcete stát vývojářem, je důležité ovládat více programovacích jazyků, abyste byli všestranní a adaptabilní a mohli se i nadále učit jazyky během své kariéry.

    Když se snažíte zjistit, který programovací jazyk se začít učit, pravděpodobně narazíte na pojmy „vysoká úroveň“ a „nízká úroveň“. Lidé neustále mluví o programovacích jazycích vysoké a nízké úrovně. Ale co to přesně znamená? A co to znamená naučit se kódovat? Začněme s definicemi každého z nich.


    Vysoko a nízkoúrovňové programovací jazyky

    V tomto článku budu hovořit o „vysokých“ a „nízkoúrovňových“ jazycích. Neexistují však žádná zvláštní kritéria pro jejich určení. Jen mějte na paměti, že to hodně závisí na vašem úhlu pohledu. Pokud jste programátor v jazyce C, Java se může zdát na vysoké úrovni. Pokud jste zvyklí na Ruby, Java se může zdát jako jazyk nízké úrovně.

    Strojový kód a nízkoúrovňové jazyky

    Ať už je jazyk považován za vysoce nebo nízkoúrovňový (nebo někde mezi), jde o abstrakci. Strojový kód nemá abstrakci – obsahuje jednotlivé instrukce, které jsou předány počítači. A protože stroje pracují pouze s čísly, jsou reprezentovány binárně (ačkoli jsou někdy zapsány v desítkové nebo šestnáctkové soustavě).

    Zde je příklad nativního kódu:

    Ve strojovém kódu musí být operace přesně specifikovány. Pokud je například potřeba načíst určitou informaci z paměti, strojový kód bude muset počítači sdělit, kde ji v paměti najde.

    Zápis přímo do strojového kódu je možný, ale velmi obtížný.

    Nízkoúrovňové programovací jazyky dodávají strojovým kódům trochu abstrakce. Tato abstrakce skrývá specifické instrukce strojového kódu za deklaracemi, které jsou pro člověka čitelnější. Jazyky symbolických instrukcí jsou jazyky nejnižší úrovně vedle strojového kódu.

    Ve strojovém kódu můžete napsat něco jako "10110000 01100001", ale assembler to může zjednodušit jako "MOV AL, 61h". Stále existuje téměř přímá shoda mezi tím, co je napsáno v jazyce symbolických instrukcí, a instrukcemi danými stroji.

    Přechodem na populárnější programovací jazyky skončíte s něčím jako C. Přestože tento jazyk není tak nízkoúrovňový jako jazyk symbolických instrukcí, stále existuje silná shoda mezi tím, co je napsáno v C a strojovým kódem. Většina operací napsaných v C může být naplněna malým počtem instrukcí strojového kódu.

    Programovací jazyky na vysoké úrovni

    Stejně jako jazyky nižší úrovně, vyšší úrovně pokrývají širokou škálu abstrakcí. Některé jazyky, jako je Java (kterou mnozí považují za programovací jazyky střední úrovně), vám stále poskytují velkou kontrolu nad tím, jak počítač spravuje paměť a data.

    Jiné, jako Ruby a Python, jsou velmi abstraktní. Poskytují vám méně přístupu k funkcím nižší úrovně, ale syntaxe je mnohem snazší číst a zapisovat. Věci můžete seskupit do tříd, které dědí vlastnosti, takže je stačí deklarovat pouze jednou.

    Proměnné, objekty, podprogramy a smyčky jsou důležitou součástí jazyků na vysoké úrovni. Tyto a další koncepty vám pomohou sdělit stroji spoustu věcí pomocí krátkých, výstižných prohlášení.

    Pokud má jazyk symbolických instrukcí téměř jednotnou shodu mezi instrukcemi a instrukcemi strojového kódu, jazyk vyšší úrovně může poslat desítky instrukcí s jediným řádkem kódu.

    Je důležité poznamenat, že „programovací jazyky na vysoké úrovni“ mohou zahrnovat cokoli abstraktnějšího než jazyk symbolických instrukcí.

    Jaký jazyk studovat: nízká nebo vysoká úroveň?

    To je určitě obecná otázka mezi novými a začínajícími programátory. Které programovací jazyky je lepší se naučit: vysoká nebo nízká úroveň? Jak je tomu u mnoha programovacích otázek, otázka programovacích jazyků na vysoké a nízké úrovni není tak jednoduchá.

    Oba typy jazyků mají důležité výhody. Nízkoúrovňové jazyky, protože vyžadují malou interpretaci počítačem, jsou obvykle velmi rychlé. A dávají programátorům velkou kontrolu nad ukládáním dat, pamětí a načítáním.

    Jazyky na vysoké úrovni jsou však intuitivní a umožňují programátorům psát kód mnohem efektivněji. Tyto jazyky jsou také považovány za „bezpečnější“, protože existuje více bezpečnostních opatření, která brání kodéru ve vydávání špatně napsaných příkazů, které mohou způsobit poškození. Ale nedávají programátorům stejnou kontrolu nad nízkoúrovňovými procesy.

    S ohledem na to je zde seznam oblíbených jazyků na stupnici od nízké po vysokou:

    • JavaScript
    • Krajta

    Samozřejmě je to trochu subjektivní. A zahrnuje pouze nepatrný zlomek dostupných jazyků.

    Ale to by vám mělo dát určitou představu o tom, na jaké úrovni jsou jazyky, které vás zajímají.

    Co chceš dělat?

    Při rozhodování, jaký jazyk se budete učit, by vaše první otázka měla znít: co chcete programovat?

    Pokud chcete programovat operační systémy, jádra nebo cokoli, co je potřeba pro maximální rychlost, může být dobrou volbou jazyk nižší úrovně. Velká část Windows, OS X a Linuxu je napsána v jazycích C a odvozených z C, jako je C++ a Objective-C.

    Mnoho moderní aplikace jsou napsány v jazycích vyšší úrovně nebo dokonce v jazycích specifických pro doménu. Python a Ruby jsou obzvláště oblíbené pro webové aplikace, ačkoli HTML5 je stále výkonnější. Jazyky jako Swift, C#, JavaScript a SQL mají své silné a slabé stránky.

    Nedávno jsem četl téma na fóru o programování a narazil jsem na zajímavý návrh: studujte obě úrovně najednou. Získáte hlubší porozumění typům abstrakcí, díky kterým je jazyk vyšší úrovně efektivnější.

    Naučit se dva jazyky současně samozřejmě není snadné, takže je možná budete chtít trochu prodloužit. A výběr dvou jazyků, které jsou si nejpodobnější, může být užitečný.

    Opět jsme zpátky u toho, o čem jsem mluvil dříve: vyberte si jazyk podle toho, co chcete dělat. Udělejte si průzkum, abyste zjistili, jaké jazyky lidé ve svém oboru používají. Pak použijte tyto informace k výběru jazyka na vysoké a nízké úrovni a začněte se je učit.

    Brzy uvidíte paralely a mnohem hlouběji pochopíte, jak programování funguje.

    Soustřeďte se na cíl, ne na prostředky

    Existuje mnoho kritérií, která můžete použít k výběru programovacího jazyka. Jedním z kritérií je vysoká a nízká úroveň. Ale téměř v každém případě byste měli použít kritérium, které chcete naprogramovat.

    Váš projekt může mít prospěch z nízkoúrovňového jazyka. Nebo by to mohlo být mnohem efektivnější na vysoké úrovni. Správný nástroj pro danou práci si musíte vybrat sami. Zaměřte se na svůj cíl a pokaždé si vyberte správný jazyk.

    Máte zkušenosti s jazyky vyšší a nižší úrovně? Dáváte přednost jednomu před druhým? Podělte se o své myšlenky v komentářích níže!

    PROGRAMOVACÍ JAZYK A JEHO TYPY

    Programovací jazyk je formální znakový systém určený k psaní počítačových programů. Programovací jazyk definuje sadu lexikálních, syntaktických a sémantických pravidel, která definují vzhled programy a akce, které bude provádět performer (počítač) pod jeho kontrolou.

    Vysokoúrovňový programovací jazyk je programovací jazyk navržený pro rychlost a snadné použití programátorem. Hlavním rysem jazyků na vysoké úrovni je abstrakce, to znamená zavedení sémantických konstrukcí, které stručně popisují takové datové struktury a operace s nimi, jejichž popisy ve strojovém kódu (nebo jiném nízkoúrovňovém programovacím jazyce) jsou velmi dlouhé a těžko pochopitelné.

    Nízkoúrovňový programovací jazyk (low-level programming language) - programovací jazyk blízký programování přímo ve strojových kódech použitého reálného nebo virtuálního (například Java, Microsoft .NET) procesoru. Mnemotechnická notace se obvykle používá k označení strojových instrukcí. To umožňuje zapamatovat si příkazy nikoli jako posloupnost binárních nul a jedniček, ale jako smysluplné zkratky slov lidského jazyka (obvykle angličtiny).

    PROGRAMOVACÍ JAZYKY NÍZKÉ ÚROVNĚ

    První počítače musely být naprogramovány pomocí binárních strojových kódů. Programování tímto způsobem je však poměrně časově náročný a obtížný úkol. Pro zjednodušení tohoto úkolu se začaly objevovat nízkoúrovňové programovací jazyky, které umožnily nastavit strojové instrukce ve formě, která byla pro člověka srozumitelnější. Chcete-li je převést na binární kód byly vytvořeny speciální programy- překladatelé.

    Obr. 1. Příklad strojového kódu a jeho reprezentace v assembleru

    Překladatelé se dělí na:

      kompilátory - převádějí text programu na strojový kód, který lze uložit a poté použít bez kompilátoru (příkladem je spustitelné soubory s příponou *. exe);

      interpreti – převedou část programu do strojového kódu, spouštějí jej a poté přejdou k další části. V tomto případě se při každém spuštění programu použije interpret.

    Jazyk symbolických instrukcí je příkladem jazyka nízké úrovně. Nízkoúrovňové jazyky jsou orientovány na konkrétní typ procesoru a berou v úvahu jeho vlastnosti, proto, aby bylo možné přenést program assembleru na jinou hardwarovou platformu, musí být téměř kompletně přepsán. Existují také určité rozdíly v syntaxi programů pro různé kompilátory. Je pravda, že centrální procesorové jednotky pro počítače AMD a Intel jsou prakticky kompatibilní a liší se pouze některými specifickými příkazy. Ale specializované procesory pro jiná zařízení, například grafické karty, telefony, obsahují značné rozdíly.

    Výhody

    Nízkoúrovňové jazyky vytvářejí efektivní a kompaktní programy, protože vývojář má přístup ke všem možnostem procesoru.

    Nedostatky

      Programátor pracující s nízkoúrovňovými jazyky musí být vysoce kvalifikovaný, musí dobře rozumět struktuře mikroprocesorového systému, pro který je program vytvářen. Pokud je tedy program vytvořen pro počítač, musíte znát zařízení počítače a zejména zařízení a vlastnosti jeho procesoru;

      výsledný program nelze přenést do počítače nebo zařízení s jiným typem procesoru;

      významný čas na vývoj velkých a složitých programů.

    Nízkoúrovňové jazyky se obvykle 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 možnost přímého přístupu k hardwarovým zdrojům.

    Assembler je nízkoúrovňový jazyk, který je dodnes široce používán.

    PROGRAMOVACÍ JAZYKY NA VYSOKÉ ÚROVNI

    Prvním programovacím jazykem na vysoké úrovni je počítačový jazyk Plankalkül, který vyvinul německý inženýr Konrad Zuse v letech 1942-1946. Překladač pro něj však existoval až v roce 2000. Prvním jazykovým překladačem na vysoké úrovni na světě je PP (Programming Program), neboli PP-1, úspěšně testován v roce 1954. Překladač PP-2 (1955, 4. na světě translator) již optimalizoval a obsahoval vlastní loader a debugger, knihovnu standardních procedur a PP translator pro počítač Strela-4 již obsahoval linker (linker) z modulů. Široké používání jazyků na vysoké úrovni však začalo s příchodem Fortranu a vytvořením kompilátoru pro tento jazyk (1957).

    Jazyky na vysoké úrovni se snaží nejen usnadnit řešení složitých softwarových úloh, ale také usnadnit portování softwaru. Použití různých překladatelů a tlumočníků zajišťuje, že programy napsané v jazycích na vysoké úrovni mohou komunikovat s různými operačními systémy a hardwarem, přičemž jejich zdrojový kód zůstane v ideálním případě nezměněn.

    Tento druh oddělení jazyků na vysoké úrovni od hardwarové implementace počítače má kromě mnoha výhod také nevýhody. Neumožňuje zejména vytváření jednoduchých a přesných návodů k používanému zařízení. Programy napsané v jazycích vyšší úrovně jsou pro programátora srozumitelnější, ale méně efektivní než jejich protějšky napsané v jazycích nižší úrovně. Jedním z důsledků toho bylo přidání podpory toho či onoho nízkoúrovňového jazyka (assembly language) k řadě moderních profesionálních vysokoúrovňových programovacích jazyků.

    Příklady: C, C++, C#, Java, Python, PHP, Ruby, Perl, Pascal, Delphi, Lisp. Jazyky na vysoké úrovni mají tendenci pracovat se složitými datovými strukturami. Většina z nich má integrovanou podporu typů řetězců, objektů, souborových I/O operací atd. Nevýhodou jazyků na vysoké úrovni je větší velikost programy ve srovnání s programy v nízkoúrovňovém jazyce. Proto se jazyky na vysoké úrovni používají hlavně pro vývoj softwaru počítačů 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á.

    Imperativní jazyky jsou založeny na několika důležitých myšlenkách, včetně reprezentace akcí jako matematických vzorců, konceptu datových typů a strukturní transformační věty.

    Program v imperativním jazyce je sestaven z funkcí (podprogramů). Programy v assembleru se mohou také skládat z podprogramů, a to není nic nového, ale jazyky na vysoké úrovni vám umožňují nemyslet na takové problémy, jako je organizace hovorů, předávání počátečních dat a vracení výsledků. Popis funkce se skládá z názvu, seznamu parametrů (počátečních dat), typu výsledku a akcí, které vedou k získání tohoto výsledku. Jedna z funkcí programu je hlavní, její provedení je dílem programu.

    Jednoduchým příkladem je funkce, která vypočítá sinus čísla. Lze jej nazvat sin, jeho počáteční data se skládají z jediného reálného čísla, výsledkem je také reálné číslo získané sečtením segmentu známé nekonečné řady (nebo provedením příkazu fsin matematického koprocesoru).

    Sada akcí, které lze provádět uvnitř funkce, je velmi omezená. Skládá se z vyhodnocování výrazů vzorce, volání dalších funkcí (což není samostatná akce – volání funkce je často součástí výrazu), přiřazení, větvení (skupina akcí, které se provádějí pouze při splnění určité podmínky) a smyčky (skupina akcí, které se provádějí opakovaně, počet opakování závisí na nějaké podmínce). Akce lze vnořovat do sebe. Může se zdát, že sada větví a smyček je příliš malá, ale není tomu tak. Je prokázáno, že jakýkoli algoritmus složený z funkčních bloků (na nízké úrovni - aritmetické instrukce a instrukce přenosu dat), podmíněných a nepodmíněných skoků lze transformovat na ekvivalentní algoritmus složený pouze ze strukturálních bloků - funkčních bloků, větví a cyklů s kontrolou stavu. na konci. Toto tvrzení bylo formulováno v článku Corrada Bohma a Giuseppe Jacopiniho „Vývojové diagramy, Turingovy stroje a jazyky pouze se dvěma pravidly formování“ (Communications of ACM, Volume 9 / Number 5 / May, 1965).

    Pokud potřebujete někde uložit mezivýsledky k provedení nezbytných akcí, jsou uvnitř funkce umístěny speciální deklarace obsahující názvy proměnných a případně další informace. Adresy buněk RAM jim budou přiřazeny automaticky. V některých jazycích mohou funkce obsahovat také definice konstant a typů. V jazycích podobných Pascalu je funkce jako program a může zahrnovat definice nejen konstant, typů a proměnných, ale také jiných funkcí.

    Datová deklarace je seznam pojmenovaných objektů. Tyto objekty se nazývají proměnné. V řadě jazyků musí být specifikován typ proměnné, který určuje množství paměti potřebné pro její umístění a sadu operací, kterých se může účastnit. Ale nemusí tomu tak být, existují jazyky, ve kterých typ proměnné není nastaven a může se v průběhu programu měnit.

    Programovací jazyky obvykle poskytují poměrně omezenou sadu předdefinovaných typů proměnných a prostředků k vytváření nových typů. Některé z následujících typů jsou předdefinovány:

      přirozená a celá čísla různé kapacity;

      reálná čísla;

      symboly - písmena, čísla, znaky početních operací atd.;

      znakové řetězce;

      booleovské hodnoty;

      ukazatele

    Akce s daty lze provádět pomocí funkcí a operátorů.

    V jazyce C jsou například znaky, řetězce a booleovské hodnoty. Jeho typ znaku je ve skutečnosti krátké celé číslo a umožňuje aritmetiku.

    Nové typy vznikají spojením několika prvků stejného typu do jednoho celku (pole, každý prvek má pořadové číslo) nebo prvků různých typů (struktura, každý prvek má své jméno). Například ve většině jazyků nejsou komplexní čísla definována, ale lze je definovat:

    V některých jazycích (například v C++) lze pro generované typy definovat také operátory, což umožňuje používat proměnné těchto typů stejným způsobem jako proměnné předdefinovaných typů.

    Existují i ​​​​jiné způsoby, jak vytvořit nové typy. Například v Pascalu je možné vytvořit:

      typy rozsahů (zadáním rozsahu hodnot);

      typy výčtu (výčtem možných hodnot);

      set-types

    Proměnné typu sady lze použít k uložení informací o sadě vlastností některých objektů. Něco podobného lze udělat s proměnnými typu integer, jejichž bity jsou nastaveny tak, aby indikovaly přítomnost odpovídajících vlastností. Podle všeho je použití sad odolnější vůči chybám programátorů.