Čo je kódovanie. Ako a kde sa naučiť kódovať? Ako si vybrať smer a jazyk

A vysvetlím prečo.

Pred pätnástimi rokmi som dostal radu, aby som sa stal programátorom, pretože som bol introvert a hanblivý človek, mal som aj analytické myslenie a úplne mi chýbal spoločenský život, ale takých poradcov som sa len zasmial a prepustil. Potom som bol tínedžer a v mojej tínedžerskej mysli programátor vždy býval v pivnici domu mojich rodičov, bol uhrovitý a nosil škaredé okuliare, nikdy nemal priateľku, no fantázie o princeznej Lei sa vyplatili (a dosť často). Tento spôsob života sa mi nepáčil. Navyše, vtedy som už mal priateľku, a celkom krásnu.

Rýchly posun o šesť rokov dopredu: Sedím na letisku v Budapešti a čítam knihu o HTML ...

O šesť rokov neskôr ma zamestnala jedna severoírska začínajúca spoločnosť ako generalistu. Áno, zdá sa, že to chvíľu trvalo. Ale koľko presne? neviem presne povedat. Ale veľa. Bájnych 10 tisíc hodín? nie Ak by som bol požiadaný, aby som uviedol približné číslo, povedal by som, že do toho dňa som mal „zakódovaných“ asi 8 tisíc hodín. Technicky povedané, ak by sa malo veriť pravidlu 10 000 hodín, potom by som sa za 2 000 stal odborníkom v tejto oblasti.

Ale budem?

Toto sa mi podarilo dosiahnuť za 8 tisíc hodín. Urobte si pohodlie, pretože môj príbeh bude dlhý. Kódoval som v nasledujúcich jazykoch: C, HTML, CSS, JavaScript, Java (Android), Swift, PHP, Ruby, Python, Chuck, SQL, pracoval som s nasledujúcimi frameworkami: Node, Angular, Bootstrap, Foundation, React, Rails , CodeIgniter, Ionic a vytvorila vstupné stránky, stránky Wordpress, riešenia elektronického obchodu, eLearningový obsah, stránky Moodle a Totara, stránky Mahara, balíčky Common Cartridge a SCORM, aplikácie pre Android a iOS, hybridné aplikácie, interné webové aplikácie, elektronické knihy, časopisy , hry a ďalšie aplikácie pre stolové hry. Kam teda smerujem?

Chcem povedať, že odbor ako taký neexistuje, takže úloha stať sa v ňom odborníkom je nesplniteľná. Kódovanie nie je oblasť. Informatika – áno, ale je to úplne iné.

Kódovanie je to, k čomu prezidenti, učitelia a rodičia tlačia mladú generáciu, akoby viedli ovce do zlatých polí príležitostí.

Tento sľub je sen, propaganda tak dobre vytvorená a vyjadrená (teraz už nie je vyjadrená slovami), že bola absurdne zjednodušená do obrázkov, aby roztomilé lezúce batoľatá pochopili, že logické myslenie je dôležitejšie ako túžba nasýtiť sa (prosím pozor na sarkazmus)...

O 15 rokov neskôr sa kódovanie stalo popkultúrnou verziou programovania a teraz obyvateľstvo vkladá veľké nádeje do budúcej armády kódovačov, vďaka ktorým budeme mať domy riadené AI, dopravu, maloobchod, zábavu a revolúciu v medicíne. , priemysel a sex - proste blázinec, iné slovo neexistuje. A to všetko preto programovanie je vystavené na kódovanie a teoreticky je ľahké sa ho naučiť... Ale toto je tak ďaleko od pravdy...

Zdroj: LifeHacker

Poďme na to. Mýtus, že každý sa môže naučiť jeden z programovacích jazykov len za pár hodín, braný ako „fakt“, je pravdivý len do určitého bodu a tento moment prichádza v ranom štádiu učenia. Jazyk sa skutočne dá naučiť za jeden deň. Vo všeobecnosti, ak si stanovíte cieľ stať sa polyglotom v programovaní za mesiac, pri práci môžete ovládať 8 až 10 jazykov, ak študujete cez víkendy. Ale tu je ten háčik. Každý programovací jazyk má svoje knižnice, aj syntaktické funkcie a to všetko sa nedá naučiť ľahko, rýchlo ani cez víkend. V skutočnosti v reálnom svete nebude programovací jazyk hlavným problémom.

To, že hovoríte po anglicky, ešte neznamená, že viete písať romány alebo dokonca poviedky. To isté možno povedať o kódovaní.

To, že ste sa naučili jazyk, neznamená, že viete napísať program. Pridajte k tomu nespočetné množstvo rámcov, zásuvných modulov, knižníc, preprocesorov, postprocesorov, kódovacích štandardov, priemyselných štandardov, testami riadený vývoj (TDD), behaviorálny vývoj (BDD), systémy na správu obsahu, vytváranie verzií súborov, nepretržitú integráciu (CI), vydanie manažment a nasadenie, ladenie, označovanie lístkov, vodopádové modely - a scrumové metódy a ich kombinácie, a nie som si istý, čo ešte pomenovať. Pointa je, že pojem „kódovač“ pokrýva takmer všetko uvedené vyššie. Programovanie ovplyvňuje len malú časť. Dôležité, ale stále malé.

Programovanie sa však naďalej zjednodušuje ...

Apple spustil Playgrounds, MIT spustil Scratch a Lego pripravuje Boost a každý sa snaží predať kódovanie stále mladšej a mladšej generácii, ako keby chcel v roku 2020 obsadiť miesta nových programátorov.

Vidím to takto: "Nestaraj sa o kód, vezmi si tieto virtuálne dieliky puzzle a je to, môžeš programovať." Ak by to bola pravda. Tu je to, čo potrebujete vedieť o programovaní: je založené na texte. Vždy to tak bolo a ešte dlhé roky bude. Deti, ktoré hrajú Lego Boost, Playgrounds alebo Scratch, sa do veku 22 rokov nestanú skúsenejšími programátormi ako tí, ktorí začali programovať v 16 a pracovali so skutočným programovacím jazykom. Odkiaľ vlastne pochádzajú takéto očakávania? Nemyslím si, že moje dieťa sa naučí zarábať si na chlieb až vo veku 22 rokov. Ale ak študuje kódovanie 6 rokov, tak garantujem, že si rýchlo nájde prácu.

