Programovacie jazyky prichádzajú na akých úrovniach. Moderné programovacie jazyky a ich využitie

  • 16.07.2019

Programovanie pre začiatočníkov

Na úvod by som chcel povedať, že obsluhovať počítač a vytvárať programy môže každý. Na vytváranie počítačových programov nepotrebujete mať neuveriteľnú inteligenciu alebo titul z matematiky. Potrebujete len túžbu niečo vymyslieť a trpezlivosť, aby ste neopustili hodiny.

Schopnosť písať programy je rovnaká zručnosť ako schopnosť plávať, tancovať alebo žonglovať. Niektorým ľuďom sa to darí oveľa lepšie ako iným, ale každý môže dosiahnuť určité výsledky správnou praxou. To je dôvod, prečo deti začínajú ovládať programovanie už v ranom veku. Deti nemusia byť nevyhnutne skvelé; jednoducho majú sklon učiť sa nové veci a neboja sa robiť chyby.

Napriek tomu, že počítače vyzerajú ako veľmi zložité elektronické monštrá, relaxujte. Len veľmi málo ľudí presne vie, ako fungujú vyhľadávače, ktoré vám umožňujú rýchlo nájsť potrebné informácie na internete a niektorí ľudia neprišli na to, ako riadiť auto. Podobne sa takmer každý môže naučiť vytvárať programy bez toho, aby zachádzal do podrobností o tom, ako presne počítač funguje.

Všeobecne povedané, program hovorí počítaču, ako vyriešiť konkrétny problém. Keďže svet je plný problémov, množstvo programov, ktoré môžu ľudia napísať, je nekonečné.

Aby ste však počítaču povedali, ako vyriešiť jeden obrovský problém, zvyčajne musíte počítaču povedať, ako vyriešiť celý rad malých problémov, ktoré tvoria veľký problém.
V skutočnosti nie je programovanie vôbec ťažké a nie je to nič tajomné alebo nadprirodzené. Ak dokážete napísať pokyny krok za krokom, ktoré umožnia osobe nájsť váš domov, môžete napísať aj počítačový program.

Najťažšou časťou programovania je identifikácia malých problémov, ktoré tvoria problém, ktorý potrebujete vyriešiť. Keďže počítače sú absolútne hlúpe, musíte im povedať, ako majú vykonať akúkoľvek akciu.

Ak si myslíte, že vytváranie programu je zábavnejšie ako jeho používanie, máte všetko, čo potrebujete na vytváranie počítačových programov. Ak sa chcete naučiť písať počítačové programy, potrebujete nasledujúce tri vlastnosti.

Prenasledovanie. Ak niečo veľmi chcete, určite to dostanete (ak však urobíte niečo nezákonné, riskujete, že strávite veľa času vo väzení). Ak sa chcete naučiť programovať, vaša túžba vám určite pomôže, bez ohľadu na to, koľko prekážok vám bude stáť v ceste.

zvedavosť. Zdravá dávka zvedavosti môže podporiť vašu túžbu experimentovať a zdokonaliť sa v programovaní aj po prečítaní tejto knihy. Vďaka zvedavosti je učenie programovania menej nudné a zaujímavejšie. A ak vás to zaujíma, určite si naštudujete a zapamätáte si viac informácií ako ktorýkoľvek človek, ktorý sa o to úplne nezaujíma (napríklad váš šéf).
Predstavivosť. Počítačové programovanie je zručnosť, ale predstavivosť môže pomôcť urobiť túto zručnosť jemnejšou a cielenejšou. Začínajúci programátor s poriadnou dávkou fantázie vždy vytvorí oveľa zaujímavejšie a užitočnejšie programy ako úžasný programátor bez fantázie. Ak neviete, čo so svojimi programátorskými schopnosťami, váš talent jednoducho zomrie bez fantázie.

Ašpirácia, zvedavosť a predstavivosť sú tri najdôležitejšie vlastnosti, ktoré by mal mať každý programátor. Ak ich máte, musíte sa starať len o maličkosti: aký programovací jazyk sa naučiť (napríklad C ++), čo je zlé na matematike atď.

Spomedzi mnohých programovacích jazykov sa dá vždy nájsť presne ten jazyk, ktorý je vhodný na riešenie danej úlohy. Keď sa objaví nový typ problému, ľudia vytvárajú nové jazyky.

Samozrejme, v skutočnosti počítač rozumie len jednému jazyku jednotiek a núl, ktorý sa nazýva strojový jazyk. Program napísaný v strojovom jazyku zvyčajne vyzerá takto:

0010 1010 0001 1101

UN 1100 1010 1111

0101 ONO 1101 0101

1101 1111 0010 1001

Ďalej je veľmi dôležité, na aký účel je jazyk zvolený – na výučbu programovania alebo na riešenie konkrétneho aplikovaného problému. V prvom prípade by mal byť jazyk ľahko zrozumiteľný, prísny a podľa možnosti bez nástrah. V druhom je to komplexný, ale účinný a výrazný nástroj pre profesionála, ktorý vie, čo chce.

Teraz by som vám chcel objasniť, čo by malo odlišovať programovací jazyk (Basic, Pascal) od jeho implementácie, ktorá sa zvyčajne prezentuje ako súčasť programovacieho prostredia (Quick Basic, Virtual Pascal) - súbor nástrojov na úpravu zdrojových textov, generovanie spustiteľného kódu, ladenie, správa projektov atď. Syntax a sémantika programovacieho jazyka sú pevne stanovené v jazykovej norme. Každé programovacie prostredie poskytuje svoj vlastný interpret alebo kompilátor z tohto jazyka, čo často umožňuje použitie konštruktov, ktoré nie sú v štandarde pevne stanovené.

Zvážte hlavné a populárne programovacie jazyky

Assembler Toto je najjasnejší zástupca nízkoúrovňových jazykov, ktorých súbor konceptov je založený na hardvérovej implementácii. Ide o automatizačný nástroj na programovanie priamo do kódov procesora. Strojové inštrukcie sú opísané vo forme mnemotechnických operácií, čo umožňuje dosiahnuť dostatočne vysokú modifikovateľnosť kódu. Keďže súbor inštrukcií na rôznych procesoroch je odlišný, nie je potrebné hovoriť o kompatibilite. Použitie assembleru je vhodné v prípadoch, keď je potrebné priamo interagovať so zariadením, alebo dosiahnuť vyššiu efektivitu niektorej časti programu z dôvodu vyššej kontroly nad generovaním kódu.

Cobol- Vysokoúrovňový programovací jazyk vyvinutý koncom 50. rokov 20. storočia. Združenie CADASIL pre riešenie obchodných a ekonomických problémov. Líši sa pokročilými nástrojmi na prácu so súbormi. Keďže príkazy programov napísaných v tomto jazyku aktívne využívajú bežnú anglickú slovnú zásobu a syntax, Cobol je považovaný za jeden z najjednoduchších programovacích jazykov. V súčasnosti sa využíva na riešenie ekonomických, informačných a iných problémov.

Fortran- Vysokoúrovňový programovací jazyk vyvinutý spoločnosťou IBM v roku 1956 na popis algoritmov na riešenie výpočtových problémov. Patrí do kategórie procedurálne orientovaných jazykov. Najbežnejšie verzie tohto jazyka sú Fortran IV, Fortran 77 a Fortran 90. Používa sa na všetkých počítačových triedach. Jeho najnovšia verzia sa používa aj na počítačoch s paralelnou architektúrou.

Peklo- Vysokoúrovňový programovací jazyk zameraný na aplikáciu v systémoch v reálnom čase a určený na automatizáciu úloh riadenia procesov a/alebo zariadení, napríklad v palubných (lodných, leteckých, atď.) počítačoch. Vyvinutý z iniciatívy amerického ministerstva obrany v 80. rokoch 20. storočia. Pomenovaný podľa anglickej matematičky Ady Augusty Byronovej (Lovelace), ktorá žila v rokoch 1815-1851.

