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

    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 jistě častá 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ích aplikací je napsáno 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!

    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 příkaz existuje nějaký „magický“ kód, byly použity nejrůznější slova podobná „lidské“ angličtině – nějaké add nebo mov – no, a pak byly vypsány registry nebo paměťové oblasti, proměnné, se kterými tyto provádět operace. Ale je jasné, že to obecně vyžadovalo i dostatečně velké mentální úsilí, 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 skvělý Basic jazyk a každý rozumný člověk si v něm vezme a napíše program - je to snadné." 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ě byl a stále je používán jako vyučovací 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 přivedlo na myšlenku, že přepisovat pokaždé na novou architekturu 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é nemáte vestavěné třídění (ve starověkém, modrém Borland Pascalu, nyní je již v moderních verzích) - existuje příklad (zdroj) třídění , lze jej zkopírovat a vložit. Ale pokud zde chcete třídit celá čísla, chcete zde reálná čísla a zde chcete řetězce, které lze mezi sebou porovnávat, museli jste napsat tři různá řazení, která dělají úplně to samé, jen mají různé datové typy. 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ě C nebo C++ handleru 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ě. Tam jste se stále mohli zabít milionem různých způsobů, stejnými, které byly v C (přirozeně 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 pro sebe a chtějí více aplikací, více hraček pro své telefony, 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. Za druhé, představili mnohem novější nápady, pokud jde o 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 mohou psát dobré programy v Javě, protože vám nedovolí psát špatné programy - neexistují prostředky, jak psát programy špatně. 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 ochrannou známku k použití.

    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. V souladu s tím zde budou 2 KB paměti, procesor na 5 kHz a samozřejmě nebude možné v blízké budoucnosti našroubovat nějaký virtuální stroj nebo skriptovací jazyk - což znamená, že budete muset psát něco 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 napsat 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 psá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 je požádala, aby vyvinuli skvělý jazyk, ve 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 další 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. Začínáme od nuly. Zde se ve škole učíte svou matematiku, ruský jazyk a další povinné i volitelné předměty a na tabuli (lektor ukazuje na prázdnou tabuli) se momentálně promítají vaše znalosti z oblasti programování. 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“. K pochopení je potřeba docela dost assembleru (velmi málo) a pak něco podobného čistému C a interakci s operačními 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 znamená, že se jedná o praktickou aplikaci databází, opět něco podobného, ​​co se dělalo v projektu (lektor ukazuje 2 kurzy k projektu), 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 se počítačovými systémy nechtějí nijak zabývat (např. neměli rádi systémové programování), ale chtějí se zabývat nějakými teoretickými algoritmy, složitostí počítání, vymýšlením nějakých nových věcí, distribuovanými 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 do skvělé společnosti, najděte si 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 jste pracovali v týmu. 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 získáte práci v nějakých algoritmických věcech, rád bych, abyste udělali nějaké algoritmy ve sportovním programování. 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 si moci správně vybrat. 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 .

    Existuje mnoho způsobů, jak měřit popularitu programovacího jazyka. Ale věříme, že analýza poptávky po specialistech je nejpřesnější. Vývojářům jasně ukazuje dovednosti, které potřebují ke zlepšení svých kariérních vyhlídek.

    Analyzovali jsme nabídky práce zveřejněné na Indeed.com, abychom identifikovali sedm nejžádanějších programovacích jazyků roku 2018. Některé jazyky, jako je Swift a Ruby, se mezi sedm nejlepších nedostaly, protože jsou u zaměstnavatelů méně oblíbené.

    Poptávka po Javě se v roce 2018 snížila o zhruba 6 000 pracovních míst ve srovnání s rokem 2017. Tento programovací jazyk je ale stále populární. Javu používají miliony vývojářů a miliardy zařízení po celém světě již více než 20 let. Může běžet na jakémkoli hardwaru a operačním systému prostřednictvím Java Virtual Machine.

    Všechny aplikace pro Android jsou založeny na Javě. 90 % společností žebříčku Fortune 500 používá Javu jako programovací jazyk na straně serveru.

    2.Python

    Popularita Pythonu vzrostla o přibližně 5 000 pracovních nabídek. Jedná se o univerzální programovací jazyk používaný pro vývoj webových aplikací. Je také široce používán ve vědeckých počítačích a dolování dat. Neustálá poptávka po vývojářích strojového učení pohání poptávku po Pythonu.

    3.JavaScript

    JavaScript je dnes stejně populární jako v roce 2017. Tento programovací jazyk používá více než 80 % vývojářů a 95 % všech webů k budování dynamických prvků na webových stránkách. Velký potenciál má řada front-endových JavaScriptových frameworků, jako jsou React a AngularJS. IoT a mobilní zařízení jsou stále populárnější, takže pochybujeme, že se v dohledné době dočkáme poklesu poptávky po JavaScriptových programátorech.

    4. C++

    Poptávka po C++ se od roku 2017 změnila jen málo. Tento programovací jazyk se používá k vytváření systémového / aplikačního softwaru, vývoji her, ovladačů, klient-server aplikací. Mnoho programátorů považuje C++ za složitější než programovací jazyky, jako je Python nebo JavaScript. Stále se však používá v mnoha starších systémech ve velkých podnicích.

    5.C#

    Popularita jazyka C# (vyslovováno „C sharp“) letos mírně poklesla. C# je objektově orientovaný programovací jazyk určený pro vývoj na platformě Microsoft .NET.

    C#, stejně jako C++, se používá při vývoji videoher, takže začínající programátoři by se měli naučit oba jazyky najednou.

    6 PHP

    Tento programovací jazyk na straně serveru vystoupal v našem žebříčku na šesté místo (ve srovnání s loňským rokem). Většina vývojářů používá PHP k implementaci funkcí, které HTML nepodporuje. A také pro interakci s databázemi MySQL.

    7. Perlička

    Poptávka po Perlu klesla zhruba o 3000 pracovních míst a v našem žebříčku zůstal na sedmém místě. Perl je nadále oblíbený u systémových a síťových administrátorů.

    Pohled do budoucnosti

    Jedná se o programovací jazyky, které ještě nebyly zahrnuty do našeho hodnocení. Ale v roce 2018 se staly populárnějšími. Sledujte je i v budoucnu!

    • Swift: Programovací jazyk pro iOS a macOS vydaný společností Apple v roce 2014, číslo 14 v našem žebříčku. Důvodem je, že mnoho vývojářských úloh uvádí požadavky jako „iOS“, aniž by specifikoval konkrétní jazyk. Swift si neustále získává na popularitě.
    • R: obsadil v našem hodnocení 11. místo. Očekáváme ale, že tento programovací jazyk za pár let raketově poroste. Získává si oblibu, a to jak v mezinárodním žebříčku, tak ve Spojených státech. Růst poptávky po vývojářích R je způsoben rostoucím používáním jazyka při analýze dat.
    • Rust : I když Rust není v našem žebříčku příliš vysoko, podle Google Trends se neustále vyvíjí.

    Další technologie, o kterých je třeba vědět

    Níže uvedené technologie nejsou formálně programovacími jazyky. Jsou ale zařazeny do seznamu požadavků, které zaměstnavatelé kladou na vývojáře.

    • SQL: Standardní dotazovací jazyk určený k ukládání a zpracování informací v databázích. Znalosti SQL jsou mezi zaměstnavateli velmi žádané. Je zmíněn ve více než 30 tisících volných pozic.
    • .NET: Platforma společnosti Microsoft pro vývoj desktopových, mobilních a webových aplikací. Používají ho programovací jazyky jako C#, Visual Basic a F#. A multiplatformní implementace technologie rozšiřuje .NET pro iOS, Linux a Android.
    • Uzel: Prostředí s otevřeným zdrojovým kódem, které vám umožňuje spouštět kód JavaScript na straně serveru. To poskytuje možnost používat jeden programovací jazyk pro celou webovou aplikaci. Doporučujeme věnovat nějaký čas učení Node.js.
    • MEAN : MEAN stack (MongoDB, ExpressJS, AngularJS a Node.js) je v našem žebříčku na 18. místě. Použití zásobníku umožňuje vytvářet plnohodnotné aplikace JavaScript. Learning MEAN poskytne základ pro vývoj v jednom z nejpopulárnějších programovacích jazyků na světě.

    Překlad článku „7 nejžádanějších programovacích jazyků roku 2018“ připravil přátelský projektový tým.

    Dobrý špatný

    Každý, kdo se rozhodne zvládnout základy procesu tvorby počítačových programů, si klade otázku, jaké jsou dnes nejoblíbenější programovací jazyky a které je nejlepší se naučit. A pokud je velmi snadné odpovědět na první otázku, pak bude muset student sám hledat odpověď na druhou na základě svých plánů a potřeb.

    Pojďme se rychle podívat na nejoblíbenější programovací jazyky, abyste si mohli vybrat ten, který vás láká, a začít se ho učit.

    programování?

    Před rozebráním hlavních programovacích jazyků a jejich popisem je nutné rozebrat samotný koncept.

    Programovací jazyk je formální znakový systém, který se používá k psaní počítačových programů. Jako každý jiný jazyk má svá vlastní lexikální, sémantická a syntaktická pravidla.

    Přidělte jazyky nízké a vysoké úrovně programování. K dnešnímu dni se používá hlavně ten druhý.

    Programovací jazyky vysoké a nízké úrovně

    Nízkoúrovňový programovací jazyk má strukturu blízkou struktuře.V tomto případě se příkazy neoznačují nulami a jedničkami, ale pomocí mnemotechnického zápisu. Nejznámějším nízkým programovacím jazykem je jazyk symbolických instrukcí.

    Práce s kterýmkoli z jazyků vyžaduje vysokou kvalifikaci, porozumění, psaní programů navíc zabere spoustu času. Zároveň pomocí nízkých můžete vytvářet malé, ale zároveň efektivní programy. Začínajícím programátorům se nedoporučuje, aby se s nimi seznamovali.

    Programovací jazyky na vysoké úrovni se vyznačují přítomností sémantických struktur pro popis operací. Jejich studium zabere mnoho času a jejich aplikace v praxi vyžaduje pozornost a pochopení základních struktur a pravidel syntaxe a slovní zásoby. Ale zároveň vám znalost jazyků na vysoké úrovni umožňuje vytvářet velké, barevné, multifunkční projekty v rekordním čase.

    Vysoká úroveň zahrnuje Pascal, Java, C, C++, C#, Delphi a mnoho dalších. Používají se k psaní softwaru a aplikačních programů.

    Nejoblíbenější programovací jazyky

    Jaké jsou dnes nejoblíbenější programovací jazyky?

    V posledních letech jsou za nejoblíbenější a nejžádanější považovány Java, C, C++, Python, C#, které patří mezi špičkové programovací jazyky. Tvoří základ moderních programů a používají se při psaní jakéhokoli velkého projektu. S těmito jazyky pracuje více než 70 % programátorů. Předpokládá se, že v příštích 10 letech po nich bude stále stejná poptávka jako dnes.

    Ruby, PHP, JavaScript jsou považovány za neméně populární. Většina odborníků se na ně zaměřuje.

    Obecně, bez ohledu na popularitu, každý více či méně seberespektující specialista musí znát alespoň několik jazyků různých úrovní. To je způsobeno tím, že většina velkých projektů je vyvíjena v různých jazycích. Například některé moduly jsou napsány pomocí C, jiné jsou vyvíjeny v Javě a další jsou napsány v Delphi.

    C, C++ a C#

    Začněme s rodinou C.

    Jazyk C je sestaven a vyvinut v 70. letech. Na jeho základě byly následně vytvořeny jazyky jako C ++ a C #, Java.

    C++ je výkonný jazyk navržený pro vytváření jak nízkoúrovňových utilit a ovladačů, tak velmi působivých aplikací a softwarových balíků.

    C# je moderní objektově orientovaný jazyk založený na C a C++. Má systém bezpečného typu. Jedním z jeho charakteristických rysů je, že je také velmi podobný dalšímu oblíbenému programovacímu jazyku - Javě.

    Jednou z nevýhod jazyka je, že umožňuje vytvářet aplikace pouze pro operační systém Windows a navíc je velmi těžký, což znamená, že programy v něm napsané zabírají hodně místa.

    Lze poznamenat, že v mnoha ohledech jsou C, C++ a C# programovací jazyky pro začátečníky. Po jejich zvládnutí si můžete být jisti, že učení nového jazyka vám zabere minimum času.

    Můžete se s nimi seznámit a psát své první aplikace ve speciálním prostředí Borland nebo Visual Studio.

    JavaScript

    JavaScript je jazyk s objektově orientovanými schopnostmi. Vyvinutý v roce 1996 a dnes jeden z nejpopulárnějších. Jazyk se používá hlavně ve webovém skriptování a funguje ve velkých prohlížečích, jako je Internet Explorer, Firefox, Opera. Úzce souvisí i s HTML a CSS, takže než se to začnete učit, musíte si osvojit základy těchto jazyků.

    Stojí za zmínku, že navzdory podobnosti názvu jsou JavaScript a Java dva zcela odlišné jazyky.

    Tento jazyk je vhodný pro ty, kteří jsou zaměřeni na tvorbu prohlížečů a skriptů, aplikací a doplňků k nim. Pokud plánujete vytvářet vlastní stránky, musíte ho také lépe poznat.

    Jáva

    Vzhledem k nejpopulárnějším programovacím jazykům nelze nezmínit Javu. Jedná se o objektově orientovaný programovací jazyk, který se používá od roku 1995. Je velmi lehký a běží na jakémkoli stroji Java jakékoli architektury. Slouží k vývoji aplikací pro Android a iOS.

    Krajta

    Python - jehož hlavním úkolem je zvýšit produktivitu vývojáře, učinit kód čitelnějším. Má malý seznam syntaktických konstrukcí a velmi působivou standardní knihovnu funkcí. Vývoj jazyka začal v 90. letech a pokračuje dodnes. Slouží k vývoji různých projektů, rozšíření a integrace dříve vyvinutých aplikací.

    Základy jazyka Python se lze naučit jak jako začátek programování, tak jako druhý doplňkový jazyk.

    rubín

    Ruby je programovací jazyk na vysoké úrovni, který obsahuje části Perl, Smalltalk, Eiffel, Ada a Lisp. Používá se od roku 1995. Hlavní předností jazyka je jeho jednoduchost a flexibilita. Vhodné jak pro psaní malých aplikací, tak pro vývoj seriózních programů.

    jazyk PHP

    PHP je poměrně populární skriptovací jazyk určený pro tvorbu webových aplikací. Poměrně často je také zařazen do seznamu „Programovacích jazyků pro začátečníky“ a doporučen ke studiu.

    S ním vytvoříte kvalitní webové aplikace ve velmi krátkém čase. Jazyk má jednoduchou a srozumitelnou strukturu, která vám umožňuje se jej naučit během několika dní.

    Závěr

    Zkontrolovali jsme nejoblíbenější programovací jazyky, jejichž studium vám pomůže v budoucnu úspěšně vytvářet vaše projekty a vydělávat peníze jako programátor. Neexistuje shoda na tom, který jazyk studovat, ale zároveň odborníci poznamenávají, že je žádoucí znát několik programovacích jazyků, protože to dále rozšíří pole činnosti a usnadní práci na různých týmových projektech.

    Programování pro začátečníky

    Na úvod bych chtěl říci, že spravovat počítač a vytvářet programy může každý. K vytváření počítačových programů nepotřebujete mít neuvěřitelnou inteligenci ani vzdělání v matematice. Vše, co potřebujete, je touha něčemu porozumět a trpělivost, abyste neopustili hodiny.

    Schopnost psát programy je stejná dovednost jako schopnost plavat, tančit nebo žonglovat. Někteří lidé to dělají mnohem lépe než jiní, ale každý může dosáhnout určitých výsledků správnou praxí. Právě z tohoto důvodu se děti již v raném věku stávají programovacími esy. Děti nejsou nutně skvělé; mají prostě tendenci učit se novým věcem a nebojí se dělat chyby.

    Navzdory tomu, že počítače působí jako velmi složitá elektronická monstra, odpočívejte. Jen velmi málo lidí přesně ví, jak fungují vyhledávače, které vám umožňují rychle najít potřebné informace na internetu, a někteří lidé nepřišli na to, jak řídit auto. Stejně tak se téměř každý může naučit psát programy, aniž by zacházel do podrobností o tom, jak přesně počítač funguje.

    Obecně řečeno, program říká počítači, jak vyřešit konkrétní problém. Vzhledem k tomu, že svět je plný problémů, počet programů, které lidé mohou napsat, je nekonečný.

    Abyste však mohli počítači sdělit, jak vyřešit jeden obrovský problém, obvykle musíte počítači sdělit, jak vyřešit celou řadu malých problémů, které tvoří ten velký problém.
    Ve skutečnosti není programování vůbec těžké a není něčím tajemným a nadpřirozeným. Pokud dokážete napsat pokyny krok za krokem, které osobě umožní najít váš dům, můžete napsat počítačový program.

    Nejtěžší částí programování je identifikace malých problémů, které tvoří problém, který potřebujete vyřešit. Protože jsou počítače naprosto hloupé, budete jim muset říct, jak mají provést jakoukoli akci.

    Pokud si myslíte, že vytváření programu je zajímavější než jeho používání, máte vše, co k vytváření počítačových programů potřebujete. Pokud se chcete naučit psát počítačové programy, potřebujete následující tři vlastnosti.

    Pronásledování. Pokud něco opravdu chcete, určitě to dostanete (ale pokud uděláte něco nelegálního, riskujete, že strávíte spoustu času ve vězení). Pokud se chcete naučit programovat, vaše touha vám určitě pomůže, bez ohledu na to, kolik překážek vám bude stát v cestě.

    Zvědavost. Zdravá dávka zvědavosti může podnítit vaši touhu experimentovat a zlepšit své programátorské dovednosti i po přečtení této knihy. Díky zvědavosti bude pro vás učení programování méně nudné a zajímavější. A pokud vás to zajímá, určitě se dozvíte a zapamatujete si více informací než kdokoli, kdo se o to zcela nezajímá (například váš šéf).
    Fantazie. Vytváření počítačových programů je dovednost, ale představivost pomůže tuto dovednost zdokonalit a usměrnit. Nápaditý začínající programátor vždy vytvoří mnohem zajímavější a užitečnější programy než skvělý nenápaditý programátor. Pokud nevíte, co dělat se svými programátorskými dovednostmi, váš talent jednoduše zemře bez fantazie.

    Vášeň, zvědavost a představivost jsou tři nejdůležitější vlastnosti, které by měl mít každý programátor. Pokud je máte, měli byste se starat jen o maličkosti: jaký programovací jazyk se naučit (například C ++), co je tam s matematikou atd.

    Mezi mnoha programovacími jazyky lze vždy najít přesně ten jazyk, který je vhodný pro řešení dané úlohy. Když se objeví nový typ problému, lidé vytvářejí nové jazyky.

    Počítač samozřejmě ve skutečnosti rozumí pouze jednomu jazyku, složenému z nul a jedniček, kterému se říká strojový jazyk. Typický program strojového jazyka vypadá asi takto:

    0010 1010 0001 1101

    UN 1100 1010 1111

    0101 IT 1101 0101

    1101 1111 0010 1001

    Dále je velmi důležité, pro jaký účel je jazyk vybrán - pro výuku programování nebo pro řešení konkrétního aplikovaného problému. V prvním případě by měl být jazyk snadno srozumitelný, strohý a pokud možno bez „nástrah“. Ve druhém - sice komplexní, ale účinný a výrazný nástroj pro profesionála, který ví, co chce.

    Nyní bych vám rád vysvětlil, že byste měli odlišit programovací jazyk (Basic, Pascal) od jeho implementace, která je obvykle prezentována jako součást programovacího prostředí (Quick Basic, Virtual Pascal) - sada nástrojů pro úpravu zdrojových kódů , generování spustitelného kódu, ladění, správa projektů atd. Syntaxe a sémantika programovacího jazyka je pevně stanovena v jazykovém standardu. Každé programovací prostředí poskytuje svůj vlastní interpret nebo kompilátor z tohoto jazyka, což často umožňuje použití konstrukcí, které nejsou pevně stanoveny ve standardu.

    Zvažte hlavní a oblíbené programovací jazyky

    assembler Jedná se o nejjasnějšího zástupce nízkoúrovňových jazyků, jejichž sada konceptů je založena na hardwarové implementaci. Jedná se o automatizační nástroj pro programování přímo v kódech procesoru. Strojové příkazy jsou popsány formou mnemotechnických operací, což umožňuje dosáhnout dostatečně vysoké modifikovatelnosti kódu. Vzhledem k tomu, že sada instrukcí na různých procesorech je různá, není třeba hovořit o kompatibilitě. Použití assembleru je užitečné v případech, kdy potřebujete přímo interagovat s hardwarem nebo získat vyšší efektivitu pro některé části programu díky větší kontrole nad generováním kódu.

    cobol- Vysokoúrovňový programovací jazyk vyvinutý koncem 50. let 20. století. sdružení CADASIL k řešení obchodních a ekonomických problémů. Liší se pokročilými způsoby práce se soubory. Protože příkazy programů napsaných v tomto jazyce hojně využívají běžnou anglickou slovní zásobu a syntaxi, je Cobol považován za jeden z nejjednodušších programovacích jazyků. V současnosti slouží k řešení ekonomických, informačních a jiných problémů.

    Fortran- Vysokoúrovňový programovací jazyk vyvinutý společností IBM v roce 1956 k popisu algoritmů pro řešení výpočetních problémů. Patří do kategorie procedurálně orientovaných jazyků. Nejběžnější verze tohoto jazyka jsou Fortran IV, Fortran 77 a Fortran 90. Používá se na všech třídách počítačů. Jeho nejnovější verze se používá i na počítačích s paralelní architekturou.

    Ada- Vysokoúrovňový programovací jazyk, orientovaný na použití v systémech v reálném čase a určený k automatizaci úkolů řízení procesů a/nebo zařízení, například v palubních (lodních, leteckých atd.) počítačích. Vyvinutý z iniciativy amerického ministerstva obrany v 80. letech 20. století. Pojmenována po anglické matematičce Adě Augustě Byronové (Lovelace), která žila v letech 1815-1851.

    ZÁKLADNÍ(Beginner's All-purpose Symbolic Instruction Code) Narodil se v 60. letech v Americe. BASIC byl koncipován jako jednoduchý jazyk pro rychlé učení. BASIC se stal de facto standardem pro mikropočítače právě kvůli své jednoduchosti jak při učení, tak při implementaci. K dosažení této kvality byla učiněna řada rozhodnutí (chybějící typizace, číslování řádků a nestrukturální GOTO atd.), která negativně ovlivnila styl studentů programování. Kromě toho nedostatek výrazových prostředků vedl ke vzniku z obrovského množství dialektů jazyka, které nejsou vzájemně kompatibilní. Moderní, specializované verze BASICu (např. Visual Basic) mají i přes získanou „strukturalitu“ všechny stejné nedostatky, především - nedbalost ve vztahu k typům a Popisy Vhodné pro použití v počáteční fázi učení, jako automatizační nástroj (v případech, kdy je zabudován do příslušných systémů) nebo jako prostředek pro rychlé vytváření aplikací.

    Pascal Pascal, který vyvinul slavný teoretik N. Wirth na základě myšlenek Algol-68, byl určen především pro výuku programování. Postaveno na principu „nezbytné a dostatečné“, má silnou typovou kontrolu, konstrukce pro popis libovolných datových struktur, malou, ale dostatečnou sadu strukturovaných programovacích operátorů. Odvrácenou stranou jednoduchosti a přísnosti je bohužel těžkopádnost popisů jazykových konstruktů. Nejznámější implementace - Turbo / Borland Pascal - je i přes odlišnosti od standardu Pascal prostředím a souborem knihoven, které ze vzdělávacího jazyka vytvořily průmyslový systém pro vývoj programů v prostředí MS-DOS.

    C a C++ Jazyk C je založen na požadavcích systémového programátora: plný a efektivní přístup ke všem počítačovým zdrojům, programovací nástroje na vysoké úrovni, přenositelnost programů mezi různými platformami a operačními systémy. C++, při zachování kompatibility s C, zavádí možnosti objektově orientovaného programování a vyjadřuje myšlenku třídy (objektu) jako uživatelem definovaného typu. Díky těmto vlastnostem zaujal C/C++ pozici univerzálního jazyka pro jakýkoli úkol. Jeho použití se však může stát neefektivním tam, kde je potřeba získat výsledek připravený k použití v co nejkratším čase, nebo kde se samotný procesní přístup stává nerentabilním.

    Delphi- nejedná se o nástupce Borland Pascal / Borland C, jeho niche - tzn. rychlý vývoj aplikací (Rapid Application Developing, RAD). Takové nástroje vám umožní vytvořit pracovní program z hotových komponent v co nejkratším čase, aniž byste plýtvali velkým úsilím na maličkosti. Zvláštní místo v takových systémech zaujímá možnost práce s databázemi.

    Lisp- Algoritmický jazyk vyvinutý v roce 1960 J. McCarthym a určený pro manipulaci se seznamy datových prvků. Používá se především v amerických univerzitních laboratořích k řešení problémů souvisejících s umělou inteligencí. V Evropě pro práci na umělé inteligenci raději používají Prolog.

    Prolog- Vysokoúrovňový deklarativní programovací jazyk určený pro vývoj systémů a programů umělé inteligence. Patří do kategorie jazyků páté generace. Byl vyvinut v roce 1971 na univerzitě v Marseille (Francie) a je jedním z široce používaných a neustále se rozvíjejících jazyků. Jeho nejnovější verze je Prolog 6.0

    LOGO- Vysokoúrovňový programovací jazyk vyvinutý na Massachusetts Institute of Technology kolem roku 1970 za účelem výuky matematických konceptů. Používá se také ve školách a u uživatelů PC při psaní programů pro tvorbu kreseb na obrazovce monitoru a ovládání perového plotru.

    Jáva Jako ukázkový příklad specializace se zrodil jazyk Java jako odpověď na potřebu ideálně přenosného jazyka, který by mohl efektivně spouštět programy na straně WWW klienta. Vzhledem k povaze prostředí může být Java dobrou volbou pro systém postavený na technologii Internet/Intranet.

    ALGOL- Vysokoúrovňový programovací jazyk zaměřený na popis algoritmů pro řešení výpočetních problémů. Byl vytvořen v roce 1958 specialisty ze západoevropských zemí pro vědecký výzkum. Verze tohoto jazyka Algol-60 byla přijata na mezinárodní konferenci v Paříži (1960) a byla široce používána na počítačích 2. generace. Verze Algol-68, vyvinutá skupinou specialistů z Mezinárodní federace pro zpracování informací (IFIP) v roce 1968, získala status mezinárodního univerzálního programovacího jazyka zaměřeného na řešení nejen výpočetních, ale i informačních problémů. Ačkoli se dnes Algol téměř nepoužívá, sloužil jako základ nebo měl významný dopad na vývoj modernějších jazyků, například Ada, Pascal atd.

    Nejlepší jazyk neexistuje. Pokud se chcete stát profesionálem v psaní programů, budete se muset naučit jeden z programovacích jazyků na vysoké úrovni (C++ je nejoblíbenější programovací jazyk) a také jeden z databázových programovacích jazyků ( jako je SQL). Jakmile se naučíte programovací jazyk C++, nemůžete udělat chybu. Se znalostí tohoto jazyka můžete vždy najít práci v jakékoli programovací společnosti.
    Navzdory velké popularitě programovacího jazyka C++ se často používají jiné jazyky. Na mnoha starších počítačích stále běží programy napsané v programovacím jazyce COBOL. Proto potřebujeme programátory, kteří dokážou tyto programy vylepšit a také napsat nové. Velké společnosti velmi často platí takovým programátorům vysoké platy.
    Pokud budete pracovat sami, je nejlepší naučit se psát vlastní databázové programy. K tomu se budete muset naučit programovací jazyky, jako je SQL nebo VBA, které se používají v programu Microsoft Access. Abyste mohli vytvářet webové stránky, potřebujete znát HTML a také trochu znalostí Javy, JavaScriptu, VBScriptu a dalších programovacích jazyků pro Internet. Nejnutnější bude programovací jazyk, který vám umožní snadno a rychle řešit zadané úkoly. Může to být C++, BASIC, Java, SQL nebo assembler.

    Závěrem podotýkáme, že z odborného hlediska není ani tak důležité, v jakém jazyce a v jakém prostředí programátor pracuje, ale jak svou práci vykonává. Hardware a operační systémy se mění. Nové problémy vyvstávají z různých oborů. Minulost je pryč a objevují se nové jazyky. Ale zůstávají lidé – ti, kteří píší, i ti, pro které píší nové programy a jejichž požadavky na kvalitu zůstávají stejné bez ohledu na tyto změny.
    Zde jsme s vámi a prozkoumali jsme základy programování a hlavní programovací jazyky.

    Přeji hodně štěstí při programování!