Ihriská od Apple.

Kódovanie môže byť najťažšou súčasťou procesu vývoja softvéru. Ak nemáte všetko zorganizované od začiatku (najmä pri veľkých projektoch), kódovanie a ladenie po ňom bude nielen trvať veľmi dlho, ale prinesie to aj veľa bolesti hlavy.

Dobrý kód je dobre udržiavaný, opakovane použiteľný a testovateľný. Nasledujúce kroky vám a/alebo vášmu vývojovému tímu ukážu, ako zvládnuť rôzne programovacie úlohy a udržať všetko čo najlepšie. Predstavím vám „najlepšie postupy“, ktoré vám pomôžu napísať dobrý kód a pomôžu vám a vášmu tímu byť šťastnými a efektívnymi.

1. Používajte štandardy kódovania

Je ľahké napísať zlý, neusporiadaný kód, ale je ťažké ho udržiavať. Dobrý kód zvyčajne zachováva nejaký štandard pre pomenovanie premenných, formátovanie a ďalšie. Takéto normy sú užitočné, pretože podmieňujú veci tým, ktorí si kód prečítajú neskôr, vrátane vás.

Môžete si vytvoriť vlastné kódovacie štandardy, ale je lepšie použiť jeden široko používaný. Použitím Zend Framework Coding Standard alebo PSR-1 Coding Style bude pre ostatných jednoduchšie prispôsobiť sa.

2. Používajte komentáre

Komentáre sú kriticky potrebné. Nenaučíte sa ich oceniť, kým nenapíšete tisícriadkový kód, necháte ho pár dní a potom sa vrátite a pokúsite sa na to prísť. Užitočné komentáre uľahčujú život tým, ktorí budú s kódom pracovať po vás.

Napíšte jasné, jednoriadkové komentáre k nezrozumiteľným častiam kódu; napísať úplný popis parametrov a funkčnosti funkcií a metód; pre zložité logické bloky podľa potreby opíšte logiku pred nimi. Nezabudnite aktualizovať svoje komentáre!

3. Refaktor

Refaktorovanie kódu je tiež dobrým zvykom produktívnych vývojárov. Verte alebo nie, svoj kód musíte refaktorovať každý deň, inak s ním niečo nie je v poriadku! Refaktorovanie udržuje váš kód v dobrom stave, ale čo by ste mali refaktorovať a ako?

Mali by ste prehodnotiť všetko od architektúry po metódy a funkcie, názvy premenných, počet argumentov odovzdaných metóde a podobne.

Refaktoring je skôr umenie ako veda, ale existuje niekoľko dobrých pravidiel, ktoré to môžu objasniť:

  • Ak je vaša funkcia alebo metóda dlhšia ako 20-25 riadkov, s najväčšou pravdepodobnosťou je tam príliš veľa logiky a môžete ju rozdeliť na dve alebo viac menších funkcií / metód.
  • Ak je názov vašej funkcie alebo metódy dlhší ako 20 znakov, oplatí sa názov upraviť, prípadne celú funkciu/metódu upraviť pomocou prvého pravidla.
  • Ak máte veľa vnorených slučiek, používate príliš veľa zdrojov bez toho, aby ste si to uvedomovali. Vo všeobecnosti by ste mali prehodnotiť svoju logiku, ak ste vnorili viac ako dve slučky. Tri vnorené slučky sú jednoducho hrozné!
  • Zvážte, či existujú nejaké vhodné dizajnové vzory, ktoré môžete použiť. Vzory by ste nemali používať len kvôli použitiu vzorov, ale vzory ponúkajú overené riešenia, ktoré môžu byť vhodné.

4. Vyhnite sa globálnemu kódu

Globalizácie a slučky môžu spôsobiť problémy, keď sa váš kód rozrastie na milióny riadkov. Ovplyvňujú kód na miestach, kde je ťažko viditeľný, alebo spôsobujú problémy s názvami premenných, objektov a iných vecí. Dvakrát si premyslite, ako znečistíte globálny menný priestor premennými, funkciami, slučkami a ďalšími.

V ideálnom prípade by ste nemali globálne definovať žiadne bloky. V rámci metódy alebo funkcie musia byť popísané príkazy Switch, try-catch, foreach, while a podobne. Metódy musia byť opísané vo vnútri tried a triedy a funkcie vo vnútri menných priestorov.

5. Používajte zmysluplné názvy

Nikdy nepoužívajte pre svoje premenné názvy ako $ k, $ m a $ test. Ako je možné čítať takýto kód v budúcnosti? V dobrom kóde názvy premenných, metód / funkcií, tried; by mal niesť sémantickú záťaž. Niektoré dobré názvy premenných sú $ request, $ dbResult a $ tempFile (závisí od vášho štýlu kódovania).

6. Používajte zmysluplné štruktúry

Štruktúrovanie vašej aplikácie je dôležité; nepoužívajte zložité štruktúry, vždy to majte jednoduché. Pri pomenovaní adresárov a súborov použite konvenciu pomenovania, na ktorej ste sa dohodli s tímom, alebo ktorá sa riadi štandardmi kódovania. Vždy oddeľte štyri časti PHP aplikácie od seba – CSS, HTML šablóny, JavaScript, PHP kód – a pre každú sa snažte oddeliť knižnice od obchodnej logiky. Tiež je dobré ponechať čo najmenšiu hierarchiu adresárov, takže bude pre vás jednoduchšie hľadať časti kódu a orientovať sa v štruktúre.

7. Používajte systémy na správu verzií

V minulosti CVS dôverovali dobré vývojárske tímy. Teraz máme k dispozícii rôzne riešenia. Správa zmien a revízií by mala byť jednoduchá, ale efektívna, preto si vyberte ten, ktorý systém správy verzií najlepšie vyhovuje vášmu vývojovému tímu. Radšej používam distribuovaný systém na správu verzií ako Git alebo Mercurial; bezplatný / open source a veľmi výkonný. Ak neviete, čo je to kontrola verzií, odporúčam vám pozrieť si sériu Úvod do Git od Seana Gudgstona.