ZÁKLADNÉ(Beginner "s All-purpose Symbolic Instruction Code) Narodil sa v 60. rokoch v Amerike. BASIC bol koncipovaný ako jednoduchý jazyk na rýchle učenie. BASIC sa stal de facto štandardom pre mikropočítače práve kvôli svojej jednoduchosti pri učení aj implementácii. Na dosiahnutie V tejto kvalite bolo urobených množstvo rozhodnutí (chýbajúce písanie, číslovanie riadkov a neštrukturálne GOTO atď.), ktoré negatívne ovplyvňujú štýl študentov programovania. Okrem toho nedostatok výrazových prostriedkov viedol k vzniku obrovského počtu dialektov jazyka, navzájom nekompatibilné.špecializované verzie BASICu (ako napr. Visual Basic) majú napriek získanej „štruktúre“ všetky rovnaké nevýhody, v prvom rade – nedbanlivosť vo vzťahu k typom a popisom. súvisiace systémy) alebo ako nástroj na rýchle vytváranie aplikácií.

Pascal Pascal, ktorý vyvinul známy teoretik N. Wirth na základe myšlienok Algol-68, bol určený predovšetkým na výučbu programovania. Postavený na princípe „nevyhnutné a dostatočné“ má silné riadenie typu, konštrukcie na popis ľubovoľných dátových štruktúr a malý, ale dostatočný súbor štruktúrovaných programovacích operátorov. Nanešťastie, nevýhodou jednoduchosti a prísnosti sú ťažkopádne popisy jazykových konštruktov. Najznámejšia implementácia - Turbo / Borland Pascal - napriek rozdielom od štandardu Pascal, je prostredím a súborom knižníc, ktoré premenili učebný jazyk na priemyselný systém na vývoj programov v prostredí MS-DOS.

C a C++ Jazyk C je založený na požiadavkách systémového programátora: úplný a efektívny prístup ku všetkým zdrojom počítača, programovacie nástroje na vysokej úrovni, prenosnosť programov medzi rôznymi platformami a operačnými systémami. C ++, pri zachovaní kompatibility s C, predstavuje objektovo orientované programovacie možnosti vyjadrením myšlienky triedy (objektu) ako užívateľsky definovaného typu. Vďaka týmto vlastnostiam zaujal C / C ++ pozíciu univerzálneho jazyka pre akúkoľvek úlohu. Jeho aplikácia sa však môže stať neúčinnou tam, kde sa vyžaduje dosiahnutie výsledku pripraveného na použitie v čo najkratšom čase, alebo ak sa samotný procesný prístup stáva nerentabilným.

Delphi- nejde o pokračovanie podnikania Borland Pascal / Borland C, jeho niku - t.j. Rýchly vývoj aplikácií (RAD) Takéto nástroje vám umožňujú rýchlo vytvoriť pracovný program z hotových komponentov bez toho, aby ste museli plytvať maličkosťami. Osobitné miesto v takýchto systémoch zaujímajú možnosti práce s databázami.

Lisp- Algoritmický jazyk, vyvinutý v roku 1960 J. McCarthym a určený na manipuláciu so zoznamami dátových prvkov. Používa sa najmä v univerzitných laboratóriách v Spojených štátoch amerických na riešenie problémov súvisiacich s umelou inteligenciou. V Európe na prácu na umelej inteligencii najradšej využívajú Prolog.

Prológ- Vysokoúrovňový deklaratívny programovací jazyk určený na vývoj systémov a programov umelej inteligencie. Patrí do kategórie jazykov piatej generácie. Bol vyvinutý v roku 1971 na univerzite v Marseille (Francúzsko) a patrí medzi široko používané a neustále rozvíjané jazyky. Jeho najnovšia verzia je Prolog 6.0

LOGO- Vysokoúrovňový programovací jazyk vyvinutý na Massachusetts Institute of Technology okolo roku 1970 za účelom výučby matematických konceptov. Používa sa aj v školách a užívateľoch PC pri písaní programov na vytváranie kresieb na obrazovke monitora a ovládanie perového plotra.

Java Ako hlavný príklad špecializácie sa objavil jazyk Java ako odpoveď na potrebu dokonale prenosného jazyka, ktorý dokáže efektívne spúšťať programy na WWW klientovi. Vďaka svojmu špecifickému prostrediu môže byť Java dobrou voľbou pre systém založený na technológii Internet / Intranet.

ALGOL- Vysokoúrovňový programovací jazyk zameraný na popis algoritmov na riešenie výpočtových problémov. Bol vytvorený v roku 1958 odborníkmi zo západoeurópskych krajín na vedecký výskum. Verzia tohto jazyka Algol-60 bola prijatá na medzinárodnej konferencii v Paríži (1960) a bola široko používaná na počítačoch 2. generácie. Verzia Algol-68, ktorú vyvinula skupina špecialistov z Medzinárodnej federácie pre spracovanie informácií (IFIP) v roku 1968, získala štatút medzinárodného univerzálneho programovacieho jazyka zameraného na riešenie nielen výpočtových, ale aj informačných problémov. Aj keď sa dnes Algol prakticky nepoužíva, slúžil ako základ alebo mal významný vplyv na vývoj modernejších jazykov, napríklad Ada, Pascal atď.

Najlepší jazyk neexistuje. Ak sa chcete stať profesionálom v písaní programov, musíte sa naučiť jeden z programovacích jazykov na vysokej úrovni (najpopulárnejší programovací jazyk je C ++), ako aj jeden z databázových programovacích jazykov ( napríklad SQL). Po naučení sa programovacieho jazyka C++ nemôžete urobiť chybu. So znalosťou tohto jazyka si vždy môžete nájsť prácu v akejkoľvek programátorskej spoločnosti.
Napriek veľkej popularite programovacieho jazyka C ++ sa často používajú iné jazyky. Na mnohých starších počítačoch stále bežia programy napísané v programovacom jazyku COBOL. Preto potrebujeme programátorov, ktorí dokážu tieto programy vylepšiť, ako aj napísať nové. Veľmi často takýmto programátorom veľké spoločnosti platia vysoké platy.
Ak sa chystáte pracovať samostatne, je lepšie naučiť sa vytvárať vlastné databázové programy. Na to sa budete musieť naučiť programovacie jazyky ako SQL alebo VBA, ktoré sa používajú v Microsoft Access. Aby ste mohli vytvárať webové stránky, potrebujete poznať HTML, ako aj malú znalosť Java, JavaScript, VBScript a ďalších programovacích jazykov pre internet. Najpotrebnejší bude programovací jazyk, ktorý vám umožní jednoducho a rýchlo riešiť zadané úlohy. Môže to byť C ++, BASIC, Java, SQL alebo assembler.

Na záver podotýkame, že z odborného hľadiska nie je až také dôležité, v akom jazyku a v akom prostredí programátor pracuje, nakoľko svoju prácu vykonáva. Hardvér a operačné systémy sa menia. Nové úlohy vznikajú zo širokej škály tematických oblastí. Ustupujú do minulosti a objavujú sa nové jazyky. Ľudia však zostávajú - tí, ktorí píšu, a tí, pre ktorých sa píšu nové programy a ktorých požiadavky na kvalitu zostávajú rovnaké bez ohľadu na tieto zmeny.
Tu sme si zopakovali základy programovania a hlavné programovacie jazyky.

Prajem vám veľa šťastia pri učení programovania!

Predtým, ako sa chcete naučiť programovací jazyk, musíte vedieť niečo o ich histórii a o tom, kde sa používajú.

Predstavujem vám rýchly prehľad 25 známych programovacích jazykov. Od najznámejších po najmenej obľúbené. Článok je určený pre začiatočníkov v oblasti programovania. Môžete si prečítať o každom jazyku a vybrať si ten, ktorý sa vám najviac páči na učenie.

Skôr ako sa začnete učiť programovacie jazyky, odporúčam vám preštudovať si kurz ďalej.

1. JavaScript

Prototypovo orientovaný skriptovací jazyk. JavaScript bol pôvodne napísaný s cieľom urobiť webové stránky „živými“. V prehliadači sa pripájajú priamo k HTML a akonáhle sa stránka načíta, okamžite sa spustia.

Keď bol JavaScript vytvorený, mal pôvodne iný názov: „LiveScript“. Potom bol však jazyk Java veľmi populárny a obchodníci sa rozhodli, že podobný názov urobí nový jazyk populárnejším.

Plánovalo sa, že JavaScript bude akýmsi „malým bratom“ Javy. História však rozhodla svojim spôsobom, JavaScript sa veľmi rozrástol a teraz je to úplne nezávislý jazyk, s vlastnou špecifikáciou a nemá nič spoločné s Javou.

2. Java


Silne typovaný objektovo orientovaný programovací jazyk. Java aplikácie sú zvyčajne preložené do špeciálneho bajtkódu, takže môžu bežať na ľubovoľnej počítačovej architektúre pomocou Java Virtual Machine.

Výhodou tohto spôsobu vykonávania programov je úplná nezávislosť bajtkódu od operačného systému a hardvéru, čo umožňuje spúšťať Java aplikácie na akomkoľvek zariadení, pre ktoré existuje zodpovedajúci virtuálny stroj. Ďalšou dôležitou vlastnosťou technológie Java je flexibilný bezpečnostný systém, v rámci ktorého je vykonávanie programu plne riadené virtuálnym strojom.

Pôvodne sa tento jazyk nazýval Oak ("Dub") a vyvinul ho James Gosling na programovanie zariadení spotrebnej elektroniky. Následne bol premenovaný na Java a používal sa na písanie klientskych aplikácií a serverového softvéru.

3. PHP


Je to bežný otvorený zdrojový univerzálny interpretovaný jazyk (skriptovací jazyk). PHP bolo vytvorené špeciálne pre vývoj webu a kód na ňom je možné vložiť priamo do HTML kódu. Syntax jazyka pochádza z jazykov C, Java a Perl a dá sa ľahko naučiť.

Hlavným cieľom PHP je poskytnúť webovým vývojárom schopnosť rýchlo vytvárať dynamicky generované webové stránky, ale PHP nie je obmedzené na toto.

4. Python

Vysokoúrovňový univerzálny programovací jazyk zameraný na zlepšenie produktivity vývojárov, čitateľnosť kódu a vývoj webových aplikácií. Syntax jadra Pythonu je minimalistická. Kód Pythonu je organizovaný do funkcií a tried, ktoré možno kombinovať do modulov.

5. C #


Objektovo orientovaný programovací jazyk. Vyvinutý v rokoch 1998-2001 skupinou inžinierov vedených Andersom Hejlsbergom v Microsofte ako jazyk vývoja aplikácií pre platformu Microsoft .NET Framework. C # patrí do rodiny jazykov so syntaxou podobnou C, ktorej syntax je najbližšia C ++ a Java.

Jazyk je staticky typovaný, podporuje polymorfizmus, preťaženie operátorov, delegátov, atribúty, udalosti, vlastnosti, generické typy a metódy, iterátory, anonymné funkcie s podporou uzáveru, LINQ, výnimky, XML komentáre.

6.C++


Kompilovaný, staticky typovaný univerzálny programovací jazyk. Je to jeden z najrozšírenejších jazykov na svete. Google Chrome, Mozilla Firefox, Winamp a produktový rad Adobe boli vyvinuté v jazyku C ++. Navyše, niektoré moderné hry a operačné systémy boli vyvinuté v C++ kvôli ich rýchlemu spracovaniu a rýchlosti kompilácie.

7. Rubín


Jednoduchý a čitateľný programovací jazyk zameraný na vývoj webových aplikácií. Navrhol ju Yukihiro Matsumto v roku 1995. Jazyk má implementáciu multithreadingu nezávislú od operačného systému, silné dynamické písanie a zberač odpadu.

Hlavným účelom Ruby je vytvárať jednoduché a zároveň zrozumiteľné programy, kde nie je dôležitá rýchlosť programu, ale krátky čas vývoja, prehľadnosť a jednoduchosť syntaxe. Jazyk sa riadi zásadou „najmenšieho prekvapenia“: program by sa mal správať tak, ako programátor očakáva.

8. CSS


Kaskádové štýly Formálny jazyk na popis vzhľadu dokumentu napísaného pomocou značkovacieho jazyka.
Používa sa hlavne ako prostriedok na popisovanie, navrhovanie vzhľadu webových stránok napísaných pomocou značkovacích jazykov HTML a XHTML, ale dá sa použiť aj na akékoľvek XML dokumenty.

9.C


Kompilovaný, staticky typovaný univerzálny programovací jazyk. Jazyk C vyvinul Dennis Ritchie v roku 1972 v Bell Labs. Je predchodcom programovacích jazykov ako C++, Java, C #, JavaScript a Perl. Z tohto dôvodu vedie učenie sa tohto jazyka k porozumeniu aj iným jazykom. Jazyk C sa používa na vývoj nízkoúrovňových aplikácií, pretože sa považuje za najbližší k hardvérovému jazyku.

10. Cieľ-C


Kompilovaný objektovo orientovaný programovací jazyk používaný spoločnosťou Apple Corporation, postavený na jazyku C a paradigmách Smalltalk. Jazyk Objective-C je nadmnožinou jazyka C, takže kód C je kompilátorom Objective-C úplne zrozumiteľný. Jazyk sa používa predovšetkým pre Mac OS X (Cocoa) a GNUstep - implementácie objektovo orientovaného rozhrania OpenStep. Jazyk sa používa aj pre iOS (Cocoa Touch).

11. Škrupina

Nejde ani tak o jazyk, ako skôr o príkazový tlmočník (príkazový jazyk). Jeho skripty sa používajú na automatizáciu aktualizácií softvéru. Obsahuje štandardné konštrukcie pre cykly, vetvenia, deklarácie funkcií. V rodine operačných systémov kompatibilných so systémom UNIX sa SHELL používa ako štandardný jazyk na riadenie úloh.

12.R


Programovací jazyk pre štatistické spracovanie dát a prácu s grafikou, ako aj bezplatné open source výpočtové prostredie v rámci projektu GNU. R je široko používaný ako štatistický softvér na analýzu údajov a stal sa de facto štandardom pre štatistický softvér. R používa rozhranie príkazového riadku.

13. Perl


Vysokoúrovňový, univerzálny, interpretovaný dynamický programovací jazyk. Názov jazyka je skratka, ktorá znamená Practical Extraction and Report Language – „praktický jazyk pre extrakciu údajov a vytváranie správ“. Za hlavnú vlastnosť jazyka sa považujú jeho bohaté možnosti práce s textom, vrátane práce s regulárnymi výrazmi, zabudovanými v syntaxi. V súčasnosti sa používa na širokú škálu úloh vrátane správy systému, vývoja webu, programovania siete, hier, bioinformatiky, vývoja grafického používateľského rozhrania.

14. Scala


Multiparadigmový programovací jazyk navrhnutý tak, aby bol stručný a typovo bezpečný pre jednoduchú a rýchlu tvorbu komponentového softvéru, ktorý kombinuje funkčné a objektovo orientované programovacie schopnosti. Scala – Programy sú veľmi podobné programom Java a môžu voľne interagovať s kódom Java.

15. Choď


Kompilovaný viacvláknový programovací jazyk vyvinutý spoločnosťou Google. Go bol navrhnutý ako systémový programovací jazyk na vytváranie vysoko efektívnych programov, ktoré bežia na moderných distribuovaných systémoch a viacjadrových procesoroch. Možno to vnímať ako pokus o vytvorenie náhrady za jazyk C. Počas vývoja bola venovaná osobitná pozornosť zabezpečeniu vysoko efektívnej kompilácie. Go programy sú skompilované do objektového kódu a na spustenie nevyžadujú virtuálny stroj.

16. SQL

Štruktúrovaný Dopytovací Jazyk. formálny, neprocedurálny programovací jazyk používaný na vytváranie, úpravu a manipuláciu s údajmi v ľubovoľnej relačnej databáze riadenej zodpovedajúcim systémom správy databázy. SQL je primárne jazyk informačnej logiky určený na popis, úpravu a získanie údajov uložených v relačných databázach. Každý príkaz SQL je buď dopytom na údaje z databázy, alebo volaním databázy, ktoré mení údaje v databáze.

17. Haskell


Štandardizovaný čisto funkčný univerzálny programovací jazyk. Je to jeden z najbežnejších programovacích jazykov s podporou odloženého hodnotenia. Charakteristickým rysom jazyka je jeho seriózny prístup k písaniu. Haskell je vynikajúci jazyk na učenie a experimentovanie s komplexnými funkčnými typmi údajov.

18. Rýchly


Otvorený multiparadigmový kompilovaný univerzálny programovací jazyk. Navrhnuté spoločnosťou Apple predovšetkým pre vývojárov iOS a OS X. Swift pracuje s rámcami Cocoa a Cocoa Touch a je kompatibilný s bežnou kódovou základňou Objective-C spoločnosti Apple. Swift bol koncipovaný tak, aby bol ľahšie čitateľný a odolnejší voči programátorským chybám ako jeho predchodca Objective-C. Swift si z Objective-C požičiava pomerne veľa, no nie je definovaný ukazovateľmi, ale typmi premenných, s ktorými kompilátor narába. Mnoho skriptovacích jazykov funguje podobným spôsobom.

19. Matlab


Vysokoúrovňový interpretovaný programovací jazyk, ktorý zahŕňa dátové štruktúry založené na matici, širokú škálu funkcií, integrované vývojové prostredie, objektovo orientované schopnosti a rozhrania k programom napísaným v iných programovacích jazykoch. V MATLABE sú napísané dva typy programov – funkcie a skripty. Funkcie majú vstupné a výstupné argumenty, ako aj vlastný pracovný priestor na ukladanie priebežných výsledkov výpočtov a premenných. Skripty zdieľajú spoločný pracovný priestor. Skripty aj funkcie sa ukladajú ako textové súbory a dynamicky sa kompilujú do strojového kódu.

20. Visual Basic


Programovací jazyk a integrované vývojové prostredie softvéru vyvinuté spoločnosťou Microsoft Corporation. Jazyk Visual Basic zdedil ducha, štýl a syntax svojho predka – jazyka BASIC, ktorý má mnoho dialektov. Visual Basic zároveň spája postupy a prvky objektovo orientovaných a komponentovo orientovaných programovacích jazykov.

Visual Basic je tiež dobrým nástrojom pre rýchly vývoj databázových aplikácií RAD pre operačné systémy Microsoft Windows. Mnoho hotových komponentov dodávaných s prostredím je navrhnutých tak, aby pomohli programátorovi okamžite začať s vývojom obchodnej logiky aplikácie bez toho, aby rozptyľovali jeho pozornosť písaním kódu na spustenie programu.

21. Delphi


Nevyhnutný, štruktúrovaný, objektovo orientovaný programovací jazyk so silnými staticky typovanými premennými. Hlavnou oblasťou použitia je písanie aplikačného softvéru.

Dnes spolu s podporou vývoja 32 a 64-bitových programov pre Windows je možné vytvárať aplikácie pre Apple Mac OS X, ako aj pre Google Android (spustiteľné priamo na ARM procesore).

22. Groovy


Objektovo orientovaný programovací jazyk vyvinutý pre platformu Java ako doplnok k jazyku Java s funkciami Python, Ruby a Smalltalk. Groovy používa syntax podobnú jazyku Java s dynamickou kompiláciou do bajtkódu JVM a pracuje priamo s iným kódom Java a knižnicami. Jazyk je možné použiť v akomkoľvek projekte Java alebo ako skriptovací jazyk.

23. Visual Basic .NET


Objektovo orientovaný programovací jazyk, ktorý možno považovať za ďalší evolučný stupeň Visual Basicu, implementovaný na platforme Microsoft .NET. VB.NET nie je spätne kompatibilný so staršou verziou (Visual Basic 6.0). Vývoj projektov starých verzií (* .vbp) je možný len po ich predbežnej konverzii do formátu VB.NET pomocou špeciálneho sprievodcu (Migration Wizard); po konverzii je však potrebná významná manuálna revízia textov.

24.D

Multiparadigmový kompilovaný programovací jazyk vytvorený Walterom Brightom z Digital Mars. Jazyk D bol pôvodne koncipovaný ako reengineering jazyka C++, no napriek výraznému vplyvu jazyka C++ nie je jeho variantom. Jazyk bol tiež ovplyvnený konceptmi z programovacích jazykov Python, Ruby, C #, Java, Eiffel.

25. Montážnik


Nízkoúrovňový strojovo orientovaný jazyk s pokynmi, ktoré nie vždy zodpovedajú pokynom stroja, ktorý môže poskytnúť ďalšie funkcie, ako sú makrá; autokód, rozšírený o konštrukcie vysokoúrovňových programovacích jazykov, ako sú výrazy, makrá, prostriedky na zabezpečenie modularity programu.

Assembler je notačný systém používaný na reprezentáciu programov napísaných v strojovom kóde v ľudsky čitateľnej forme. Assembler umožňuje programátorovi používať abecedné mnemotechnické kódy operácií, priraďovať symbolické názvy registrom počítača a pamäte podľa vlastného uváženia, ako aj nastavovať vhodné schémy adresovania. Okrem toho umožňuje používať rôzne číselné sústavy na reprezentáciu číselných konštánt a umožňuje označovať programové riadky štítkami so symbolickými názvami, aby boli prístupné.

Programovanie je celá veda, ktorá vám umožňuje vytvárať počítačové programy. Zahŕňa obrovské množstvo rôznych operácií a algoritmov, ktoré tvoria jeden programovací jazyk. Čo to teda je a aké sú rôzne programovacie jazyky? Článok poskytuje odpovede a tiež poskytuje prehľadný zoznam programovacích jazykov.

História vzniku a zmeny programových jazykov by sa mala študovať spolu s históriou vývoja výpočtovej techniky, pretože tieto pojmy priamo súvisia. Bez programovacích jazykov by nebolo možné vytvoriť akýkoľvek program na prevádzku počítača, čo znamená, že tvorba počítačov by sa stala nezmyselným cvičením.

Prvý strojový jazyk vynašiel v roku 1941 Konrad Zuse, ktorý je vynálezcom analytického motora. O niečo neskôr, v roku 1943, Howard Aiken vytvoril stroj Mark 1, schopný čítať inštrukcie na úrovni strojového kódu.

V 50. rokoch 20. storočia bol aktívny dopyt po vývoji softvéru a strojový jazyk nezvládol veľké množstvo kódu, preto vznikol nový spôsob komunikácie s počítačmi. Assembler je prvý mnemotechnický jazyk, ktorý nahrádza strojové inštrukcie. V priebehu rokov sa zoznam programovacích jazykov len rozrastá, pretože oblasť použitia počítačových technológií sa rozširuje.

Klasifikácia programovacích jazykov

V súčasnosti existuje viac ako 300 programovacích jazykov. Každý z nich má svoje vlastné charakteristiky a je vhodný na jednu konkrétnu úlohu. Všetky programovacie jazyky možno zhruba rozdeliť do niekoľkých skupín:

  • Aspektovo orientované (hlavnou myšlienkou je oddelenie funkcionality pre zvýšenie efektivity softvérových modulov).
  • Štrukturálne (založené na myšlienke vytvorenia hierarchickej štruktúry jednotlivých programových blokov).
  • Logický (založený na teórii aparátu matematickej logiky a pravidlách rozlíšenia).
  • Objektovo orientované (v takomto programovaní sa už nepoužívajú algoritmy, ale objekty patriace do určitej triedy).
  • Multi-paradigma (skombinujte niekoľko paradigiem a programátor sám rozhodne, ktorý jazyk v konkrétnom prípade použiť).
  • Funkčné (hlavnými prvkami sú funkcie, ktoré menia hodnotu v závislosti od výsledkov výpočtov počiatočných údajov).

Programovanie pre začiatočníkov

Mnoho ľudí si kladie otázku, čo je programovanie? V podstate ide o spôsob komunikácie s počítačom. Vďaka programovacím jazykom môžeme vytvárať špecifické úlohy pre rôzne zariadenia vytváraním špeciálnych aplikácií alebo programov. Pri štúdiu tejto vedy v počiatočnom štádiu je najdôležitejšie vybrať si vhodné (pre vás zaujímavé) programovacie jazyky. Štartovací zoznam je uvedený nižšie:

  • Basic bol vynájdený v roku 1964, patrí do rodiny jazykov na vysokej úrovni a používa sa na písanie aplikačných programov.
  • Python ("Python") sa dá pomerne ľahko naučiť vďaka jednoduchej, čitateľnej syntaxi, ale výhodou je, že sa dá použiť na vytváranie bežných desktopových programov aj webových aplikácií.
  • Pascal ("Pascal") - jeden z najstarších jazykov (1969), vytvorený na výučbu študentov. Jeho moderná modifikácia je silne typizovaná a štruktúrovaná, ale Pascal je celkom logický jazyk, ktorý je zrozumiteľný na intuitívnej úrovni.

Toto nie je úplný zoznam programovacích jazykov pre začiatočníkov. Existuje obrovské množstvo syntaxí, ktoré sú k dispozícii na pochopenie a v nasledujúcich rokoch budú určite žiadané. Každý má právo nezávisle si vybrať smer, ktorý bude pre neho zaujímavý.

Začiatočníci majú možnosť urýchliť učenie sa programovania a jeho základov vďaka špeciálnym nástrojom. Hlavným pomocníkom je integrované vývojové prostredie pre programy a aplikácie Visual Basic („Visual Basic“ je tiež programovací jazyk, ktorý zdedil štýl jazyka Basic zo 70. rokov 20. storočia).

Úrovne programovacích jazykov

Všetky formalizované jazyky určené na vytváranie, popis programov a algoritmov na riešenie problémov na počítačoch sú rozdelené do dvoch hlavných kategórií: programovacie jazyky nízkej úrovne (zoznam je uvedený nižšie) a jazyky na vysokej úrovni. Hovorme o každom z nich samostatne.

Nízkoúrovňové jazyky sú navrhnuté tak, aby vytvárali strojové inštrukcie pre procesory. Ich hlavnou výhodou je, že používajú mnemotechnický zápis, teda namiesto postupnosti núl a jednotiek (z dvojkovej číselnej sústavy) si počítač zapamätá zmysluplné skrátené slovo z anglického jazyka. Najznámejšie nízkoúrovňové jazyky sú „Assembler“ (existuje niekoľko poddruhov tohto jazyka, z ktorých každý má veľa spoločného, ​​ale líši sa iba súborom ďalších smerníc a makier), CIL (dostupné v sieti .Net platforma) a JAVA Bytecode.

Programovacie jazyky na vysokej úrovni: zoznam

Jazyky na vysokej úrovni sú navrhnuté pre pohodlie a efektivitu aplikácií, sú presným opakom jazykov na nízkej úrovni. Ich charakteristickou črtou je prítomnosť sémantických štruktúr, ktoré stručne a výstižne popisujú štruktúry a algoritmy programov. V jazykoch nízkej úrovne by bol ich popis v strojovom kóde príliš dlhý a nezrozumiteľný. Jazyky na vysokej úrovni sú nezávislé od platformy. Namiesto toho kompilátory vykonávajú funkciu prekladateľa: prekladajú text programu do základných strojových inštrukcií.

Nasledujúci zoznam programovacích jazykov: C ("C"), C # ("C-sharp"), "Fortran", "Pascal", Java ("Java") - patria medzi najpoužívanejšie syntaxe na vysokej úrovni. Má nasledujúce vlastnosti: tieto jazyky pracujú so zložitými štruktúrami, podporujú reťazcové dátové typy a operácie s informačnými I/O súbormi a majú tiež tú výhodu, že sa s nimi pracuje oveľa jednoduchšie vďaka ich čitateľnosti a jasnej syntaxi.

Najpoužívanejšie programovacie jazyky

V podstate môžete napísať program v akomkoľvek jazyku. Otázkou je, či to bude fungovať efektívne a hladko. Preto by sa na riešenie rôznych problémov mali zvoliť najvhodnejšie programovacie jazyky. Zoznam podľa popularity možno charakterizovať takto:

  • OOP jazyky: Java, C ++, Python, PHP, VisualBasic a JavaScript;
  • skupina štruktúrnych jazykov: Basic, Fortran a Pascal;
  • multiparadigma: C #, Delphi, Curry a Scala.

Rozsah programov a aplikácií

Výber jazyka, v ktorom je tento alebo ten program napísaný, do značnej miery závisí od oblasti jeho použitia. Napríklad, ak chcete pracovať s „hardvérom“ samotného počítača (zápis ovládačov a podporných programov), najlepšou možnosťou by bolo C („C“) alebo C ++, ktoré sú zahrnuté v hlavných programovacích jazykoch (pozri zoznam vyššie). A pre vývoj mobilných aplikácií vrátane hier by ste si mali zvoliť Java alebo C # ("C-Sharp").

Ak ste sa ešte nerozhodli, ktorým smerom sa vydať, odporúčame vám začať sa učiť z jazykov C alebo C++. Majú veľmi jasnú syntax, jasné štrukturálne rozdelenie do tried a funkcií. Navyše, ak poznáte C alebo C++, môžete sa ľahko naučiť akýkoľvek iný programovací jazyk.

Keďže vývoj výpočtovej techniky neustáva, metódy a tiež programovacie jazyky sa neustále zdokonaľujú. Zvážte, aké jazyky existujú v modernej počítačovej oblasti a ich klasifikácia.

Všeobecné informácie

Zoznam programovacích jazykov je taký široký a rôznorodý, že jeho úplné zostavenie je takmer nemožná úloha. Medzi všetkými jazykmi možno rozlíšiť tri hlavné podskupiny:

  • stroj (nízkoúrovňové programovacie jazyky);
  • strojovo orientované (montérky);
  • nezávislý od stroja (vysoká úroveň);

Medzi vývojármi moderného softvéru sú najobľúbenejšie tieto hlavné programovacie jazyky. Zoznam je zobrazený v zostupnom poradí podľa obľúbenosti:

  1. Java.
  2. HTML.
  3. Visual Basic.
  4. Delphi.

Tento zoznam programovacích jazykov nie je ani zďaleka úplný, ale toto sú najobľúbenejšie jazyky, ktoré môže programátor potrebovať vedieť, keď sa uchádza o prácu. Všetko sú to programovacie jazyky na vysokej úrovni.

Základy programovania

Nízkoúrovňové programovacie jazyky sú jazyky, ktoré si vyžadujú zváženie typu a možností procesora. Operátori a spôsoby fungovania takýchto programovacích jazykov sú dostatočne blízke strojovému kódu, vyžadujú znalosť pamäte osobného počítača a spôsobu, akým k nej procesor pristupuje.

Je ťažké vymenovať rôzne nízkoúrovňové programovacie jazyky. Zoznam sa aj tak zredukuje na jeden dominantný jazyk – zhromažďovanie. Keďže vám umožňuje skladať programové kódy v notácii blízkej strojovému kódu, assembler sa používa výlučne pri písaní systémového softvéru, ako sú operačné systémy, ovládače zariadení a pri programovaní riadiacich kódov mikroobvodov.

Nevýhodou takýchto programovacích jazykov je, že programy v nich sú napísané tak, aby vykonávali špecifické úlohy na konkrétnom zariadení a ich vykonanie je nemožné, ak sú prenesené na iný procesor.

Vývoj aplikácií

Zoznam programovacích jazykov na vytváranie vlastných aplikácií, ako aj na vývoj a implementáciu vlastného softvéru má tisíce pozícií. Ako si viete predstaviť, takáto rozmanitosť je spôsobená skutočnosťou, že konkrétny jazyk je vhodný na riešenie určitých problémov.

Napriek tomu, že tieto programovacie jazyky sú definované v samostatnej skupine, ich vykonávanie prebieha v strojovom kóde. Na vykonanie hotového programu riadok po riadku a jeho preloženie do špeciálnych programov sa používajú tlmočníci. Ak sa preklad programového kódu z jedného jazyka do druhého vykonáva bez vykonania príkazov, vykoná sa to pomocou kompilačných programov. Vo všeobecnosti sa programy určené na preklad napísaných programov z jedného formálneho programovacieho jazyka do druhého nazývajú prekladače.

Pozrime sa bližšie na programovacie jazyky na vysokej úrovni. Nebudeme robiť zoznam, len napíšeme trochu podrobnejšie o každom z najpopulárnejších.

SQL

Špecializovaný programovací jazyk je určený predovšetkým na prácu so systémami správy databáz a ich programovanie. SQL v preklade znamená "špecializovaný. Keďže trh s databázami v posledných desaťročiach exponenciálne rástol, popularita tohto jazyka by nemala byť prekvapením."

Existujú rôzne názory na budúcnosť tohto jazyka. Jednoznačne sa verí, že technológia vytvárania relačných databáz bola najlepšia, no jej čas sa kráti. Potreba rozvoja v súvislosti s rastúcimi objemami spracovávaných dát vedie špecialistov k myšlienke, že ľudstvo v budúcnosti jednoducho potrebuje prechod od relačných technológií k po-relačným technológiám, avšak so zachovaním kompatibility s existujúcimi databankami.

Javascript

Právom mu patrí druhé miesto medzi programovacími jazykmi na vysokej úrovni. Ľahko sa učí, ľahko sa používa. Zvýšená adaptabilita na programovanie v porovnaní s progenitorom vedie k tomu, že s týmto jazykom pracujú milióny ľudí na celom svete. Objektovo orientovaný jazyk založený na C++, prispôsobený na vytváranie programov a aplikácií, ktoré dokážu zvládnuť obrovské toky informácií v špecializovaných prostrediach a zohľadňujú špecifiká prostredia pre implementáciu hotovej

Technológia Java je základom, ktorý umožňuje neobmedzený rast infraštruktúry podnikov a spoločností, schopných spájať systémy rôznych kalibrov, od pripojenia k telefónnej sieti cez Wi-Fi až po superpočítače.

XML

Táto technológia, potomok HTML, je rozšíriteľný značkovací jazyk. Je prispôsobený na interpretáciu dokumentov. Vykonávajú sa na ňom najzložitejšie transformácie a zmeny dokumentov. XML sa používa na prenos a dočasné ukladanie údajov pri práci s rôznymi relačnými databázami cez internet.

XML už dosiahlo bod, kedy môže tvrdiť, že je základnou technológiou pre budovanie podnikových sietí.

Programujeme v ruštine

Väčšina populárnych programovacích jazykov používa anglickú slovnú zásobu. Okrem nich však existujú aj ruské programovacie jazyky. Zoznam v ruštine je malý a oblasť, v ktorej sa používajú, je veľmi špecializovaná. Tu je niekoľko príkladov.

  • 1C: Enterprise. Celý systém určený na riadenie organizácie vo všetkých oblastiach činnosti. Pomerne často v reklamách na vyhľadávanie zamestnancov nájdete „programátor 1C“.
  • Sloveso. Analóg anglicky hovoriaceho Pascalu.
  • Robik. Špecializovaný programovací jazyk navrhnutý tak, aby deti naučil základy programovania.
  • Rapier. Jazyk založený na procedúrach.

Ako vidíte, zoznam programovacích jazykov je taký široký a rozmanitý, že ho nie je možné pokryť žiadnymi klasifikáciami a zoznamami. Ak sa rozhodnete začať programovať na amatérskej alebo profesionálnej úrovni, tak nezabúdajte, že programátor je kreatívna profesia, ktorá si vyžaduje nielen vedomosti, ale aj fantáziu, predstavivosť, intuíciu a aj trochu šťastia.

Rôzne programovacie jazyky a ich oblasti použitia. Prednáška v Yandex

Náš prvý tohtoročný príspevok sme sa rozhodli venovať úplne základnej téme, o ktorej odznela prednáška v Malom SHADe. Venujú sa jej stredoškoláci, ktorí sa zaujímajú o techniku, preto tá špecifickosť prezentácie - prednáška zaujme najmä tých, ktorí s programovaním len začínajú a rozmýšľajú, akým smerom sa ďalej rozvíjať. Pre nich má Yandex kurz „Úvod do programovania (C ++)“, ktorý je možné absolvovať na platforme Stepic.org.

Prednáša Michail Gustokashin - kurátor akademických programov v Yandex, riaditeľ Centra pre študentské olympiády, Fakulta informatiky, HSE. Michail vyškolil desiatky víťazov a víťazov celoruských programovacích olympiád.

V rámci prednášky sa hovorí o tom, aké programovacie jazyky sú, čím sa líšia, ako sa objavili a ktoré sú lepšie a ktoré horšie. Na začiatku budeme hovoriť trochu o histórii jazykov - ako sa objavili, ako ľudia začali programovať, ako sa všetko vyvíjalo, čo sa deje teraz. V druhej časti sa dotkneme toho, na aké úlohy sa ktorý jazyk hodí, ako si „vybrať svoj obľúbený jazyk a užívať si život“. Lektor trochu porozpráva aj o tom, ako sa podľa neho toto všetko naučiť a následne zamestnať.

Ako vždy, pod zostrihom je podrobný prepis prednášky, aby ste sa mohli orientovať v jej obsahu.

História programovacích jazykov

Začnime od začiatku. Na začiatku počítače nemali ani klávesnicu! To znamená, že všetko bolo veľmi zlé - nemali klávesnicu ani obrazovku, mali dierne štítky (to sú také veci s dierami alebo bez dier). Podľa toho tam boli buď špendlíky nastrčené, alebo tam svietili svetlom. Ak je tam diera (alebo naopak), znamenalo to nulu alebo jednotku. A programy sa v tej dobe písali pomocou strojových kódov – každá operácia v počítači (sčítanie, odčítanie, nejaké zložitejšie operácie) mala nejaký strojový kód. Tento kód si ľudia sami vyberali z taniera, všelijaké adresy v pamäti, všetko to vyklepali rukami a strčili do čítačky – a všetko sa spočítalo. Samozrejme, že práca programátora vtedy asi nebola veľmi zaujímavá – robiť diery – a s rozvojom vedy a techniky samozrejme začali prichádzať na všelijaké „zaujímavejšie“ veci. Napríklad assembler (Assembler), ktorý už život trochu uľahčil.

No a ako si uľahčil život? Namiesto toho, aby sme si pamätali, že pre príkaz existuje nejaký „magický“ kód, použili sa všetky druhy slov podobných „ľudskej“ angličtine – niektoré add alebo mov – no, a potom registre alebo pamäťové oblasti, premenné, s ktorými sú tieto potrebné. vykonávať operácie. Ale je jasné, že si to vo všeobecnosti vyžiadalo aj dostatočne veľké mentálne úsilie, aby sme si udržali v pamäti, v akom registri máme čo leží, kde aké premenné a čo sa vo všeobecnosti deje. Prečo sa to stalo? Pretože počítače boli „hlúpe“ a nedokázali pochopiť nič „inteligentnejšie“. Popravde, kompilácia strojového kódu z assembleru zaberá aj čas, pamäť (vtedy jej samozrejme nebolo dosť).

Postupne sa ukázalo, že je veľmi ťažké vyvinúť také veľké komplexné programy. Produktivita programátora v týchto príkazoch bola extrémne nízka - to znamená, že napísal niekoľko riadkov denne (zmysluplné) a každý riadok nerobil nič zvláštne - nejaké jednoduché aritmetické operácie. A ľudia chceli, aby sa jazyky oveľa viac podobali ľudskému jazyku, najmä angličtine, aby bolo písanie programov jednoduchšie a pohodlnejšie. A ideme!

Staré a mŕtve jazyky

Fortran sa stal jedným z prvých jazykov. Mimochodom, bol vyrazený aj na diernych štítkoch - existovali špeciálne dierne štítky na vyraďovanie programov Fortran. Ale keď si teraz vezmeš tento Fortran - podľa mňa je to dokonca niekde medzi 50-60. objavil - a skús na to niečo napísať, bude ti to veľmi nepríjemné, to ti garantujem! Moderný Fortran je stále živý aj dnes, ale je úplne iný, ako býval.

Iné jazyky - teraz napíšem jednu vec, o ktorej ste už určite počuli, potom iba na akciách, kde sa hovorí o histórii programovania - toto je COBOL. Bol to jazyk na písanie obchodných aplikácií. Čo sú obchodné aplikácie? Akékoľvek transakcie v bankách, niečo iné, to všetko bolo napísané v Kobole. U nás sa to, samozrejme, veľmi neteší. Myslím, že na Kobole v Moskve sotva nájdete programátora. A niekde nie v Moskve - s ešte väčšími ťažkosťami. Ale prekvapivo ešte pred 10 rokmi bola viac ako polovica všetkého kódu napísaného ľudstvom napísaná v Cobole. A doteraz sa značná časť všetkých bankových transakcií vykonáva pomocou programov v ňom napísaných (COBOL) a stále doň ľudia niečo píšu.

Existuje aj „vtipný“ jazyk, volal sa Algol (68. verzia, ktorá charakterizuje rok jeho vzniku). Je to algoritmický jazyk. Vo všeobecnosti tam niečo dokázali, ale teraz nás veľmi nezaujíma, čo dokážu. A tu sa naša exkurzia do staroveku a do relatívne nepoužívaných jazykov môže skončiť a prejsť k tomu, čo je stále živé (a aktívne žije).

Staré, ale živé jazyky

Algol bol vynájdený v Európe a Fortran sa používal hlavne v štátoch - neexistujú žiadne veľké rozdiely. Aký trend je viditeľný? Spočiatku bolo všetko ťažké a na písanie ste museli byť takmer inžinier, elektrotechnik, pochopiť, kde sú zatvorené kontakty a niečo iné na programovanie. Aj vtedy bolo treba pri listoch sedieť a spomienku počítať, dohliadať na ňu. A postupne sa všetko zjednodušilo, zjednodušilo, zjednodušilo a potom ešte ľahšie pre programátora – čo najmenej myslieť na človeka, čo najviac robiť automaticky. Približne na konci tohto obdobia (prednášajúci ukazuje na Algol a Kobol) sa začínajú objavovať jazyky, ktoré v istom zmysle „prežili“ dodnes.

ZÁKLADNÉ. Snáď na to ešte niektorí ľudia niečo píšu, aspoň som videl, že v niektorých inštitúciách učia na QBasic - také modré okienko, kde je napísané "1989". Vo všeobecnosti žije „s mocou a hlavne“! Bol vynájdený ako jazyk pre neprogramátorov. Vtedy bol programátor také veľmi špecializované povolanie. A tu vám povedia: „Máme tu skvelý základný jazyk a každý rozumný človek si v ňom ľahko vezme a napíše program“. Opäť platí, že BASIC a moderný BASIC je obrovský rozdiel. Všetky tieto riadky očíslované každých 10, najrôznejšie GOTO a iné horory - nemajú nič spoločné s moderným BASICom a dokonca majú málo spoločného s BASICom 89.

Ďalšou úsmevnou historkou je jazyk Pascal, všeobecne známy v univerzitných kruhoch, hlavne v Rusku a v krajinách bývalého Sovietskeho zväzu. Prekvapivo sa používal a stále používa ako vyučovací jazyk. Vo zvyšku sveta je menej častý, ale je tiež živý a zdravý. Existuje taká osoba Wirth - tu je vedec, teoretik. Zúčastnil sa diskusie o Algole, nepáčilo sa mu, čo sa stalo, a prišiel s vlastným jazykom - Pascalom. A potom firma Borland (a predtým mnoho iných firiem – angažoval sa najmä Apple) všetko zobrala a zničila. Mal krásnu teóriu, štíhlu – „všetko bude dobré“ – a zobrali a napchali tam, čo ľudia potrebujú k práci. No nevyšlo mu to tak pekne, ako chcel.

A nakoniec,. Xi bol vynájdený inžiniermi. Ak Pascal vynašiel vedec, potom C vynašiel Kernighan a Ritchie, pracovali ako inžinieri v Bell. Ako k tomu došlo? V tom čase nebolo možné v týchto jazykoch napísať čokoľvek systémové (prednášajúci ukazuje na Fortran, COBOL, Algol). Čo je to „systémové“? Napríklad operačný systém, nejaké ovládače, niečo iné. Tieto jazyky boli pre matematiku, pre obchod a pre všetky tieto veci. A všetko ostatné bolo napísané v Assembleri. Existovali nejaké jazyky, teraz sú mŕtve, to znamená, že jazyk C sa neobjavil okamžite z Assemblera, ale cez nejaké prechodné veci.

Čo je podstatou? Kernighan a Ritchie sa radi hrali s hračkou Asteroids - vesmírna loď lieta a sú tam asteroidy, strieľa na ne a ony sa rozpadnú. Mali server, na ktorom hrali, ale bolo tam veľa ľudí a hračka sa spomaľovala. A niekde v kancelárii zistili, že majú nejaký počítač, ktorý nikto nepoužíva. Vyskytol sa však problém – hra mala inú architektúru a hra bola napísaná v Assembleri.

Prepísali ho, samozrejme, dokonca niektoré funkcie orezali, aby na ňom mohli hrať. To ich však priviedlo k myšlienke, že prepisovať zakaždým na novú architektúru nie je príliš chytré. A rozhodli sa napísať vysokoúrovňový jazyk, ktorý by bol vhodný na systémové programovanie, teda v ktorom by bolo možné spravovať pamäť, v ktorom by bolo možné pochopiť, kde čo je a ako sa k týmto častiam pamäte dostať. . A tak sa objavil jazyk C, ktorý mal neskôr na všetko obrovský vplyv. Všetky (prednášajúci ukazuje na Algol, Fortran a ďalšie spomenuté jazyky) mali veľký vplyv, ale C - áno ...

V súlade s tým to bol hlavný jazyk v Unixe - operačnom systéme, ktorý bol v tom čase ešte populárnejší ako teraz. A asi v 80-tych rokoch bola situácia asi takáto (lektor ukazuje v Basic, C a ďalších spomenutých jazykoch). Povedzme, že toto všetko už umrelo prešibane (prednášajúci vymazáva odkazy na Assembler, Fortran a Algol) ... A v 80. rokoch sa počítače zmenšovali, inteligentnejšie, lacnejšie a ľudia chceli všelijaké podivnosti, aby žiť ešte lepšie, žiť ešte zábavnejšie.

Jazyky pochádzajúce z 80. rokov

Jednou z prvých zvláštností bol jazyk C++. Jazyk C má obrovské množstvo nedostatkov (no, je naozaj obrovský) - môžete v ňom robiť čokoľvek, vrátane streľby do nohy, streľby do nohy fikciou, do druhej nohy, streľby jednou nohou na druhej nohe, vo všeobecnosti - čo chcete robiť. Zároveň sa tam ale robia niektoré architektonické veci dosť ťažké – opäť, ako v Assembleri, musíme sledovať, kde sme, čo a akú pamäť máme pridelenú; je tam stále, keď táto pamäť niekam "tečie" - to znamená, že sme vybrali, zabudli vymazať, vymazali nesprávnu vec, vypadli z pamäte, vo všeobecnosti - máme veľa problémov.

C ++ bol pôvodne vytvorený ako súbor doplnkov k jazyku C, ktoré by uľahčili vývoj. V tom čase sa stalo módou objektovo orientované programovanie a ľudia sa rozhodli, že všetko sa dá opísať formou hierarchie, teda máte loptu (abstrakt), zdedíte z nej futbalovú loptu, volejbalovú loptu, ďalšiu abstraktnú loptu. . Vtedy bolo módou, že „teraz všetko píšeme formou akejsi hierarchie a všetko bude v poriadku, život sa zlepší, všetko bude v poriadku a všetko“. V istom zmysle C ++ implementoval tento objektový prístup - nebol to prvý objektovo orientovaný programovací jazyk, ale stal sa pomerne populárnym a začali sa v ňom objavovať všetky možné funkcie. C++ si zároveň zachovalo takmer úplnú kompatibilitu (v tom čase) s jazykom C, program napísaný v C bol v 99% prípadov úspešne skompilovaný ako C++ a dokonca fungoval rovnako. Toto bolo určené na uľahčenie migrácie z C do C++.

Okrem objektového prístupu (v C ++) sa rýchlo objavila aj štandardná knižnica šablón (STL). Myslím, že v škole tí, čo ešte učili Pascala, zistili, že po prvé tam nemáte zabudované triedenie (v starodávnom, modrom Borland Pascal, teraz je to už v moderných verziách) - existuje príklad (zdroj) triediť, môžete ho skopírovať a vložiť. Ale ak tu chcete triediť celé čísla, tu chcete reálne čísla a tu sú reťazce, ktoré sa dajú navzájom porovnávať, museli ste napísať tri rôzne triedenia, ktoré robia presne to isté, len majú rôzne dátové typy. To nie je príliš dobré a šablóny, ktoré sa v C ++ okamžite neobjavili, tento problém značne uľahčili. To znamená, že ste mali abstraktný program, ktorý úspešne triedil niečo, čo sa dá navzájom porovnávať.

Skriptovacie jazyky z 90-tych rokov

Čas však nezastal, v 80. rokoch sa udialo veľa zaujímavého. Ale niekde na prelome 80. a 90. rokov sa počítače stali tak dobrými, že už bolo možné robiť veľmi zvláštne a veľmi neefektívne veci. Konkrétne išlo o skriptovacie jazyky, ktoré neboli kompilované do strojového kódu, ale interpretované. Niekedy sa interpretoval aj BASIC, ale tieto skriptovacie jazyky boli určené hlavne na spracovanie textu - napríklad Perl, Python (vtedy to nebolo veľmi známe), PHP, Ruby - to sú skriptovacie jazyky, ktoré sú v jeden alebo iný stupeň stále žijú (všetci sa stihli objaviť pred rokom 2000, dokonca oveľa skôr).

Poďme si ich trochu prejsť, pretože ide o špecifické veci a teraz sa používajú na mnohých miestach. aká je myšlienka? Ak nekompilujeme, môžeme povoliť oveľa viac. Napríklad, program sa môže pozrieť na svoj kód a nejako ho použiť; vie, čo sa v nej deje a vďaka tomu dokáže veľa zaujímavého.

Perl bol určený na spracovanie textu – v tých časoch už bolo v počítačoch toľko pamäte, že bolo možné doň napchať nejaký text a urobiť s týmto textom niečo užitočné (napríklad počítať slová, hľadať nejaký druh). Ale podľa môjho názoru ho navrhli ľudia, ktorí boli trochu mimo, pretože je o ňom taký vtip: "Akákoľvek sada napísaných znakov je správny program v Pearl." Podľa mňa sa na to dá len písať, nie čítať. Keď sa pozriem na kód v Perle a snažím sa niečo zistiť, ničomu nerozumiem. Možno keby som ho lepšie poznal, niečomu by som rozumel, ale ako som počul od tých ľudí, ktorí to ešte vedia, vravia, že sa to prepisuje ľahšie. To znamená, že programy sú krátke a skutočne ľahšie sa prepisujú, než zisťovať, čo tam je a opravovať to.

Približne v tomto čase, v polovici 90. rokov, sa objavil internet. Najprv to bola pošta, stránky so statickým HTML, ale ľudia tam chceli pridať nejakú dynamiku, aby sa nám všetko dialo dynamicky, dali sa vyplniť nejaké formuláre, urobiť knihy návštev a niečo iné. Vyžadovalo si to teda nejakú interakciu, prišli s protokolom, ako to interaguje a hlavne s vygenerovaním týchto statických (podmienečne) stránok, ktoré budú používateľovi „vypľuť“ ako odpoveď na jeho požiadavku.

Vo všeobecnosti sa v tom čase nehodilo nič iné ako Pearl. Bol to zlý nápad napísať obslužný program v čistom C alebo C++. A pre nedostatok lepšieho jazyka v tej dobe (a dostatočne dlho), Pearl bol populárny jazyk pre vývoj webových aplikácií. Samozrejme, rozsah nie je porovnateľný s tým, čo sa deje teraz.

PHP vzniklo ako ... náhodou. Jeden človek to rýchlo prestal robiť - urobil si nejakú vlastnú stránku, mal nejakú knihu návštev, niečo iné, nejaké veci. A pre Pearl napísal niekoľko makier, ktoré vyzerali ako C, pretože vedel, ako používať C, len preto, že bol taký pohodlný. A nazval som to Osobná domovská stránka. Zdieľal a povedal: "Ľudia, pozrite sa, čo som napísal, všetko je tu oveľa jasnejšie ako na Pearl a môžete to upraviť." A ľuďom sa to páčilo.

Potom prípad zahodil. Vo všeobecnosti, ako výsledok, toto PHP začalo žiť a časom sa stalo oveľa populárnejšie ako Perl. Ale táto jeho „pôrodná trauma“ (nápad je ako súbor makier pre Pearl) si s ním zahrala dosť krutý vtip. Jazyk sa ukázal byť zvláštny. To znamená, že sa to vyvinulo samo, nikto to nenavrhol, nikto neadministroval proces vývoja (ani spoločnosť, ani nikto), ale bolo veľa skupín, z ktorých si každá pílila, čo sa jej páčilo. Výsledkom je, že funkcie sa tam volajú inak, dokonca neexistuje ani štýl, všetko je cez podčiarkovníky, vo všeobecnosti sú nastavenia tu a tam a ako to bude všetko fungovať, nie je príliš jasné. Ale môžete si sadnúť a písať v PHP za dve hodiny, pretože tak to zamýšľal.

Python a Ruby: Ruby je teraz menej populárny, Python je akosi lepšie "ostrihaný", porozprávajme sa o ňom neskôr. Je jasné, že v tých časoch to boli (prednášajúci poukazuje na Perl, Python, Ruby, PHP) vysoko špecializované jazyky na vysoko špecializované účely. Vo všeobecnosti v nich vtedy nebolo napísané žiadne systémové programovanie, žiadna obchodná logika a teraz toho veľa nerobí.

Kompilované jazyky z 90. rokov

Pôjdeme približne v rovnakom čase, ale iným smerom. V tom čase sme používali C++ takmer na všetko, čo bolo potrebné napísať nie pre web, nie pre spracovanie textu, ale pre jednoduché aplikácie, pre operačné systémy, pre hračky - vo všeobecnosti pre čokoľvek. Ale C++ je v skutočnosti strašidelný jazyk. prečo? Pretože po prvé zdedil všetky problémy C kvôli spätnej kompatibilite. Stále sa tam dalo zabiť miliónmi rôznymi spôsobmi, tými istými, ktoré boli v C (samozrejme, v C ++ boli pridané nové spôsoby). Zároveň, ak napíšete všetko dobre a správne, ako to koncipovali autori C ++, potom sa, samozrejme, nedalo zabiť starými metódami a zdá sa, že ich bolo menej. Mal však veľmi zvláštny objektový model. Rozdelenie programu na moduly, na časti nejakého druhu, vo všeobecnosti pochádza z C (ak môžete napísať include v C alebo C++ - v skutočnosti to bolo koncipované ako jednoduché vloženie textu knižnice do vášho programu, v koniec, keď napíšeš kopu inklúzií, máš všetko - ak je to “primitívne”, ako to bolo na úplnom začiatku - všetko sa vloží do jedného súboru a potom sa to celé skompiluje strašne dlho, lebo to ide niekoľkokrát dookola. verzie sú ešte lepšie.

Vo všeobecnosti má C++ veľa nevýhod. Kvalifikácia programátora musela byť vysoká, aby mohla písať v C++ a takíto programátori boli drahí (aj školenia, aj niečo iné, to znamená, že je ťažké nájsť programátorov na trhu, musia veľa platiť, no, vo všeobecnosti to tak nie je... ). A naše počítače počítajú rýchlejšie a rýchlejšie, sú stále lacnejšie, ľudia si kupujú nové počítače a chcú viac aplikácií, viac hračiek pre telefón, všeobecne – viac radosti.

Takto sa objavila Java (Java). Aj tam sa viaže celkom úsmevná historka, ako sa názov objavil v tomto jazyku. Sú tam programátori, kávu pijú neustále a vtedy bola móda piť kávu, ktorá rástla na ostrove Jáva. Jazyk bol koncipovaný ako jazyk pre vstavané spotrebiče, najmä pre kávovar. Takto vznikol názov...
Čo u nej začalo, čo bolo na nej dobré a prečo si získala takú obľubu? Najprv sa úplne zbavili Sishnyho dedičstva. Žiadne ukazovatele, oveľa menej spôsobov, ako odstreliť akúkoľvek časť svojho tela a zlomiť všetko. Po druhé, zaviedli oveľa novšie nápady, pokiaľ ide o objektový model – to znamená, že C++ sa objavilo oveľa skôr ako Java a používalo archaickejší, „divoký“ objektový model. No tu (prednášajúci ukazuje na Javu) to už bolo vtedy premyslenejšie a teoreticky ľudia rozmýšľali a v praxi aplikovali a robili všetko oveľa coolovejšie.

A nakoniec, tretí. Naše Java programy neboli zostavené do strojového kódu, ale do kódu pre virtuálny stroj. To znamená, že ste mali virtuálny stroj JVM (VM) - Javovsky. Vaše programy boli zhromaždené v akejsi strednej prezentácii a potom s pomocou tohto stroja už boli spustené. čo to urobilo? Po prvé spomaľoval a po druhé žral pamäť strašnou silou a po tretie bol prenosný kdekoľvek (teoreticky) - aj do kávovaru, aj do mlynčeka na kávu, dokonca aj do počítača, dokonca aj do mobilu. Na jednej strane je to dobré, to znamená, že ste práve napísali implementáciu virtuálneho stroja a potom všade spúšťate svoje Java programy. Ale na druhej strane je zlé, že ten istý telefón mal v tom čase málo pamäte, mal nízky výkon a to všetko sa navyše začalo otupovať a spomaľovať.

Ale ani toto nie je hlavný dôvod, prečo bol jazyk vo všeobecnosti vynájdený. Jazyk Java bol vynájdený s cieľom znížiť požiadavky na kvalifikáciu programátorov. To znamená, že chudobnejší programátori môžu písať dobré programy v Jave, pretože Java neumožňuje písať zlé programy - neexistujú žiadne prostriedky na písanie zlých programov. Dajú sa tam písať len dobré programy. No v chápaní tvorcov jazyka.

To znamená, že ak v C, v C++, v Pythone, na čomkoľvek, dokážeme rozpustiť nejaký strašidelný odpad z nášho projektu, kde máme všetko pomiešané, hodiny zbierané a tam niečo iné. V Jave môžete tiež rozpustiť odpadkový kôš, ale na to už musíte vynaložiť určité úsilie. To znamená, že to štandardne nedopadne ako „smetisko“, vznikajú iné problémy, že sa tam niečo zdedilo a zdedilo – vo všeobecnosti sa na jeden zmysluplný riadok získa desať nie veľmi zmysluplných. Na druhej strane možno taký stredne zdatný programátor dokáže napísať pomerne kvalitný kód.
Sme takmer na konci. U nás sa ďalšia vec objavila .Net (dosiahne), no a konkrétne nás zaujíma C # (takmer to isté [prednášajúci ukazuje na Javu], teda rozdiely v detailoch, ak vyberiete si medzi nimi - pozrite sa, kde zaplatíte viac peňazí).

A ešte jedna vec je JavaScript. Nemá nič spoločné s jazykom Java, objavil sa v tom istom roku - slovo bolo módne, získali licenciu na používanie ochrannej známky.

Na čo si treba hlavne dať pozor? (Lektor kreslí šípky z C ++ do Java, .Net, C #, JavaScript a PHP). Ak chcete napísať jednoduchý program v jednom z týchto jazykov a v mnohých ďalších - ak viete C ++, vo všeobecnosti nepotrebujete vedieť nič iné - zoberiete a napíšete v C ++ a potom na začiatku pridáte doláre , niečo iné urobí maličkosti a začne vám to fungovať na čomkoľvek (lektor ukáže na jazyky, ku ktorým boli priradené šípky z C++). To znamená, že v niektorých jednoduchých veciach sú si mimoriadne podobní. Ak riešite nejaké školské problémy, vzdelávacie úlohy, niečo iné (nenavrhujete veľký projekt – máte jeden súbor, ktorý číta čísla, zobrazuje čísla v konzole, robí niečo iné), tak medzi týmito jazykmi nie je takmer žiadny rozdiel. Je jasné, že JavaScript a PHP sú špecializované, všetko majú trochu inak. A tu (prednášajúci ukazuje na Javu a C #) je vo všeobecnosti veľmi malý rozdiel.

Odvtedy sa objavili všelijaké ďalšie zaujímavosti, no nie je jasné, či budú žiť alebo úspešne zomrú. Čo používajú teraz, na aké úlohy?

Výber jazyka v závislosti od úlohy

Povedzme, že stojíte pred úlohou napísať ovládač pre grafickú kartu. Aký jazyk použijete dnes? (Kričte z publika: Java!) Prečo ... Java je skvelá, ale prečo nie Ruby alebo PHP? (Prednášajúci hovorí sarkasticky.)

Nízkoúrovňové programovanie

Ak píšete niečo nízkoúrovňové, potom je C najlepšia voľba, ale v skutočnosti som niečo počul (ale nevidel som), že sa na to používa C ++. Ale sotva tomu verím, pretože v C môžete jasne ovládať - keďže ste dali toľko bajtov pamäte, potom bude tak a tak. A ako sa v C ++ (STL) implementuje reťazec? No, nejako implementované. A nakoniec nevieme, ako a čo sa tam deje, možno nám dôjde pamäť na grafickej karte alebo sa stane niečo iné. Preto C stále žije a neumiera, stále existujú také úlohy programovania systému - napíšte operačný systém, napíšte ovládače, napíšte niečo iné - C je na to skvelé. Okrem toho teraz existujú najrôznejšie zariadenia (internet vecí sľubuje, že čoskoro príde), ktoré žijú na batérie (a, prirodzene, budú ich milióny, všetko bude ovešané týmto internetom vecí), mali by byť veľmi lacné a mali by mať veľmi nízku spotrebu elektriny. V súlade s tým tu budú 2 KB pamäte, 5 kHz procesor, no, samozrejme, v blízkej budúcnosti nebude fungovať naskrutkovanie nejakého virtuálneho stroja alebo skriptovacieho jazyka, čo znamená, že musíte niečo napísať v C. A aj teraz napríklad výpočty na grafickej karte (OpenCL alebo nejaká iná technológia) - neprišli s novým jazykom na písanie programov - tam robia C s nejakými veľkými obmedzeniami. Len preto, že ľudia už vedia ako, prečo sa učiť niečo nové? Formálne je to pravdepodobne tiež v istom zmysle C.

Webové programovanie

Povedzme, že chcete napísať nový Facebook (sociálna sieť). Na čo to napíšeš? (Z publika sa hovorí o HTML a CSS.) HTML, CSS je dizajn a my tam chceme mať možnosť pridávať fotky, priateľov, nechávať komentáre.

Pre skriptovaciu časť – teda to, čo sa bude diať na strane klienta – je to JavaScript. A niekedy sa JavaScript vygeneruje v inom jazyku a odošle (stane sa, že sa vygeneruje skript ... pretože niekedy je jednoduchšie zvládnuť niektoré zmeny v logike týmto spôsobom).

Prekvapivo je to napísané v PHP – a Facebooku a mnohých iných veľkých projektoch. Samozrejme, musel som napísať nejaké svoje veci, aby to stále fungovalo dobre, a nie tak, ako sa robil „tyap-blooper“, ale urobili to. V podstate je úplne jedno v čom píšeš, ale Perl neodporúčam. Tu a teraz, samozrejme, nikto nenapíše pre web nič od začiatku. Každý píše nejaký rámec alebo niečo také. Online nakupovanie? Stiahli sme si framework pre internetový obchod – no, to je všetko, napísali sme internetový obchod.

Obchodné programovanie

Ďalej chcete napísať nejakú nudnú bankovú žiadosť. Alebo napríklad máte niekoho, kto predáva sim karty? Možno ste si niekedy kúpili telefón alebo niečo iné a povedali vám: "Systém visí, nemôžeme nič robiť." Na čo napíšete takúto žiadosť? (Výkrik publika o Pythone) V Pythone nemôžete napísať niečo také, čo si?! Pre podnikanie sa v Pythone neoplatí nič písať. prečo? Pretože keď niečo napíšete v Pythone, nemôžete nájsť značné množstvo chýb v procese písania. Python sa všemožne dynamicky typuje a vo všeobecnosti sa tam dá skryť chyba tak, že sa objaví v takej situácii, že ani nerozumiete, čo tam tí pokrivení používatelia robili, že sa vám všetko pokazilo. To znamená, že je lepšie písať malé skripty pre seba v Pythone - rozumiete tomu, čo sa tam deje a čo sa robí. No, alebo niečo, čo nie je škoda vyhodiť: chcete niečo uviesť na trh skôr ako vaši konkurenti, tak čo ak sa to zakaždým pokazí. Napísali ste v Pythone a to je všetko - prevzali ste trh. A ak niečo píšete dlho, napríklad nejakú bankovú aplikáciu (aby schvaľovala úvery, niečo iné) - napíšete to v Jave. Pretože je tam vážna vec, papieriky, peniaze, doklady, niečo iné, ale nemôžete sa v tom tak pokaziť, aby sa všetko pokazilo, inak sa ľudia urazia - ich peniaze odišli a nikam sa nedostali, v momente, keď sa reťazec zmenil na číslo alebo naopak. Znamená to teda, že metodicky beriete Javu a píšete, píšete... Nuž, alebo na.Net, aj takéto situácie sa v zásade stávajú. Tam, samozrejme, môžete tiež naraziť na problémy, ale pravdepodobnosť je stále o niečo nižšia.

Programovanie pre armádu, letectvo

Teraz si predstavte, že sa rozhodli poslať vás na Mesiac v rakete. Čo by ste radšej použili na napísanie kódu, ktorý riadi raketové motory? Pozrime sa. Toto pravdepodobne (prednášajúci ukazuje v Perl, Python, PHP, Ruby) nestojí za to - spomaľuje sa, deje sa niečo iné, no, vo všeobecnosti by som nesúhlasil s lietaním na takejto rakete. V C++? Aby som bol úprimný, neveril by som ani mne, pretože v C ++ je príliš veľa spôsobov, ako sa zabiť. Keď ste niekde vo vesmíre, nie je to veľmi dobré.

Možno v Jave? Zdá sa, že všetko je tam dosť spoľahlivé a architektúra je dobrá, žiadne divoké typy, žiadna prebytočná pamäť. Povedzme, že nastala tá najdôležitejšia chvíľa a naša Java sa rozhodla, že za nás pozbiera odpadky. Musíme pristáť, spomaliť a ona hovorí: "Nie, smeti idú." Vo všeobecnosti tiež nie veľmi dobré.

Aby som bol úprimný, radšej by som mal tento program napísaný v Pascale. Pascala, samozrejme, nemám rád, ale v takýchto veciach by to bolo veľmi cool.

Použitie niekoľkých jazykov naraz na vývoj softvéru

No, čo by sa malo povedať všeobecne o moderných jazykoch. V súčasnosti mnohé projekty nežijú v jednom jazyku, to znamená, že niektoré žijú v jednom jazyku, niektoré v inom a iné v treťom. Napríklad, ak máte nejakú webovú aplikáciu, ktorá spracováva divoké množstvo informácií, prístupy na disky (dokonca ani do databáz, tie sú také obrovské, že ani databáza nepodporuje niektoré už napísané) sú pravdepodobne napísané v niektorých, potom nízkych -úroveň C na divoký zápis na disk a tak ďalej. Prirodzene, písať celý projekt v C sa neoplatí. Možno existuje nejaký druh prechodnej logiky napísaný v jazyku Java, ktorý volá funkcie Cis na rýchle volania. No, frontend (to, na čo sa používateľ pozerá), je samozrejme už v niečom napísaný, v nejakých skriptoch, v niečom, čo priamo vykonáva prehliadač (JavaScript). A to všetko spolu žije a úspešne sa vzájomne ovplyvňuje.

Pri vývoji niektorých aplikácií, dokonca aj veľkých, niekedy ľudia robia čo? Zoberú a napíšu prototyp v Pythone (ako bude všetko fungovať), načrtnú, premyslia nejakú architektúru. Písanie na ňom je naozaj veľmi rýchle - hodili prototyp, experimentovali s ním a povedali: „Fuj! To je skvelé!" A úplne prepísané. Zdalo by sa, že prácu urobili dvakrát, trvalo to dvakrát dlhšie (dobre, jeden a pol). Ale nie! Často sa ukáže, že táto metóda nie je zlá, pretože ak hneď napíšete do niečoho, napríklad v Jave, a potom sa rozhodnete: „Nie, poďme zrefaktorovať, úplne zmeniť architektúru a to všetko,“ - potom strávite 10x viac času... Aj takéto veci existujú a žijú.

Podmienky úspechu akéhokoľvek programovacieho jazyka

Teraz sa porozprávajme o tom, prečo niektoré dobre vyzerajúce jazyky neprežili alebo nežili vo veľmi obmedzenom priestore. Keď Wirth videl, čo zlé spoločnosti Apple, Borland a všetko, čo robili s jeho Pascalom, prišiel s ešte lepším jazykom – Oberon. Bolo to len divoko minimalistické - to znamená, že tam bolo veľmi málo príkazov (Stringy? Prečo potrebujeme reťazce? Vytvoríme pole znakov!). No niečo mu nefungovalo do takej miery, ako by mohlo.

Ešte jedna vec. Americká armáda ich tiež požiadala, aby vyvinuli skvelý jazyk, v ktorom všetko funguje a všetko sa dá napísať. Výsledkom je pomerne obludný jazyk s názvom Ada, v ktorom však stále niečo píšu, ale opäť – len pre armádu.

Aký je problém? Prečo niektoré jazyky ako Python, ktorý na začiatku nepodporovala žiadna spoločnosť, ovládli trh. PHP, ktoré je tiež zle navrhnuté, tiež prevzalo a uchvátilo trh (väčšinu) samo. A investovali sa všelijaké miliardy dolárov (prednášajúci ukazuje na Aďu) a nikam nešli, nič sa nedialo. aký je na to dôvod? Je to spôsobené tým, že okolo týchto jazykov neexistuje žiadna infraštruktúra. To znamená, že jazyk môže byť vynikajúci, ale pokiaľ neexistuje žiadna dokumentácia, pokiaľ neexistuje komunita, ktorá by vedela odpovedať na otázky (na Stack Overflow) a napokon, čo je najdôležitejšie, pokiaľ ich nie je veľké množstvo knižníc, jazyk nespustí. To znamená, že ste napríklad chceli napísať webovú stránku na Oberon. Prečo nie? A zmätok začína... Nemôžete zvýšiť svoj webový server na Oberone, aby ste ho ľahko otestovali, nemôžete pripojiť žiadne knižnice, pretože nie sú na Oberone. A to všetko sa robí cez akési barličky, sily odchádzajú a vo všeobecnosti pľujete a píšete svoje stránky v čistom C namiesto Oberonu. A tie jazyky, ktoré dokážu používať knižnice z iných jazykov, žijú dobre. Rovnaký Python na miestach, kde sa spomaľuje. Všeobecne platí, že všetky druhy štandardných vecí ako triedenie a niečo iné sú napísané v C a on (Python) vie, ako s nimi interagovať.

Java má tiež natívne rozhranie Java. Toto je v podstate C, to znamená, že tam (podľa môjho názoru chcú zakázať stále, ale zdá sa, že ešte nezakázali), tieto jazyky môžu interagovať s už existujúcimi knižnicami (hlavne s Sishny). A vďaka tomu berú a pracujú. Myšlienka, ktorú sa vám snažím sprostredkovať, je jasná, však? Nepíšte v jazykoch, ktoré nevedia, ako pripojiť knižnicu C. No, ak si chcete užiť niečo cool. Nuž a postupne sú (jazyky) zarastené vlastným druhom infraštruktúry. A žijú akosi dobre.

Programovací jazyk a kariérové ​​poradenstvo

Teraz sa porozprávajme o tom, ako pochopiť, čo v živote chcete. Čo sú skvelé veci? Môžete robiť nejaké systémové programovanie, však? Je skvelé počítať tieto motorky, chcete spustiť kvadrokoptéry, nejaké kamery a niečo iné. Potom je C pravdepodobne vašou voľbou.

Ak chcete písať, možno nie najzaujímavejšie aplikácie v živote, ale je pre vás v pohode navrhnúť ich, premýšľať o tom všetkom a zarobiť veľa peňazí za sedenie a nudu väčšinu času (za toto musíte zaplatiť, ak ste veľmi kvalitná slečna), tu sú - Java, .Net. Chodíš pracovať do banky, píšeš, chodíš do práce o deviatej v bielej košeli, dostaneš dobrý plat a píšeš podľa odporúčaní najlepších Java-source, .Net-sheep a tak ďalej ...

Ak chcete písať akékoľvek aplikácie, nejaký prehliadač, nejaké hračky, niečo iné, potom je C ++ skvelé. Ak chcete písať webové stránky, tu sú, jazyky podľa vášho výberu (lektor ukazuje v Perl, Python, PHP, Ruby), nie je veľký rozdiel. Jediná vec je, že PHP zomrie skôr ako Python, takže ak ste leniví učiť sa nové veci, naučte sa Python. Veľký rozdiel nezbadáte, no dlhšie vydržíte.

Čo sa deje s Ruby, je tiež nejasné. No, dá sa aj PHP, ak ste sa ho už naučili, keďže sú také jednoduché, že ich preučenie netrvá tak dlho.

A nakoniec je tu ďalšia oblasť použitia programovacích jazykov - vtedy ich používa neprogramátor. Povedzme, že ste matematik, fyzik, chemik, analytik, ktokoľvek a potrebujete rýchlo niečo vypočítať, analyzovať nejaké údaje (pre biológov napríklad, koľko arktických líšok žije na veliteľských ostrovoch). To všetko môžete vložiť do tabuľky v Exceli alebo to niečím analyzovať. Na to sa hodí aj Python, ktorý vie pracovať s textom a knižnice sú plné všelijakých, štatistických a podobne. Ak chcete urobiť nejaký druh strojového učenia, spracovať nejaké údaje, predpovedať, potom sa to teraz robí najrýchlejšie v Pythone. Treba však poznamenať, že úlohy sú veľmi odlišné. Napríklad, ak chcete okamžite obchodovať na burze v podmienkach, keď sa kotácie neustále menia, potom bez ohľadu na to, aké skvelé Machine Learning napíšete v Pythone, ľudia, ktorí to majú napísané v niečom rýchlejšom, budú mať čas kúpiť si všetko skôr, zatiaľ čo vy budete počítaní, aj keď sú ich algoritmy horšie. Preto aj tieto úlohy strojového učenia (niektoré z nich) vyžadujú vysoký výkon (a extrémne vysoký), a teda aj iné jazyky.

Jediný spôsob, ako zistiť, čo chcete, je vyskúšať všetko. Teraz to poviem ako jednu z vízií, ako sa dá všetko vyskúšať. Ako sa stať programátorom a byť šťastným? Takže Začíname od nuly. Tu sa v škole učíš matematiku, ruský jazyk a ďalšie povinné a voliteľné predmety a na tabuli (lektor ukazuje na prázdnu tabuľu) sa momentálne odrážajú tvoje znalosti z oblasti programovania. A ty sa chceš stať šťastným človekom, robiť to, čo miluješ, zarábať veľa peňazí a nič si neodopierať a byť šťastný.

Jeden spôsob, ako to urobiť. Existujú, samozrejme, všelijaké inšpiratívne príbehy o ľuďoch, ktorí na vysokú školu vôbec nešli, alebo ju opustili a stali sa miliardármi, majiteľmi firiem atď. Treba si však uvedomiť, že väčšina ľudí, ktorí sa možno nestali miliardármi, no zároveň si dobre žijú, univerzitu v určitom období aj tak ukončila.

Ako je to u nás s prijatím na VŠ (teraz študuješ na škole)? Kým ste v škole, musíte pochopiť, že ďalším krokom je zapísať sa a postarať sa o to. Zložte skúšku alebo vyhrajte olympiádu. Na skúške môžete použiť Pascal, C ++ (vrátane čistého C), Python (nebudem ich ďalej spomínať). Na olympiáde - rovnaký Pascal, rovnaký C ++, rovnaký Python (teraz si povieme o jeho problémoch) a najčastejšie je tam Java. Stále sa môže stať čokoľvek v závislosti od olympiády, ale nie podstata.

Ako vyzerá graf rozloženia jazykov na celoruskej olympiáde v informatike? Ľudia, ktorí sa zúčastňujú celoruskej, najskvelejšej olympiády, o čom píšu? Vyzerá to takto (tu to znamená Pascal a tu je to okolo 2000 a tu je to okolo nuly, tu je C ++ a tu je to 2015).

V roku 2000 takmer nikto nepísal v C++. O pätnásť rokov neskôr už takmer nikto nepíše v Pascale, napriek tomu, že Pascal je moderný. Toto je jazyk, ktorý dokáže takmer všetko rovnako. Je to tak, že každý je príliš lenivý sa to naučiť, každý nový trend a každý pokračuje v písaní v Borland Pascal, čo samozrejme nemôže nič robiť. V C ++ ľudia píšu niekoľko triediacich algoritmov (STL) - skvelé, napísali triedenie () a to je všetko. Na Pascale, na bežnom, na starom - to je problém. Napísali nejakú množinu (potrebnú) - super, napísali to v C ++, v Pascale sú zase muky nepretržité. Na nových Pascaloch to samozrejme môžete urobiť, ale v skutočnosti to stojí peniaze. Možno ste si to nevšimli, ale je to tak.

Existuje aj Java, ale Java má veľa písmen. Je to pre veľké projekty, ale pre malé programy na jedno použitie sa to ukazuje ako dosť zlé, pretože je tam veľa zbytočných písmen. Ale aj niektorí ľudia píšu, môžete sa na tom naučiť písať. Ale na Jednotnej štátnej skúške to tak nie je a Jednotná štátna skúška bude z väčšej časti aj tak musieť prejsť.

Čo je najlepšie na skúšku? Na skúšku je najlepšie (ak nič nevieš a v škole ťa nič nenaučia) naučiť sa Python. Niektoré úlohy skúšky sú na ňom perfektne vyriešené. Na olympiáde sa vo všeobecnosti ukazuje, že C ++ je (používa sa), pretože Python je veľmi pomalý, nie je tam všetko vyriešené.

Takže ste študovali malú podmnožinu jazyka a niektoré algoritmy (možno) a vyriešili veľa problémov, aby ste získali diplom z olympiády a šli na univerzitu, aby ste získali vyššie vzdelanie.

Teraz vám poviem o tom, ako v HSE budujeme kurz, v akom poradí sú jazyky, ako sa študujú v aplikovanej matematike a informatike na Fakulte aplikovaných vied, ktorú robíme s Yandexom. V prvom semestri - Python (nie v plnom rozsahu, o tom, ako by ste sa mali učiť v škole) a C ++ (širšie, oveľa širšie, ako sa zvyčajne vyučuje na školách). Poviem vám to hneď, aby ste sa nezľakli, ak zrazu budete chcieť vstúpiť, povedzte: „Prečo, toto všetko už viem, prečo idem niekam študovať? Idem radšej niekam inam." Pre tých, ktorí už vedia dobre programovať, je tu možnosť ísť priamo na štúdium algoritmov, a to v dosť teoretickej príprave. Teraz sa na nich nepozeráme, toto (ukáže na tabuľu) je pre tých, ktorí programujú médium alebo vôbec.

V prvom semestri sa učia základy Pythonu, len aby sa ľudia naučili programovať a aby to nikoho zvlášť nepohoršovalo. Python sa na školách vyučuje len zriedka, väčšinou ľudia prichádzajú so znalosťou jazyka Pascal alebo C++. V podstate aj Pascal, ak ide o masovú školu. Aby sa nikto neurazil, každý sa učí nový jazyk (ako keby boli za rovnocenných podmienok). A C ++ jednoducho preto, že potom môžete ísť kdekoľvek z C ++.

Potom nasleduje kurz "Algoritmy" a samostatný projekt kurzu. Klasické algoritmy s implementáciou. Nie že by sme teoreticky niečo zobrali, vypočítali zložitosť. Na prednáške sme to zobrali, vypočítali zložitosť, na seminári sme to zobrali, implementovali algoritmus. Projekt je o tom, že študenti robia niečo hotové. Napríklad jeden z projektov bol: počítať... Povedzme, že máte v Moskve veľa bytov a rozumiete: „Ach, mám veľa nepotrebných vecí, niektoré dám do prenájmu. A stanovili cenu a nikto si od vás nechce prenajať byt - pravdepodobne príliš drahý. Alebo stanovili nejakú cenu, hneď to stiahli a vy si pomyslíte: „Ach, asi som to minul lacno“ – a ty sa tiež rozčúliš. To znamená, že bolo potrebné vypočítať, koľko stojí prenájom bytu? Vchádzate s údajmi – to vám vytvorí odhad. Takáto stránka, ktorá pozostávala z niekoľkých vecí: prijímať návrhy, analyzovať, aplikovať nejaký algoritmus strojového učenia (pravdepodobne) nenáročný a vytvoriť krásnu webovú tvár, v ktorej si môžete niečo vybrať, niečo nahnať, niekoľko metrov, ľubovoľný počet miestností , počet sáun, počet jacuzzi vo vašom byte a približný odhad nákladov. Teda akási hotová, nie veľmi zložitá vec. Tu to znamená (prednášajúci ukazuje na kurz o algoritmoch) taký rázny C++, s konzolovým I/O. No a tu (prednášajúci ukazuje na nápis „projekt“) je niečo pod vedením mentora, prípadne s databázami, možno s parsovaním textov a s niečím iným.
Potom nasleduje tretí semester – kurz s názvom „Počítačové systémy“. Existuje pomerne málo assembleru na pochopenie (veľmi málo) a potom niečo podobné čistému C a interakcii s operačnými systémami, v podstate systémové programovanie. A projekt na seminár je tiež niečo na tému všetkých sieťových interakcií, dosť nízkoúrovňové: vyviňte nejakú utilitu, napríklad rsync (synchronizácia, možno viete. V čistom C viac-menej napíšte analóg rsync, ktoré budete mať cez sieť synchronizované priečinky so všetkými prístupmi k súborom atď.).

A nakoniec štvrtý. Ani neviem ako to nazvať, toto je taká vinaigretta technológií potrebných pre skutočný vývoj, napríklad pre web development. To znamená, že ide o praktickú aplikáciu databáz, opäť niečo podobné ako v projekte (lektor poukazuje na projekt 2. ročníka), ale viac do hĺbky. To znamená, že takéto viac-menej konkrétne veci sú už praktické programovanie. Paralelne s tým existuje akákoľvek teória, no, tu sa tiež zaoberajú vedou.

A po dvoch kurzoch sa ľudia rozutekajú robiť to, čo ich zaujíma, pretože táto vec pomerne široko pokrýva také základy programovania a ľudia už v tomto bode chápu, že sa nechcú nijako zaoberať počítačovými systémami (napr. nemali radi systémové programovanie), ale chcú sa zaoberať nejakými teoretickými algoritmami, ťažkosťami s výpočtom, vymýšľaním nejakých nových vecí, distribuovaných alebo niečím iným. Alebo si naopak myslia, že tu toho veľa nemajú ( lektor ukazuje na prvý riadok kurzu s Pythonom a C++) choď, potom ( lektor ukazuje na tretiu líniu kurzu so systémovým programovaním) - ako sa ti nepáči, počítaj bajty a nastav si všelijaké obmedzenia na čítanie-zápis, rob streamy, vlákna a niečo iné. A v súlade s tým si ľudia vyberú nejaký smer a učia sa. Teda v princípe, aby sa u vás nerozvinul „syndróm káčatka“ – najprv ste videli svojho Pascala a teraz hovoríte „Pascal je sila“; alebo pokročilejší - videli ste C ++ a začali ste o každom hovoriť, že C ++ je výkonné a všetko ostatné nie je príliš dobré.

Tu sa na to musíme pozrieť (lektor ukazuje na zoznam predmetov na tabuli) širšie - toto je jedna z metód, ktorá bola zvolená najmä na HSE (v poslednej dobe sa objavila, takže je celkom moderná). Existujú aj iné spôsoby, ako sa navzájom spoznať. Na iných dobrých univerzitách sú umiestnené v trochu inom poradí a iné akcenty. Ale tiež sa snažia ľudí oboznámiť so všetkým, čo majú.

Ako si programátor hľadá prácu

Ty si toto ( lektor ukáže na zoznam kurzov) urobil všetko, vyštudoval VŠ, ešte dva roky študoval niečo produktívnejšie a treba ísť do práce. Ako si vyberáte niečo, s čím budete pracovať? Najprv ste všetko spoznali, zašli niekam hlboko a už viete, čo máte radi. Musíte si vybrať, čo máte radi prirodzene. Pretože ak milujete, budete investovať energiu, budete mať motiváciu a celkovo bude všetko v poriadku. Pretože nejde len o peniaze, ale aj o to, aby to bolo pre vás zaujímavé a príjemné. No a chcete sa dostať do skvelej spoločnosti, zamestnajte sa. Akého človeka by som ja osobne rád videl? Chodí ku mne napríklad stovka študentov – dvoch alebo jedného musím zobrať do práce. Prečo prichádzajú, vôbec nerozumiem, kto sú, čo sú, ako sa majú? V lepšom prípade mi ukážu diplom, ktorý dostali na univerzite, a ja poviem: „Fuj! Toto je skvelý diplom, ale nie je taký skvelý!" A mimochodom, môžem sa mýliť. Možno mal ten človek veľa voľného času a oveľa lepšie sa učil.

čo by bolo skvelé? Najprv nejaký open source projekt, ktorý ste napísali od začiatku do konca. Je žiadúce, ak robím nejakú infraštruktúru, aby sa dáta dali rýchlo čítať, alebo niečo iné, tak by som samozrejme mal záujem nechať si napísať niečo open source. Nie je vytvorený web, ale niečo k téme. Prečo ma to zaujíma? Môžem sa pozrieť na váš kód, vidím, ako často ste sa dopúšťali, vidím, ako ste reagovali na chyby od používateľov, na chyby od vývojárov, ktorí to používajú – všetko je zapísané, pozerám sa na všetko a pomyslím si: „Páni, táto chyba nebol tu dva roky. zatvorené, tu ste používateľovi odpovedali neslušne, potom už nič iné neberiem “. To znamená, že toto je váš osobný projekt.

Ďalej, čo iné by bolo skvelé? Chcel by som vidieť, ako ste robili tímovú prácu. To znamená, že prídete ku mne na pohovor a poviete: „S chalanmi z univerzity sme podali dobrú prihlášku. Robil som tam databázu, robili tam nejakú mobilnú aplikáciu a pracoval nám tam aj chlapík, dievča-dizajnér, chlapec na technickej podpore. Bolo nás päť a urobili sme skvelý projekt." No, vidím, aký je v skutočnosti váš projekt, hovorím: "Aký je váš?" Znovu sa pozriem na kód a pochopím, že viete pracovať v tíme s ľuďmi.

Programátor nie je ten, kto sedí sám (taký indie) v garáži, niekde so zhasnutým svetlom, s nikým sa nerozpráva, fúzuje a píše. Napriek tomu existuje určitý druh interakcie s ľuďmi. Napríklad so šéfom, ktorý vám môže niekedy nadávať (šéfovia sú takí, nie vždy láskaví). A vidím, že vieš pracovať s ľuďmi a teší ma, ak máš nejaký dobrý tím. Aj keď to nie je dobré, je to lepšie ako nemať.

Čo by som si ešte osobne prial? Ak ste sa ukázali vo veľkých projektoch. Napríklad sme niečo zaviazali k jadru Linuxu, ak programujete systém, opravili sme nejakú chybu. To znamená, že ukázali, že môžete čítať kód niekoho iného a môžete v ňom urobiť nejaké zmeny. Pozerám sa: "Och, skutočne, prišiel si na niečo zložité a opravil si nejaké chyby!" A začínam mať z toho veľkú radosť. Pretože som... no, neviem... môj programátor skončil, pretože mu konkurenti ponúkli vyšší plat, a ja potrebujem súrne niekoho zavrieť – vás. Vyzerám, že si písal len od začiatku, ale nevieš čítať a upravovať cudzí kód a som naštvaný.

A nakoniec, v závislosti od konkrétnej pozície, sú to rôzne ďalšie veci. Ak ste pracovný analytik, chcel by som, aby ste riešili úlohy analýzy údajov na Kaggle. Ak dostanete prácu na nejakých algoritmických veciach, bol by som rád, keby ste urobili nejaké algoritmy v športovom programovaní. A na záver, ak ste sa zamysleli nad profesiou, prečítali ste si, ako prebiehajú pohovory, stretli ste sa s tým, že niektorí ľudia tam vyjadrujú veľkú nespokojnosť: „Prišiel som a pýtajú sa ma, čo je mojím koníčkom. Sedím ako sova a neodpovedám, pretože nemám žiadne hobby, “- a myslia si, že to robia personalisti. V skutočnosti sa snažia zistiť, aký priateľský a vhodný ste. Ak ste nepriateľský a neadekvátny, potom bez ohľadu na to, aký ste génius a workoholik, tvrdý špecialista s veľkými znalosťami, pre tím sa s vami bude pracovať ťažko a projekt nevytiahnete sám. Navyše, aj keď sa natiahnete, viete si predstaviť, aká záťaž pre firmu je. A že zajtra prídeš a povieš: "Zvýš mi plat 10x, inak od teba odídem." Je pochopiteľné, že firmy sa do tejto situácie nechcú dostať. Výchova k primeranosti a dobrej vôli v sebe je preto rovnako dôležitá (aspoň) ako rozvoj akýchsi odborných zručností.

Aby som to zhrnul, čo poviete? Ktoré jazyky sú dobré a ktoré zlé? V rámci skupiny jazykov, napríklad medzi Ruby, Pythonom a PHP, ktorý z nich si vybrať? Samozrejme, správna odpoveď je Python, ale v skutočnosti je rozdiel medzi nimi v počte povolených chýb, v množstve niečoho iného - 5%, dobre, možno 10%. To znamená, že ak už máte hotový projekt napísaný v PHP, tak nikto so zdravým rozumom nepovie: "Prepíšme všetko v Pythone." Povedia: "Najmeme viac vývojárov PHP a budeme pokračovať v písaní v PHP." Super, to nie je zlá voľba. Je jasné, že ak zrazu začnete písať projekt, potom môže byť rozumné vybrať si Python hneď. Aj keď, to tiež závisí. Možno máte na trhu kopu lacných PHP vývojárov, ale Pythonovci sú drahí a vy si myslíte: "Áno, technológia je chladnejšia, ale ušetrím peniaze na hotových vývojároch." A to je všetko, skvelé, už tam chodíte a pracujete.
Ako si môžem vybrať medzi Java a C ++? Áno, deje sa to isté. Myslím si, že kým sa rozhodnete, v akom jazyku začať nový veľký projekt, získate znalosti vo svojej profesijnej oblasti a budete si vedieť správne vybrať. Práve teraz si túto voľbu ešte nemusíte robiť, a preto vám radím, aby ste robili to, čo sa vám páči.

Základy, ako som už povedal, úplne, úplne základy programovania (čo je funkcia, čo sú ak, pre, polia, niečo iné) sa dá naučiť viac-menej v akomkoľvek jazyku. Napríklad v C ++, pretože to vyzerá ako veľa vecí a špecifiká v ňom (na tejto úrovni) je najmenej a písmen je najmenej zbytočných. No, potom, keď sa naučíte nejaké zložité architektonické veci, učte sa a starajte sa o to príliš veľa. Teda hlavné - skúšaj, hľadaj, čo sa ti páči, a keď si uvedomíš, že sú už 4 hodiny ráno a ty sedíš a píšeš pre zábavu, lebo sa ti to páči, asi je to v tomto moment, keď si našiel svoju...