8. Používajte nástroje na automatické zostavovanie

9. Používajte dokumentátory kódu

Pre veľké aplikácie zahŕňajúce viacero tried a menných priestorov by ste mali mať automaticky vygenerovanú dokumentáciu API. Je to veľmi užitočné a každý v tíme bude vedieť, čo je čo. A ak pracujete na viacerých projektoch súčasne, táto dokumentácia bude pre vás požehnaním, pretože pravdepodobne zabudnete na zvláštnosti štruktúry a iné rozdiely medzi projektmi. Jedným z takýchto dokumentov, ktoré by ste mohli zvážiť, je DocBlox.

10. Použite Testovanie

Existuje veľa nástrojov, ktoré si naozaj cením, ale jeden, ktorý jednoznačne oceňujem, sú rámce, ktoré pomáhajú automatizovať proces testovania. Testovanie (konkrétne systematické testovanie) je nevyhnutné pre každú časť vašej miliónovej aplikácie. Dobré testovacie nástroje sú PHPUnit a SimpleTest na testovanie jednotiek PHP tried. Na testovanie GUI odporúčam nástroje SeleniumHQ.

Výsledok

V tomto článku ste videli prehľad najlepších postupov na písanie lepšieho kódu, od používania štandardov kódovania až po formátovanie ako celý tím, dôležitosť refaktoringu a jeho zvládnutie pomocou profesionálnych nástrojov, ako je testovací rámec, dokumentátor kódu a kontrola verzií na pomoc pri správe kódovej základne. Ak ste tieto kroky doteraz nesledovali, mali by ste na ich vykonanie vycvičiť seba a svoj tím.

Väčšina vývojárov slobodného softvéru pracuje na Linuxe alebo Macu, ale podpora pre Windows sa zvyčajne implementuje na báze zvyšku. Funguje to - no, nefunguje - nech portuje ten, kto to potrebuje. V tomto článku vám ukážem, ako vytvoriť natívne spustiteľné súbory Windows bez toho, aby ste mali tento systém po ruke.

Najnovšie vydanie Pythonu 2.7 bolo ohlásené tento rok, po ktorom Python Software Foundation už nebude podporovať vetvu 2.7. Mnoho populárnych knižníc a frameworkov tiež opúšťa oficiálnu podporu pre Python 2 a množstvo distribúcií Linuxu ho už neobsahuje vo svojom predvolenom balíku.

Pravdepodobne ste už viac ako raz použili služby virustotal.com, aby ste skontrolovali, či binárne súbory neobsahujú škodlivé funkcie, alebo aby ste otestovali svoj vlastný vývoj. Táto služba má bezplatné API, o ktorom budeme diskutovať v Pythone v tomto článku.

Akákoľvek možnosť neviditeľného prístupu k vonkajšiemu svetu z hostiteľa v rámci zabezpečenej siete je pre penetračného testera cenným nálezom. Jednou z posledných dostupných ciest je NTP, protokol synchronizácie hodín. Jeho prevádzka je povolená takmer všade, takže bude výborným transportom pre dáta. Ukážem vám, ako implementovať základného klienta a servera v C #.

Pravdepodobne ste už počuli, že neurónové siete sa v poslednej dobe stali sakramentsky dobrými v rozpoznávaní objektov na obrázkoch. Našou úlohou je naučiť sa používať tieto neurónové siete, pretože ich sila môže byť užitočná v rôznych prípadoch. V tomto článku vám ukážem, ako ho používať pomocou najbežnejších nástrojov: Python a knižníc Tensorflow a Keras.

Možno ste sa už stretli s hlasovou identifikáciou. Používa sa v bankách na identifikáciu telefónu, na overenie identity na kontrolných bodoch av domácich hlasových asistentoch, ktorí dokážu rozpoznať majiteľa. Viete ako to funguje? Rozhodol som sa ísť do detailov a spraviť si vlastnú realizáciu.

Predtým bola captcha s číslami skvelým spôsobom, ako odstrániť roboty, ale teraz sa tento druh takmer nikdy nenachádza. Myslím, že sami tušíte, o čo ide: neurónové siete sa naučili rozpoznávať takéto captchas lepšie ako my. V tomto článku sa pozrieme na to, ako funguje neurónová sieť a ako pomocou Keras a Tensorflow implementovať rozpoznávanie číslic.

Pred dvoma rokmi vývojári streamovacej platformy Twitch predstavili nový spôsob interakcie medzi streamermi a divákmi – Twitch Extensions. Tento systém umožňuje vývojárom dopĺňať a vylepšovať rozhranie stránky aj mobilnej aplikácie vytváraním rôznych interaktívnych prvkov. Ukážem vám, ako tieto rozšírenia fungujú a ako si môžete v prípade potreby vytvoriť vlastné.

Bankové trójske kone spôsobujú každoročne miliónové škody. Virmakeri sa snažia všetko, čo súvisí s vnútornou kuchyňou bankárov, držať v najhlbšom utajení. Nemohli sme si preto nechať ujsť unikátnu udalosť – dostať na verejnosť zdrojový kód bankového trójskeho koňa Carbanak – a začali sme skúmať jeho štruktúru zvnútra.

Julia je mladý programovací jazyk určený predovšetkým pre vedecké výpočty. Jeho tvorcovia chceli, aby zaplnil medzeru, ktorú predtým zaberal Matlab, jeho klony a R. Tvorcovia sa pokúsili vyriešiť takzvaný problém dvoch jazykov: spojiť pohodlie R a Pythonu a výkon C. Pozrime sa, čo urobili .

Forth sa používa v rôznych oblastiach vrátane čipsetov PCI a kozmických lodí a Pavel Durov použije podobný jazyk v inteligentných kontraktoch kryptomeny TON. Jeden z najstarších programovacích jazykov bez toho, aby prešiel veľkými zmenami, umožňuje stelesniť mnoho moderných paradigiem. Takže čo presne je tento záhadný Forth?

Režim gama, na rozdiel od režimu jednoduchého nahradzovania, umožňuje šifrovanie správ ľubovoľnej dĺžky bez použitia operácie padding. Dnes si povieme, ako sa takýto režim implementuje a napíšeme si všetky funkcie potrebné na jeho implementáciu.

Keď je počet riadkov kódu vo vašich programoch v miliónoch, hľadanie chýb bude tisíckrát ťažšie. Našťastie je dnes možné automatizovať testovanie pomocou fuzzerov. Ako fungujú, prečo by sa mali používať a čoho všetkého sú schopné - o tom sa dozviete v dnešnom článku.

Abstrakcia je základom programovania. Používame veľa vecí bez toho, aby sme premýšľali o ich vnútornostiach a fungujú skvele. Každý vie, že používateľské programy interagujú s jadrom prostredníctvom systémových volaní, ale zamysleli ste sa niekedy nad tým, ako sa to deje na vašom počítači?

Hackeri vyvíjajú cheaty, hráči ich kupujú, spoločnosti si najímajú inžinierov na vývoj novej obrany. Hackeri opäť nájdu medzeru a kruh je hotový. V tomto článku sa pozrieme na to, ako fungujú rôzne obranné metódy (a či fungujú!) A pokúsime sa vytvoriť vlastný systém ochrany proti podvádzaniu.

V Linuxe, ako viete, je veľa vecí implementovaných ako súbory v súborovom systéme. A ak nie sú implementované, môžete ich implementovať sami pomocou FUSE. V systéme Windows je to menej akceptované, ale ak stále naozaj chcete niečo pripojiť ako súborový systém, je to možné. Ukážem vám, ako to dosiahnuť pomocou jazyka C # a knižnice Dokan.

Najatraktívnejším cieľom pre útočníka je online bankovníctvo a botnety zohrávajú rozhodujúcu úlohu v úspechu vírusových útokov proti nemu. Aby však útočník z údajov zachytených s ich pomocou získal cenné informácie, musí tvrdo pracovať. Dnes vám poviem, ako sťažiť život botom a ochrániť vašu aplikáciu pred útokmi.

Na počítačových hrách je skvelé to, že odmenou za úspech je skutočné potešenie a cena neúspechu je nízka. Ale niekedy, aby ste odomkli nové schopnosti alebo len urýchlili hru, sa uchýlite k nie najúprimnejším metódam. A ak nemôžete zmeniť pravidlá sveta, môžete sa ich pokúsiť ohnúť. Áno, je to tak, budeme sa baviť o cheatoch.

Bojové keyloggery s množstvom funkcií a ochranou proti detekcii môžu stáť desiatky, ak nie stovky dolárov. Keylogger však nie je až taká zložitá vec a ak chcete, môžete si vytvoriť svoj vlastný a dokonca sa vyhnúť detekcii antivírusmi. V tomto článku vám ukážem, ako na to, a zároveň si precvičíme vývoj programov v C #.

V C ++ existuje niečo ako dynamická identifikácia typu údajov (RTTI). Je to mechanizmus, ktorý vám umožňuje určiť typ premennej alebo objektu za behu. Aby bol spustiteľný súbor menší, RTTI je v mnohých projektoch vypnuté, čo spôsobí, že dynamic_cast a typeid prestanú fungovať. Stále však existuje spôsob, ako skontrolovať, či inštancia objektu pochádza z nejakej základnej triedy.

Staticky písané jazyky vás zvyčajne nútia písať typy premenných z akéhokoľvek dôvodu. Ale to nie je vždy prípad: teória a prax programovacích jazykov výrazne pokročili, len tieto úspechy nie sú okamžite akceptované v priemysle. Dnes sa pozrieme na jazyk OCaml a uvidíme, že statické písanie nie je nevyhnutne nepohodlné.

Existuje mnoho bezpečnostných riešení, ktoré definujú prácu v sandboxových prostrediach, pracujú s technikami proti ladeniu, monitorujú integritu svojho kódu a dynamicky šifrujú svoje údaje v pamäti pred výpisom. Ďalšou silnou bezpečnostnou technikou je virtualizácia kódu. V tomto článku vám ukážem, ako to funguje.

Najlepšie je naučiť sa jazyk na skutočnom projekte, takže keď som sa rozhodol experimentovať s peklom, dal som si skutočnú a zaujímavú úlohu: napísať utilitu na detekciu práce v hypervízore. Už to samo o sebe je zábavné a nový programovací jazyk posunie zábavu na ďalšiu úroveň.

S rôznymi protokolmi ste sa v živote stretli viackrát – niektoré ste použili, iné možno naopak. Niektoré boli ľahko čitateľné, iné sa bez hex editora nedali zistiť. V tomto článku vám ukážem, ako vytvoriť svoj vlastný protokol, ktorý bude fungovať nad protokolom TCP / IP. Vyvinieme vlastnú dátovú štruktúru a implementujeme server v C #.

Ak píšete v Pythone, pravdepodobne ste v štandardných knižniciach videli definície metód zabalené do dvojitého podčiarknutia. Tieto „magické“ metódy tvoria mnohé z užitočných rozhraní, ktoré neustále používate – napríklad keď získate hodnotu podľa čísla prvku alebo niečo vytlačíte. Teraz vám ukážem, ako tieto metódy použiť aj vo vašich programoch.

Pri písaní softvéru, ktorý interaguje s inými aplikáciami, je niekedy potrebné ukončiť vykonávanie procesov tretích strán. Existuje niekoľko metód, ktoré môžu v tejto veci pomôcť: niektoré sú dobre zdokumentované, iné sa pokúšajú dokončiť potrebné procesy prísnejším spôsobom, čím vyprovokujú operačný systém, aby ich zabil silou. Ukážem vám niekoľko spôsobov, ako ukončiť a zničiť procesy v systéme Windows.

Jazyk, vyvinutý na príkaz ministerstva obrany USA a pomenovaný po prvej programátorke na svete Ade Lovelace, sa aktívne používa na ovládanie lietadiel, vlakov, kozmických lodí a iných zaujímavostí. Pozrime sa na jazyk bez prizmy mýtov a uvidíme, ako z neho môžeme ťažiť, aj keď sa do vesmíru ešte nechystáme.

Pravdepodobne ste sa už stretli s emulátormi herných konzol a možno ste pri nich sedeli dlhšie ako jednu hodinu. Zamysleli ste sa však niekedy nad tým, ako to funguje? Na príklade NES, v Rusku známeho ako Dendy, vám ukážem, ako si vytvoriť vlastný emulátor. A zároveň sa budeme zaoberať prefíkanou architektúrou tejto konzoly, ktorá vyprodukovala na svoju dobu a skromnú cenu úžasne dobrý obraz.

Pravdepodobne ste už počuli o takej triede škodlivých aplikácií, ako sú krádeže. Ich úlohou je vytiahnuť zo systému obete cenné údaje, predovšetkým heslá. V tomto článku presne vysvetlím, ako to robia, na príklade extrakcie hesiel z prehliadačov Chrome a Firefox a ukážem príklady kódu C ++.

Otázky v rozhovore ako "prečo je kryt šachty okrúhly?" - to je zvláštne. Listy C kódu, ktoré si musíte zostaviť v hlave, sú nudné. Najzaujímavejšie úlohy sú na všeobecné technické a logické myslenie. A práve takých nám dnes súdruhovia z firmy Abbyy hodili!

Schopnosť programovať je jednou z najcennejších zručností v modernom svete. A prakticky nezáleží na tom, čo konkrétne vedie človeka k vytvoreniu kódu: úprimný záujem, finančné alebo kariérne úvahy - tí, ktorí vedia programovať, nezostanú nečinní. Kódovanie je veľmi podobné komunikácii v cudzom jazyku, takže v počiatočných fázach učenia sa programovania to majú začiatočníci často ťažké. Zároveň mnohí zažívajú vážne nepohodlie, ale časom sa všetko zlepší a človek začne ľahko kódovať, bez silných duševných nákladov. Dnes nájdete veľa kníh a online zdrojov, s ktorými sa môžete naučiť kódovať, ale každé samoštúdium je spojené so stresom a negatívnymi emóciami – na to treba pamätať vždy, keď začínate ovládať programovací jazyk. Najdôležitejšou vecou pre začínajúceho programátora je nevzdať sa učenia sa jazyka na polceste a stratiť všetok záujem o toto povolanie. Čo by mal teda budúci programátor vedieť? Aké ťažkosti ho čakajú na ceste k osvojeniu si užitočných zručností?

Programovacie jazyky

Najprv sa musíte rozhodnúť pre programovací jazyk, ktorý sa chce začiatočník naučiť. Nie je to také ľahké - existuje veľa jazykov a každý z nich je dobrý svojím vlastným spôsobom. Je veľmi dôležité vyberať si jazyk vedome – veď do jeho rozvoja sa investuje veľa času a úsilia. Ale nech je to akokoľvek, začínajúci programátor potrebuje vedieť, že neexistujú dobré alebo zlé programovacie jazyky, ale existujú jazyky, ktoré sú priateľské k nováčikom. Preto čím je programovací jazyk jednoduchší a zrozumiteľnejší, tým lepšie – na začiatku cesty je lepšie prejsť od úspechu k úspechu, od jednoduchých úloh k zložitejším. Ďalej to bude jednoduchšie, keď sa začiatočník naučí kódovať vo svojom prvom programovacom jazyku, ďalšie jazyky mu budú poskytnuté oveľa jednoduchšie.

Je tiež veľmi dôležité okamžite určiť, na čo potrebujete vedieť jazyk. Pretože kódovanie je veľmi odlišné. Ak sa chce niekto stať softvérovým vývojárom, tak sa môže poobzerať po Jave a v prípade tvorby aplikácií pre iOS je lepší jazyk Swift.

Vhodná vyučovacia metóda

Spôsobov, ako sa učiť, je veľa, preto si v prípade programovacích jazykov treba nájsť vhodnú metodiku. Zároveň bude rozumné zvoliť si hlavnú metódu a doplniť ju o vedľajšie vyučovacie metódy. Všetko je tu veľmi individuálne: ak je začiatočník vizuálny alebo dobre rozumie informáciám podľa ucha, potom sa môže naučiť programovať sledovaním videí na YouTube a získať ďalšie znalosti z kníh. Tu je niekoľko jednoduchých, ale účinných tutoriálov:

Online kurzy kódovania. Niektorí ľudia pracujú efektívnejšie, keď im niekto povie, čo majú robiť, a nechajú si ich výkon pravidelne kontrolovať. A takých ľudí je veľa. Ak má teda začiatočník pocit, že má problémy so sebadisciplínou, tak by si mal zvoliť kurz, kde ho budú neustále motivovať previerky. Je to dobrý nápad – toľko ľudí sa prestáva učiť programovanie, spoliehajúc sa na svoju vôľu a nadšenie. Naučiť sa kódovať sami nie je pre každého, na to by ste mali vždy pamätať.

YouTube video. Dnes sa o všetkom môžete dozvedieť všetko len sledovaním videí na YouTube. Skúsenejší kóderi vám presne ukážu, čo máte robiť, takže tieto materiály sú veľmi užitočné. Je to jednoduchý, efektívny a hlavne bezplatný spôsob, ako sa naučiť kódovať. Ak máte prístup na internet, môžete sedieť, pozerať, opakovať aspoň celý deň, kým sa nevyjasní.

knihy... Toto je dnes trochu staromódny spôsob učenia sa programovacích jazykov, no faktom zostáva, že v priebehu rokov sa kódovanie príliš nezmenilo a to, čo sa hovorí na YouTube, sa príliš nelíši od toho, čo sa hovorí v papierová kniha. Ale knihy majú nepopierateľnú hodnotu – uľahčujú pochopenie logiky jazyka, a to je nesmierne dôležité. V prvom rade preto, že pri praktickej výučbe sa nikomu nechce robiť to, čo je nepochopiteľné alebo nemožné. Aby ste všetko nevzdali na polceste, je nevyhnutné čítať knihy o programovaní.

Cvičte. Mnohí z najlepších programátorov sú samouci. Veľmi často začali kódovať nepozorovane pre seba, keďže ich tréning bol náhodný. Stáli pred problémom, vyriešili ho, čelili ďalšiemu – a tiež ho vyriešili. Postupne takíto samoukovia prechádzajú od jedného problému k druhému, zložitejšiemu a zároveň ovládajúcemu kódovanie. Nestojí za to napodobňovať takýchto ľudí, ale prax by sa nemala opustiť - je kľúčom k úspechu v učení.

Oprava úspechu

Začiatočník, ktorý sa práve začína učiť programovací jazyk, musí vedieť a byť pripravený na to, že je to na dlho. Naučiť sa kódovať je zdĺhavý proces, v ktorom je oveľa viac cítiť zlyhanie ako úspech. Aby ste neopustili školu, je nevyhnutné zaznamenať všetky vaše činy. Ľudia veľmi často strácajú motiváciu len preto, že necítia pokrok. A určite ním bude, ak sa začiatočník bude pilne venovať. Len tie zručnosti nebadateľne rastú, začínajúci kodér si to možno ani nevšimne, takýmito malými krôčikmi sa posúva k zamýšľanému cieľu.

To je dôvod, prečo si musíte z času na čas pripomenúť, ako ďaleko ste zašli, a častejšie sa obzerať späť. Veľmi to pomáha – koniec koncov, pri pohľade na prvé riadky kódu každý pochopí, že napredujú. Všetky tieto osobné rekordy sa môžu zdať zábavné. Nie, v skutočnosti je zaznamenávanie úspechu veľmi dôležité – je to vysoko motivujúce počas celého vzdelávacieho procesu. Preto, aby ste mohli začať a nie skončiť, je nevyhnutné označiť každú prejdenú fázu.

Jasné podmienky školenia

Pokiaľ ide o kódovanie, mnohí začiatočníci robia bežnú chybu – pokúšajú sa urobiť veľa úloh naraz a zvyčajne ich všetky vzdajú pred dokončením. Zaujme ich niečo iné, najčastejšie iné úlohy, a tak skáču z jedného projektu do druhého. Nerob to. Najlepšie je postupovať systematicky – vyriešiť jeden problém alebo pochopiť príklad, kým nebude všetko jasné. Je to veľmi jednoduchý princíp: jedna vec naraz.

Zároveň však musíte pochopiť, že napredovanie je nevyhnutné, takže si musíte stanoviť prísne termíny na štúdium jedného alebo druhého aspektu jazyka. Môžete si skúsiť predstaviť, že čoskoro bude skúška a budete musieť ukázať všetko, čo by ste mohli dosiahnuť. Toto je motivujúce. Áno, všetky tieto osobné záležitosti nemusia byť veľmi pohodlné, ale samotné kódovanie nie je zábavné. Prísna disciplína vám umožní získať potrebné zručnosti a dodržanie termínu je pre programátora na voľnej nohe takmer najdôležitejšou zručnosťou.

Kým bežní používatelia sa boja urobiť chybu a nenávidia, keď sa niečo pokazí, programátor je v úplne inej pozícii. Chyby sú súčasťou jeho práce, a to veľmi veľkou časťou. Začínajúci programátor by sa preto mal naučiť čítať chybové správy, bez ohľadu na to, aké frustrujúce to môže byť. Tieto správy obsahujú veľa cenných informácií, pretože vám povedia, čo presne sa v procese vytvárania kódu vynechalo. Musíte sa pripraviť na to, že takéto hlásenia sa budú objavovať veľmi často a nikam neodídu ani po ukončení štúdia programovacieho jazyka. Nemôžete šetriť čas prácou na chybách - to je najdôležitejšia časť učenia. Navyše je to dobrá prax – keď pochopíte problém, neskôr bude jednoduchšie vyhnúť sa mnohým chybám. Hlásenie chýb nie je trest, v skutočnosti sú to najlepší priatelia kódera, ktorí ho chcú naučiť, ako robiť všetko správne.

Komunikácia s ostatnými programátormi

Takáto komunikácia tiež pomôže pochopiť, že aj ostatní ľudia sa rovnako často stretávajú s problémami s kódovaním a nie je to nič neobvyklé. A ak navyše začiatočník môže pomôcť svojmu kamarátovi programátorovi, bude mať druhý dych a bude pokračovať v učení s vervou. A netreba sa báť ani komunikácie – programátori sú vlastne priateľskí ľudia, len sú často na vlastnej vlne a začiatočníkovi stačí dostať sa do rezonancie.

Správny a nesprávny prístup

Začínajúci kóderi sa často pokúšajú skopírovať časti kódu z iných projektov, čím vyriešia akýkoľvek zo svojich problémov. Myslia si, že je to rozumné, pretože hlavné je, aby všetko fungovalo. Toto je nesprávny, navyše veľmi škodlivý prístup. A nie preto, že kopírovanie je zlé, ale preto, že pri kopírovaní začiatočník nepochopí, čo presne tento kód robí. Samozrejme, kopírovanie je oveľa jednoduchšie, ako písať všetko sami.

Ale v procese učenia takýto prístup povedie k tomu, že sa vytvoria veľké medzery vo vedomostiach a nováčik sa jedného dňa vzdá a nebude schopný vyriešiť problém, ktorému čelí. A opustí všetko. Keď sa naučíte programovací jazyk, musíte tráviť čas bez výčitiek analýzou akéhokoľvek, dokonca aj na prvý pohľad, problému. A ak nemôžete prísť s riešením hneď, nemôžete sa vzdať. Musíte čítať, pozerať video, pýtať sa ostatných - začiatočník sa musí dôkladne vysporiadať s ťažkosťami, ktoré sa objavili. Hoci sa učí jazyk, nie je to úplne to isté, ako keď sa učí obyčajný, ľudský jazyk. Kóder sa zaoberá strojom, takže je dôležité, aby rozumel tomu, čo robí. Takáto znalosť jazyka je jednoducho neoceniteľná, keď sa vzdelávací proces dostane do praxe.

Učenie sa programovacích jazykov nie je tá najvzrušujúcejšia vec. Ale všetko sa dá napraviť, ak k veci pristúpite s fikciou. Neexistuje lepší spôsob, ako sa niečo naučiť, ako hraním hier. To platí aj pre kódovanie, keďže jazyk sa rýchlo naučíte len hraním a zároveň zdokonaľovaním svojich zručností. Tu je niekoľko hier, ktoré môže začínajúci programátor vyskúšať.

  • CheckiO je hra, ktorú môžete hrať vo svojom prehliadači a vyžaduje riešenie problémov v jazyku JavaScript alebo Python, aby ste mohli prejsť hrou.
  • CodeMonkey - hlavne pre deti, ale ak ste začiatočník, môžete sa naučiť nejaký kód hraním tejto hry.
  • Codewars nie je skutočná hra, ale skôr spoločné riešenie problémov pre programátorov. Je to skvelý spôsob, ako zvládnuť kódovanie, pretože hra podporuje mnoho jazykov.
  • Code Combat je online platforma, kde sa môžete naučiť kódovať hraním skutočnej hry.

Existuje mnoho ďalších hier, ktoré môžete použiť, v závislosti od toho, ktorá vám najlepšie vyhovuje a od jazyka, ktorý sa učíte. Hra pomôže začiatočníkovi začať myslieť ako programátor, čo je veľmi dôležité hneď na začiatku učenia.

Záver

Niektorí sa naučia kódovať rýchlo, iní pomalšie, ale kódovať sa môže naučiť každý. A nespadnite do rýchlejšieho, ak niečo nevyjde. Svoj cieľ môžete dosiahnuť pomalým pohybom a skutočne každé štúdium je pomalý proces. Ak začiatočník nechce opustiť štúdium kódovania, keď zvládne iba základy, musí si vyvinúť vlastnú stratégiu správania. Musíte pochopiť, že do tréningu sa investuje čas, úsilie a niekedy aj peniaze, takže stačí prejsť z jednej fázy do druhej. A nevzdávajte sa ťažkostí. Áno, programovanie nie je pre každého. Ale každý sa môže naučiť jazyk, naučiť sa kódovať. Stačí sa teda rozhodnúť a vydať sa vlastnou cestou.

1. Nezávisle

Ak máte železnú vôľu a túžite stať sa programátorom, potom môžete dosiahnuť svoj cieľ prostredníctvom sebavzdelávania. Toto nie je najľahšia a najkratšia cesta: vy sami musíte pochopiť informačný chaos a bojovať s prokrastináciou. Ale môžete študovať vo vhodnom čase za relatívne málo peňazí alebo úplne zadarmo.

Najjednoduchšie je začať s interaktívnymi online kurzami. Na webe je množstvo materiálov, ktoré vysvetľujú základy programovania a udávajú smer ďalšieho vývoja. Venujte zvláštnu pozornosť tým kurzom, ktoré učia na príkladoch reálnych projektov, to znamená, že vám krok za krokom povedia, ako vytvoriť konkrétny program alebo webovú stránku.

Platforma pre vývoj webu FreeCodeCamp

Pamätajte, že bez praxe nemôžete robiť nič. Študujte projektovo orientované kurzy a skúste napísať programy a stránky, ktoré sú v nich rozobrané. Vyhľadajte na YouTube prednášky o projektoch, ktoré by ste chceli rozvíjať. Najprv skopírujte prácu iných ľudí a analyzujte ju. Potom sa snažte vzdialiť od originálu, experimentujte, obmieňajte jednotlivé prvky, až kým nevytvoríte niečo jedinečné.

Okrem kurzov a videoprednášok nájdete oficiálnu dokumentáciu dostupnú na jazykových weboch, a. Keď získate základy, vyhľadajte najnovšie tituly osvedčených postupov pre váš programovací jazyk. Tieto knihy obsahujú najlepšie dizajnérske techniky.

Určite si stanovte cieľ vytvoriť svoj projekt a neustále na ňom pracujte.

Pomôže to upevniť získané znalosti a pochopiť, aké informácie vám ešte chýbajú. Vaše schopnosti sa budú rozvíjať spolu s projektom. Keď ho dokončíte, pracujte na novom, zložitejšom.

Ak máte nejaké problémy s procesom učenia alebo vývoja, vždy sa môžete s akoukoľvek otázkou obrátiť na programátorské komunity ako Toaster a Stack Overflow. Pomôžu vám napríklad vyriešiť problém, vybrať dobrý kurz alebo upozorniť na chyby v kóde.


Služba otázok a odpovedí na technologické témy "Hriankovač"

Je vhodné zdokonaľovať zručnosti na špeciálnych stránkach, kde môžete súťažiť s ostatnými programátormi riešením rôznych praktických problémov pomocou kódu. Tieto služby zahŕňajú Codewars, TopCoder a HackerRank.

Ak máte pocit, že váš vývoj stojí na mŕtvom bode, alebo chcete urýchliť učenie, vyskúšajte nasledujúce možnosti.

2. S pomocou mentora

Mentor je osobný mentor, ktorý upozorňuje na chyby, varuje pred nástrahami, pomáha viesť kurz. Užitočné odporúčanie prijaté v správnom čase vám môže ušetriť veľa problémov a ušetriť veľa času. Mentor preto nebude nikoho obťažovať.

Zistite, či poznáte nejakých vývojárov. Možno vám jeden z nich bude chcieť pomôcť. Ak takýchto ľudí nepoznáte, môžete ich vyhľadať v programátorských komunitách. Napríklad na rovnakom "Hriankovači". Len mentorské služby nie sú lacné a nikto nechce tráviť veľa času s cudzími ľuďmi len tak.

3. U učiteľov „živých“ kurzov

Diaľkové a osobné kurzy s inštruktormi, ktorí školia programátorov od nuly, sa v posledných rokoch stali neuveriteľne populárnymi. V rámci tohto formátu musíte veľa pracovať aj sami. Ale budete sa učiť podľa profesionálne pripraveného programu a skutočný človek skontroluje riešenie problémov. Nevýhody kurzov zahŕňajú vysoké náklady na školenia.

Populárne online platformy v ruskom jazyku, ktoré sa zaoberajú systematickým vzdelávaním programátorov: Netology, GeekBrains a Loftschool.

Ak uprednostňujete interné štúdium, môžete vyhľadať vzdelávacie centrá, ktoré vyučujú programovanie vo vašej lokalite. Bohužiaľ, takéto zariadenia sú najčastejšie len vo veľkých mestách. Príkladom je počítačová akadémia „STEP“, ktorá má pobočky vo viacerých krajinách.

4. Na univerzite

Ak vám zostáva veľa času a ste si istý, že svoj život chcete spojiť s programovaním, môžete študovať informatiku na univerzite. Majte však na pamäti, že tradičné vzdelávacie inštitúcie zaostávajú za pokrokom, takže moderné programovacie jazyky a ďalšie technológie budete musieť ovládať sami.

Na druhej strane vám univerzita poskytne základné znalosti z matematiky, algoritmov a ďalších oblastí, ktoré vám pomôžu stať sa kvalitným programátorom. Za roky usilovného štúdia si vypestujete to správne myslenie, vďaka ktorému v profesionálnej oblasti uchopíte všetko za pochodu.

Ako si vybrať smer a jazyk

V IT priemysle existuje niekoľko smerov, z ktorých každý používa svoju vlastnú sadu jazykov. Uveďme hlavné smery v poradí narastajúcej zložitosti:

  1. vývoj webových aplikácií... Populárne jazyky: JavaScript, PHP, Python, Ruby.
  2. Vývoj mobilných zariadení... Populárne jazyky: Java, Swift.
  3. Vývoj hier a programov pre stolné počítače... Populárne jazyky: C ++, C #, C.
  4. Big Data, strojové učenie... Populárne jazyky: Python, R, Scala.

Na čo sa zamerať pri výbere

Pri správnom výbere smeru a najmä jazyka vezmite do úvahy nasledujúce faktory: zložitosť ovládania a množstvo školiacich materiálov na webe, vaše osobné preferencie (čo presne chcete rozvíjať) a dopyt po jazyku na trhu práce.


Graf dopytu po jazykoch na medzinárodnom trhu práce / research.hackerrank.com

Dopyt po jazyku vo vašom regióne sa dá ľahko skontrolovať na stránkach s hľadaním práce. Stačí otvoriť sekciu pre vývojárov softvéru a pozrieť si počet voľných pracovných miest.

Ak sa neviete rozhodnúť

Ak ste zmätení, pozrite sa bližšie na JavaScript – jazyk, v ktorom je napísaný takmer celý web. Mnoho organizácií a programátorov odporúča začiatočníkom, aby si tento jazyk vybrali ako svoj prvý jazyk.

Napríklad Quincy Larson, zakladateľ vzdelávacieho zdroja freeCodeCamp, je JavaScript pre všetkých začiatočníkov. Larson uvádza veľmi jednoduché argumenty:

  1. JavaScript sa dá pomerne ľahko naučiť. A aby ste mohli niečo napísať a spustiť v tomto jazyku, stačí mať editor kódu a prehliadač.
  2. JavaScript je najžiadanejší jazyk na medzinárodnom trhu práce a má veľkú perspektívu. Veľké spoločnosti ako Google, Microsoft a Facebook investujú do ekosystému JavaScript.
  3. JavaScript má veľmi širokú škálu aplikácií: od webových stránok a hier v prehliadači až po mobilné aplikácie.

Navyše sa okolo tohto jazyka vytvorila veľká komunita vývojárov. Vysoký záujem o JavaScript poskytuje obrovské množstvo kurzov, kníh a iného vzdelávacieho obsahu.

Čo by ešte mal vedieť programátor: matematiku a angličtinu?

Každý programátor bude mať prospech z hlbokého porozumenia. Pre veci ako herná grafika alebo veľké dáta je matematická myseľ nevyhnutnosťou. Čo sa však týka vývoja webu a tvorby jednoduchých programov, vo väčšine prípadov si vystačíte s matematikou. Aj keď medzi odborníkmi v tejto veci neexistuje zhoda.

Ale rozumieť angličtine, aspoň na úrovni plynulého čítania dokumentácie, je povinnosťou pre všetkých programátorov. Oficiálne dokumenty a väčšina vzdelávacích materiálov sa objavuje predovšetkým v angličtine. sú často zastarané ešte pred vydaním prekladu. Znalosť angličtiny navyše otvára perspektívy pre spoluprácu s celým svetom.

Ako získať prvé skúsenosti a prvé zamestnanie

Ak chcete nájsť svoju prvú prácu programátora, musíte mať portfólio. Toto je projekt, ktorý ste vytvorili, alebo skôr niekoľko, ktoré demonštrujú všetky vaše vývojárske schopnosti. Väčšina kurzov zahŕňa vývoj projektov, ktoré sa zmestia do vášho portfólia.

Pracovné skúsenosti, najmä rozvoj tímu, budú veľmi cennou položkou v životopise. Kde ho však môžete získať, ak hľadáte svoju prvú prácu?

  1. Vyplňte viacero objednávok pre. Môže to byť Freelance alebo Upwork. Ponúknite svoje služby zadarmo, potom za vami prídu prví zákazníci.
  2. Nájdite rovnako zmýšľajúcich ľudí a vytvorte s nimi spoločný projekt. Ľudia sa na takéto účely spájajú takmer na každej vzdelávacej stránke, kde sú kurzy programovania.
  3. Vyberte kurzy, ktorým organizátor pomáha so zamestnaním. Napríklad v GeekBrains sa po školení otvára prístup k stážam od rôznych spoločností, vrátane platených. GeekUniversity a STEP garantujú uplatnenie pre svojich absolventov.

Predtým si nezabudnite na webe vyhľadať zoznamy úloh a otázok, ktoré sa často kladú uchádzačom o zamestnanie.