Šta je kodiranje. Kako i gdje naučiti kodiranje? Kako odabrati smjer i jezik

I objasniću zašto.

Prije petnaest godina savjetovano mi je da postanem programer zbog činjenice da sam introvertna i stidljiva osoba, a i analitičkog uma i potpunog odsustva društvenog života, ali sam se samo nasmijao i odbacio takve savjetnike. Tada sam bio tinejdžer, a u mom tinejdžerskom umu programer je uvek živeo u podrumu kuće mojih roditelja, bio je bubuljicav i nosio ružne naočare, nikada nije imao devojku, ali fantazije o princezi Leji su se isplatile (i to prilično često). Ovakav način života mi nije bio po volji. Osim toga, tada sam već imao djevojku, i to prilično lijepu.

Premotavamo šest godina unapred: Sedim na aerodromu u Budimpešti i čitam knjigu o HTML-u...

Šest godina kasnije, zaposlila me jedna start-up kompanija iz Sjeverne Irske kao generalni stručnjak. Da, izgleda da je trebalo neko vrijeme. Ali koliko tačno? Ne mogu tačno reći. Ali mnogo. Mitskih 10 hiljada sati? br. Ako bi me zamolili da dam približnu cifru, rekao bih da sam do tog dana “kodirao” oko 8 hiljada sati. Tehnički gledano, ako bi se vjerovalo pravilu 10.000 sati, onda bih za 2.000 postao stručnjak u ovoj oblasti.

Ali hoću li?

To je ono što sam uspio postići za 8 hiljada sati. Udobno se smjestite jer će moja priča biti duga. Kodirao sam na sljedećim jezicima: C, HTML, CSS, JavaScript, Java (Android), Swift, PHP, Ruby, Python, Chuck, SQL, radio sa sljedećim okvirima: Node, Angular, Bootstrap, Foundation, React, Rails , CodeIgniter, Ionic i kreirao je odredišne ​​stranice, Wordpress stranice, rješenja za e-trgovinu, sadržaj za e-učenje, Moodle i Totara stranice, Mahara stranice, Common Cartridge i SCORM pakete, Android i iOS aplikacije, hibridne aplikacije, interne web aplikacije, e-knjige, časopise , igre i dodatne aplikacije za društvene igre. Pa kuda idem?

Želim da kažem da ne postoji oblast kao takva, pa je zadatak da se postane ekspert u njoj neostvariv. Kodiranje nije oblast. Računarstvo - da, ali je potpuno drugačije.

Kodiranje je ono prema čemu predsjednici, nastavnici i roditelji guraju mlađe generacije, kao da vode ovce u zlatna polja mogućnosti.

Ovo obećanje je san, propaganda tako dobro osmišljena i izražena (sada se to ne izražava ni riječima) da je apsurdno pojednostavljeno u slike kako bi slatki puzači mališani shvatili da je logično razmišljanje važnije od želje da se prehrani (molim vas obratite pažnju na sarkazam)...

15 godina kasnije, kodiranje je postalo popkulturna verzija programiranja, a sada stanovništvo polaže velike nade u buduću armiju kodera, zahvaljujući kojoj ćemo imati domove pod kontrolom umjetne inteligencije, promet, maloprodaju, zabavu i revoluciju u medicini , industrija i seks - samo ludnica, nema druge riječi. I sve zato programiranje je izloženo kodiranju i, u teoriji, lako ga je naučiti... Ali ovo je tako daleko od istine...

Izvor: LifeHacker

Hajde da to shvatimo. Mit da svako može naučiti jedan od programskih jezika za samo nekoliko sati, uzet kao "činjenica", istinit je samo do određene tačke, a ovaj trenutak dolazi u ranoj fazi učenja. Zaista, jezik se može naučiti za jedan dan. Generalno, ako sebi postavite cilj da za mjesec dana postanete poliglota u programiranju, dok imate posao, možete savladati 8-10 jezika ako učite vikendom. Ali ovdje je kvaka. Svaki programski jezik ima svoje biblioteke, kao i sintaktičke karakteristike, a sve se to ne može naučiti lako, brzo ili preko vikenda. Zapravo, u stvarnom svijetu, programski jezik neće biti glavni problem.

Samo zato što govorite engleski ne znači da možete pisati romane ili čak kratke priče. Isto se može reći i za kodiranje.

Samo zato što ste naučili jezik ne znači da znate kako da napišete program. Dodajte ovome bezbroj okvira, dodataka, biblioteka, predprocesora, postprocesora, standarda kodiranja, industrijskih standarda, razvoja vođenog testom (TDD), razvoja vođenog ponašanjem (BDD), sistema za upravljanje sadržajem, verzijama datoteka, kontinuirane integracije (CI), izdanja upravljanje i implementacija, otklanjanje grešaka, izdavanje ulaznica, modeli vodopada - i scrum metode i njihove kombinacije, i nisam siguran šta drugo da nazovem. Suština je da koncept "kodera" pokriva skoro sve gore pomenuto. Programiranje utiče samo na mali dio. Važan, ali ipak mali.

Međutim, programiranje je i dalje pojednostavljeno...

Apple je lansirao Playgrounds, MIT je lansirao Scratch, a Lego priprema Boost, a svi pokušavaju prodati kodiranje sve mlađoj generaciji, kao da žele popuniti radna mjesta novih programera 2020-ih.

Ja to vidim ovako: "Ne brinite o kodu, uzmite ove virtuelne komade slagalice i to je to, možete programirati." Da je to istina. Evo šta trebate znati o programiranju: baziran je na tekstu. Uvek je bilo i biće još mnogo godina. Djeca koja igraju Lego Boost, Playgrounds ili Scratch neće postati iskusniji programeri do 22 godine od onih koji su počeli programirati sa 16 i radili sa pravim programskim jezikom. Zapravo, odakle takva očekivanja? Ne mislim da će moje dijete naučiti da zarađuje za kruh do svoje 22 godine. Ali ako studira kodiranje 6 godina, onda garantujem da će brzo naći posao.

Appleova igrališta.

Kodiranje može biti najteži dio procesa razvoja softvera. Ako ne organizujete sve od početka (posebno za velike projekte), kodiranje i otklanjanje grešaka nakon toga ne samo da će potrajati jako dugo, već će vam donijeti i mnogo glavobolja.

Dobar kod je dobro održavan, višekratan i testiran. Sljedeći koraci će pokazati vama i/ili vašem razvojnom timu kako se nositi s različitim programskim zadacima i održati sve što je moguće bolje. Upoznat ću vas sa “najboljim praksama” koje će vam pomoći da napišete dobar kod i pomognem vama i vašem timu da budete sretni i efikasni.

1. Koristite standarde kodiranja

Lako je napisati loš, neorganizovan kod, ali ga je teško održavati. Dobar kod obično održava neku vrstu standarda za imenovanje varijabli, formatiranje i još mnogo toga. Takvi standardi su korisni jer uslovljavaju stvari za one koji kasnije pročitaju kod, uključujući i vas.

Možete kreirati vlastite standarde kodiranja, ali je bolje koristiti jedan koji se široko koristi. Koristeći Zend Framework Coding Standard, ili PSR-1 stil kodiranja, drugima će biti lakše da se prilagode.

2. Koristite komentare

Komentari su kritično potrebni. Ne naučite ih cijeniti dok ne napišete kod veličine hiljadu redova i ostavite ga nekoliko dana, a zatim se vratite pokušavajući to shvatiti. Korisni komentari olakšavaju život onima koji će raditi s kodom nakon vas.

Napišite jasne komentare u jednom redu za nerazumljive dijelove koda; napisati potpuni opis parametara i funkcionalnosti funkcija i metoda; za složene logičke blokove, po potrebi opišite logiku ispred njih. Ne zaboravite ažurirati svoje komentare!

3. Refaktor

Refaktoriranje koda je također dobra navika za produktivne programere. Vjerovali ili ne, svaki dan morate refaktorirati svoj kod, inače nešto nije u redu s njim! Refaktoring održava vaš kod u dobrom stanju, ali šta biste trebali refaktorirati i kako?

Trebali biste refaktorirati sve, od arhitekture do metoda i funkcija, imena varijabli, broja argumenata proslijeđenih metodi i slično.

Refaktoring je više umjetnost nego nauka, ali postoje neka dobra pravila koja ovo mogu rasvijetliti:

  • Ako je vaša funkcija ili metoda duža od 20-25 redaka, najvjerovatnije sadrži previše logike i možete je podijeliti na dvije ili više manjih funkcija/metoda.
  • Ako ime vaše funkcije ili metode ima više od 20 znakova, vrijedi revidirati ime ili revidirati cijelu funkciju/metodu koristeći prvo pravilo.
  • Ako imate mnogo ugniježđenih petlji, koristite previše resursa a da toga niste svjesni. Općenito, trebali biste preispitati svoju logiku ako ste ugnijezdili više od dvije petlje. Tri ugniježđene petlje su užasne!
  • Razmotrite postoje li prikladni obrasci dizajna koje možete koristiti. Ne biste trebali koristiti uzorke samo radi korištenja uzoraka, ali uzorci nude provjerena rješenja koja mogu biti prikladna.

4. Izbjegavajte globalni kod

Globalne vrijednosti i petlje mogu dodati probleme kada vaš kod naraste na milione redova. Oni utiču na kod na mjestima gdje je teško vidjeti, ili uzrokuju probleme s imenima varijabli, objekata i drugih stvari. Razmislite dvaput prije nego što zagadite globalni prostor imena varijablama, funkcijama, petljama i još mnogo toga.

U idealnom slučaju, ne biste trebali globalno definirati nikakve blokove. Switch iskazi, try-catch, foreach petlje, while petlje i slično moraju biti opisani unutar metode ili funkcije. Metode moraju biti opisane unutar klasa, a klase i funkcije unutar imenskih prostora.

5. Koristite smislena imena

Nikada nemojte koristiti imena poput $ k, $ m i $ test za svoje varijable. Kako se takav kod može čitati u budućnosti? U dobrom kodu, imena varijabli, metoda/funkcija, klasa; treba da nosi semantičko opterećenje. Neka dobra imena varijabli su $ request, $ dbResult i $ tempFile (Ovisi o vašem stilu kodiranja).

6. Koristite smislene strukture

Strukturiranje vaše aplikacije je važno; nemojte koristiti složene strukture, uvijek neka budu jednostavne. Prilikom imenovanja direktorija i datoteka, koristite konvenciju imenovanja koju ste dogovorili s timom ili koja slijedi standarde kodiranja. Uvek odvojite četiri dela PHP aplikacije jedan od drugog – CSS, HTML predlošci, JavaScript, PHP kod – i za svaki pokušajte da odvojite biblioteke od poslovne logike. Također je dobra ideja držati hijerarhiju direktorija što je moguće manju, tako da će vam biti lakše pretraživati ​​dijelove koda i kretati se strukturom.

7. Koristite sisteme kontrole verzija

U prošlosti su dobri razvojni timovi vjerovali CVS-u. Sada imamo varijaciju dostupnih rješenja. Upravljanje promjenama i revizijama treba da bude jednostavno, ali efikasno, pa odaberite koji god sistem kontrole verzija najbolje radi u toku vašeg razvojnog tima. Više volim da koristim distribuirani sistem kontrole verzija kao što je Git ili Mercurial; i besplatni / open source i vrlo moćni. Ako ne znate šta je kontrola verzija, preporučujem da pogledate seriju Uvod u Git Seana Gudgstona.

8. Koristite alate za automatsku izradu

9. Koristite dokumentatore koda

Za velike aplikacije koje obuhvataju više klasa i imenskih prostora, trebali biste imati automatski generiranu API dokumentaciju. Ovo je od velike pomoći i svi u timu će znati šta je šta. A ako radite na više projekata istovremeno, ova dokumentacija će vam biti blagoslov, jer ćete vjerovatno zaboraviti posebnosti strukture i druge razlike među projektima. Jedan takav dokumentarni film koji biste mogli razmotriti je DocBlox.

10. Koristite Testiranje

Postoje mnogi alati koje zaista cijenim, ali jedan koji jasno cijenim su okviri koji pomažu u automatizaciji procesa testiranja. Testiranje (odnosno sistematsko testiranje) je neophodno za svaki dio vaše aplikacije od milion dolara. Dobri alati za testiranje su PHPUnit i SimpleTest za jedinično testiranje vaših PHP klasa. Za GUI testiranje, preporučujem SeleniumHQ alate.

Ishod

U ovom članku ste vidjeli pregled najboljih praksi za pisanje boljeg koda, od korištenja standarda kodiranja do oblikovanja kao cijelog tima, važnosti refaktoriranja i kako ga savladati, koristeći profesionalne alate kao što su okvir za testiranje, kod dokumentator i kontrola verzija za pomoć u upravljanju bazom koda. Ako do sada niste slijedili ove korake, trebali biste obučiti sebe i svoj tim da ih radite.

Većina programera besplatnog softvera radi na Linuxu ili Macu, ali podrška za Windows obično se implementira na bazi ostataka. Radi - pa ne radi - neka se prikljuci onaj kome treba. U ovom članku ću vam pokazati kako da kreirate izvorne Windows izvršne datoteke bez da imate ovaj sistem pri ruci.

Najnovije izdanje Python 2.7 objavljeno je ove godine, nakon čega Python Software Foundation više neće podržavati granu 2.7. Mnoge popularne biblioteke i okviri takođe napuštaju zvaničnu podršku za Python 2, a brojne Linux distribucije ga više ne uključuju u svoj podrazumevani paket.

Vjerovatno ste više puta koristili usluge virustotal.com da provjerite da li binarni fajlovi sadrže zlonamjerne funkcije ili da testirate vlastite razvoje. Ova usluga ima besplatni API, o čemu ćemo raspravljati u Pythonu u ovom članku.

Svaka prilika za nevidljivi pristup vanjskom svijetu sa hosta unutar sigurne mreže dragocjeno je otkriće za tester penetracije. Jedan od poslednjih dostupnih puteva je NTP, protokol za sinhronizaciju sata. Njegov saobraćaj je dozvoljen skoro svuda, tako da će biti odličan transport za podatke. Pokazaću vam kako da implementirate osnovni klijent i server u C #.

Vjerovatno ste čuli da su neuronske mreže nedavno postale prokleto dobre u prepoznavanju objekata na slikama. Naš zadatak je naučiti kako koristiti ove neuronske mreže, jer njihova moć može biti korisna u raznim slučajevima. U ovom članku ću vam pokazati kako ga koristiti koristeći najčešće alate: Python i biblioteke Tensorflow i Keras.

Možda ste već naišli na glasovnu identifikaciju. Koristi se u bankama za identifikaciju telefona, za provjeru identiteta na kontrolnim tačkama i u kućnim glasovnim asistentima koji mogu prepoznati vlasnika. Znate li kako to funkcionira? Odlučio sam ući u detalje i napraviti svoju implementaciju.

Ranije je captcha s brojevima bio odličan način za uklanjanje botova, ali sada se ova vrsta gotovo nikad ne može naći. Mislim da i sami pogađate u čemu je stvar: neuronske mreže su naučile da prepoznaju takve captcha bolje od nas. U ovom članku ćemo pogledati kako funkcionira neuronska mreža i kako koristiti Keras i Tensorflow za implementaciju prepoznavanja znamenki.

Prije dvije godine, programeri platforme za striming Twitch predstavili su novi način interakcije između streamera i gledatelja - Twitch Extensions. Ovaj sistem omogućava programerima da dopune i poboljšaju interfejs sajta i mobilne aplikacije, stvarajući različite interaktivne elemente. Pokazat ću vam kako ove ekstenzije funkcioniraju i kako možete kreirati vlastite ako želite.

Bankarski trojanci svake godine uzrokuju milionske štete. Virmakeri se trude da sve što je vezano za internu kuhinju bankara drže u najdubljoj tajnosti. Stoga nismo mogli propustiti jedinstveni događaj – iznošenje izvornog koda bankarskog trojanca Carbanak u javnost – i počeli smo istraživati ​​njegovu strukturu iznutra.

Julia je mladi programski jezik dizajniran prvenstveno za naučno računarstvo. Njegovi kreatori su želeli da popuni nišu koju su ranije zauzimali Matlab, njegovi klonovi i R. Kreatori su pokušali da reše takozvani problem dva jezika: kombinuju praktičnost R i Pythona i performanse C-a. Hajde da vidimo šta su uradili. .

Forth se koristi u raznim oblastima, uključujući PCI čipsete i svemirske letjelice, a Pavel Durov će koristiti sličan jezik u pametnim ugovorima kriptovalute TON. Bez velikih promjena, jedan od najstarijih programskih jezika omogućava utjelovljenje mnogih modernih paradigmi. Dakle, šta je zapravo taj zagonetni Forth?

Gama način rada, za razliku od jednostavnog načina zamjene, omogućava vam šifriranje poruka proizvoljne dužine bez korištenja operacije dopunjavanja. Danas ćemo razgovarati o tome kako se takav režim provodi i napisati sve funkcije potrebne za njegovu implementaciju.

Kada je broj linija koda u vašim programima u milionima, pronalaženje grešaka postaje hiljadu puta teže. Na sreću, danas je moguće automatizirati testiranje korištenjem fuzzera. Kako rade, zašto ih treba koristiti i za šta su sposobni - o tome ćete saznati u današnjem članku.

Apstrakcija je osnova programiranja. Koristimo mnoge stvari bez razmišljanja o njihovim unutrašnjim karakteristikama, a one rade odlično. Svi znaju da korisnički programi komuniciraju sa kernelom putem sistemskih poziva, ali da li ste se ikada zapitali kako se to dešava na vašoj mašini?

Hakeri razvijaju varalice, igrači ih kupuju, kompanije unajmljuju inženjere da razviju novu odbranu. Hakeri ponovo pronalaze rupu i krug je završen. U ovom članku ćemo pogledati kako različite obrambene metode funkcioniraju (i da li djeluju!) i pokušati stvoriti naš vlastiti sistem zaštite od varanja.

U Linuxu, kao što znate, mnoge stvari su implementirane kao datoteke u sistemu datoteka. A ako nisu implementirani, onda ih možete sami implementirati koristeći FUSE. U Windows-u je to manje prihvaćeno, ali ako i dalje zaista želite da montirate nešto kao sistem datoteka, onda je to moguće. Pokazat ću vam kako to postići koristeći C# i Dokan biblioteku.

Najatraktivnija meta napadača je internet bankarstvo, a botnetovi igraju odlučujuću ulogu u uspjehu virusnih napada na njega. No, kako bi iz podataka presretnutih uz njihovu pomoć izvukao vrijedne informacije, napadač se mora potruditi. Danas ću vam reći kako da zagorčate život botovima i zaštitite svoju aplikaciju od napada.

Velika stvar kod kompjuterskih igrica je da je nagrada za uspjeh pravo zadovoljstvo, a cijena neuspjeha niska. Ali ponekad, da biste otključali nove sposobnosti ili samo ubrzali igru, pribjegavate ne najpoštenijim metodama. A ako ne možete da promenite pravila sveta, možete pokušati da ih sagnete. Da, tako je, razgovaraćemo o varalicama.

Borbeni keyloggeri s mnoštvom funkcija i zaštitom od otkrivanja mogu koštati desetine, ako ne i stotine dolara. Ali keylogger nije tako komplikovana stvar, a ako želite, možete napraviti svoj i čak izbjeći da vas antivirusi otkriju. U ovom članku ću vam pokazati kako to učiniti, a istovremeno ćemo vježbati razvoj programa u C #.

U C ++ postoji takva stvar kao što je dinamička identifikacija tipa podataka (RTTI). To je mehanizam koji vam omogućava da odredite tip varijable ili objekta u vrijeme izvođenja. Da bi se izvršna datoteka smanjila, RTTI je onemogućen u mnogim projektima, zbog čega dynamic_cast i typeid prestaju raditi. Ali još uvijek postoji način da provjerite da li je instanca objekta izvedena iz neke osnovne klase.

Statički tipizirani jezici obično vas prisiljavaju da pišete varijabilne tipove iz bilo kojeg razloga. Ali to nije uvijek slučaj: teorija i praksa programskih jezika značajno su napredovali, samo ta dostignuća industrija nije odmah prihvaćena. Danas ćemo pogledati jezik OCaml i vidjeti da statičko kucanje nije nužno nezgodno.

Postoje mnoga sigurnosna rješenja koja definiraju rad u zaštićenim okruženjima, rade sa tehnikama protiv otklanjanja grešaka, nadgledaju integritet njihovog koda i dinamički šifriraju svoje podatke u memoriji u odnosu na dump. Još jedna moćna sigurnosna tehnika je virtuelizacija koda. U ovom članku ću vam pokazati kako to funkcionira.

Najbolje je naučiti jezik na stvarnom projektu, pa kada sam odlučio da eksperimentišem sa paklom, postavio sam sebi pravi i zanimljiv zadatak: da napišem uslužni program za detekciju rada u hipervizoru. Ovo je samo po sebi zabavno, a novi programski jezik će dovesti zabavu na viši nivo.

Više puta ste u životu naišli na različite protokole - neke ste koristili, drugi su, možda, obrnuli. Neki su bili laki za čitanje, drugi se nisu mogli shvatiti bez hex editora. U ovom članku ću vam pokazati kako da kreirate svoj vlastiti protokol koji će raditi na vrhu TCP/IP-a. Razvićemo sopstvenu strukturu podataka i implementirati server u C#.

Ako pišete u Pythonu, onda ste vjerovatno vidjeli definicije metoda umotane u dvostruke donje crte u standardnim bibliotekama. Ove "magične" metode formiraju mnoga korisna sučelja koja koristite cijelo vrijeme - na primjer, kada dobijete vrijednost prema broju elementa ili odštampate nešto. Sada ću vam pokazati kako da koristite ove metode iu svojim programima.

Prilikom pisanja softvera koji je u interakciji s drugim aplikacijama, ponekad postaje potrebno prekinuti izvršavanje procesa treće strane. Postoji nekoliko metoda koje mogu pomoći u ovom pitanju: neke su dobro dokumentovane, druge pokušavaju da završe potrebne procese na strože načine, provocirajući operativni sistem da ih silom udari. Pokazat ću vam nekoliko načina da ubijete i uništite procese u Windowsu.

Jezik, razvijen po narudžbi američkog Ministarstva odbrane i nazvan po prvoj programerki na svijetu Adi Lovelace, aktivno se koristi za upravljanje avionima, vozovima, svemirskim letjelicama i drugim zanimljivim stvarima. Pogledajmo jezik bez prizme mitova i vidimo kako možemo imati koristi od njega, čak i ako još ne idemo u svemir.

Vjerovatno ste naišli na emulatore igraćih konzola i, možda, čak i sjedili za njima duže od jednog sata. Ali da li ste se ikada zapitali kako to funkcioniše? Na primeru NES-a, poznatog u Rusiji kao Dendy, pokazaću vam kako da kreirate sopstveni emulator. A istovremeno ćemo se pozabaviti lukavom arhitekturom ove konzole, koja je proizvela nevjerovatno dobru sliku za svoje vrijeme i svoju skromnu cijenu.

Vjerovatno ste čuli za takvu klasu zlonamjernih aplikacija kao što su kradljivaci. Njihov zadatak je izvući vrijedne podatke iz sistema žrtve, prije svega lozinke. U ovom članku ću objasniti kako to tačno rade, koristeći primjer izvlačenja lozinki iz preglednika Chrome i Firefox i pokazati primjere C ++ koda.

Pitanja za intervju kao što su "zašto je poklopac šahta okrugao?" - Ovo je čudno. Listovi C koda koje morate sastaviti u glavi su dosadni. Najzanimljiviji zadaci su za opšte tehničko i logičko razmišljanje. A danas su nam drugovi iz kompanije Abbyy dobacili upravo takve!

Sposobnost programiranja jedna je od najvrednijih vještina koje se traže u modernom svijetu. I praktično nije važno šta tačno osobu tjera da kreira kod: iskreni interes, financijska ili karijerna razmatranja - oni koji znaju programirati neće ostati besposleni. Kodiranje je vrlo slično komunikaciji na stranom jeziku, tako da u ranoj fazi učenja programiranja početnicima je često teško. Istovremeno, mnogi doživljavaju tešku nelagodu, ali s vremenom sve ide na bolje i osoba počinje lako da kodira, bez velikih mentalnih troškova. Danas možete pronaći mnoge knjige i online resurse pomoću kojih možete naučiti kodirati, ali svako samostalno učenje povezano je sa stresom i negativnim emocijama - toga uvijek treba imati na umu kada počinjete savladavati programski jezik. Najvažnija stvar za kodera početnika je da ne odustane od učenja jezika na pola puta, izgubivši svaki interes za ovo zanimanje. Dakle, šta budući programer treba da zna? Koje ga poteškoće čekaju na putu savladavanja korisnih vještina?

Programski jezici

Prvo morate odlučiti o programskom jeziku koji početnik želi naučiti. Nije tako lako - postoji mnogo jezika i svaki od njih je dobar na svoj način. Vrlo je važno svjesno odabrati jezik - na kraju krajeva, u njegov razvoj će se uložiti mnogo vremena i truda. Ali kako god bilo, početnik koder mora znati da ne postoje dobri ili loši programski jezici, ali postoje jezici koji su prijateljski raspoloženi za početnike. Dakle, što je programski jezik lakši i razumljiviji, to bolje - na početku puta bolje je ići od uspjeha do uspjeha, od jednostavnih zadataka do složenijih. Dalje će biti lakše, nakon što početnik nauči da kodira u svom prvom programskom jeziku, drugi jezici će mu biti mnogo lakše dati.

Takođe je veoma važno da odmah odredite za šta je potrebno da znate jezik. Zato što je kodiranje veoma različito. Ako neko želi da postane programer softvera, onda se može osvrnuti na Javu, a u slučaju kreiranja aplikacija za iOS bolji je Swift jezik.

Odgovarajuća nastavna metoda

Postoji mnogo načina za učenje, tako da u slučaju programskih jezika, morate pronaći odgovarajuću metodologiju. U isto vrijeme, bilo bi pametno odabrati glavni metod i dopuniti ga sekundarnim nastavnim metodama. Ovdje je sve vrlo individualno: ako je početnik vizualan ili dobro razumije informacije na uho, onda može naučiti kodiranje gledajući video zapise na YouTube-u, a druga znanja steći iz knjiga. Evo nekoliko jednostavnih, ali efikasnih tutorijala:

Online kursevi kodiranja. Neki ljudi rade efikasnije kada im se kaže šta da rade i kada im se redovno provjerava njihov učinak. A takvih je mnogo. Stoga, ako početnik osjeća da ima problema sa samodisciplinom, onda bi trebao izabrati kurs na kojem će biti stalno motiviran provjerama. To je dobra ideja - toliko ljudi je prestalo da uči programiranje, oslanjajući se na svoju volju i entuzijazam. Samostalno učenje kodiranja nije za svakoga, to uvijek treba imati na umu.

YouTube video. Danas možete saznati sve o svemu samo gledanjem videa na YouTube-u. Iskusniji koderi će vam pokazati šta tačno da radite, tako da su ovi materijali od velike pomoći. To je jednostavan, efikasan i što je najvažnije besplatan način da naučite kako da kodirate. Ako imate pristup internetu, možete sjediti, gledati, ponavljati barem cijeli dan dok vam ne bude jasno.

Knjige... Ovo je pomalo staromodan način učenja programskih jezika ovih dana, ali ostaje činjenica da se tokom godina kodiranje nije mnogo promijenilo i ono što se priča na YouTube-u ne razlikuje se mnogo od onoga što se kaže u novinama knjiga. Ali knjige imaju neospornu zaslugu - one olakšavaju razumijevanje logike jezika, a to je nevjerovatno važno. Prije svega, jer kada je praktična obuka u pitanju, niko ne želi da radi ono što je neshvatljivo ili nemoguće. Kako ne biste odustali od svega na pola puta, imperativ je čitati knjige o programiranju.

Vježbajte. Mnogi od najboljih programera su samouki. Vrlo često su počeli da kodiraju neprimjetno za sebe, jer je njihova obuka bila nasumična. Suočili su se s problemom, riješili ga, suočili se s drugim - i riješili ga također. Postepeno, takvi samouki ljudi prelaze s jednog problema na drugi, složeniji i istovremeno savladavajući kodiranje. Takve ljude ne vrijedi oponašati, ali praksu ne treba napustiti – ona je ključ uspjeha u učenju.

Popravljanje uspeha

Početnik, koji tek počinje da uči programski jezik, mora znati i biti spreman na činjenicu da je to dugo vremena. Učenje kodiranja je dugotrajan proces u kojem se neuspjeh osjeća mnogo više nego uspjeh. Kako ne biste napustili školu, imperativ je da zabilježite sve svoje postupke. Ljudi vrlo često gube motivaciju samo zato što ne osjećaju napredak. I sigurno će biti ako se početnik marljivo angažuje. Samo što vještine neprimjetno rastu, početnik koder to možda i ne primijeti, tako malim koracima ide ka zacrtanom cilju.

Zbog toga se morate s vremena na vrijeme podsjetiti koliko ste daleko stigli i češće se osvrtati. Mnogo pomaže - na kraju krajeva, gledajući njihove prve linije koda, svako može shvatiti da napreduju. Svi ovi lični rezultati mogu izgledati kao zabavni. Ne, zapravo, bilježenje uspjeha je jako važno – ono je visoko motivirajuće tokom cijelog procesa učenja. Stoga, da biste započeli, a ne odustali, imperativ je označiti svaku pređenu fazu.

Jasni uslovi obuke

Kada je u pitanju kodiranje, mnogi početnici prave uobičajenu grešku - pokušavaju obaviti gomilu zadataka odjednom i obično odustanu od svih prije nego što završe. Zainteresuju se za nešto drugo, najčešće za druge zadatke, pa skaču s jednog projekta na drugi. Ne radi to. Najbolje je kretati se na sistematski način - riješiti jedan problem ili razumjeti primjer dok sve ne postane jasno. To je vrlo jednostavan princip: jedna po jedna stvar.

Ali u isto vrijeme, morate shvatiti da je napredak neophodan, tako da morate sebi postaviti stroge rokove za proučavanje jednog ili drugog aspekta jezika. Možete pokušati da zamislite da ispit dolazi uskoro i da ćete morati pokazati sve što ste mogli postići. Ovo je motivirajuće. Da, svi ovi lični poslovi možda nisu baš ugodni, ali samo kodiranje nije zabavno. Stroga disciplina omogućit će vam da steknete potrebne vještine, a pridržavanje roka je gotovo najvažnija vještina za freelance programera.

Dok se obični korisnici boje pogriješiti i mrze kada nešto krene po zlu, programer je u potpuno drugačijem položaju. Greške su dio njegovog posla, i to veoma veliki dio. Stoga, početnik koder treba sebe naučiti kako čitati poruke o grešci, bez obzira koliko frustrirajuće to moglo biti. Ove poruke sadrže mnogo vrijednih informacija, jer vam govore šta je tačno propušteno u procesu kreiranja koda. Morate biti spremni da će se takve poruke pojavljivati ​​vrlo često i da neće nigdje otići ni nakon što se završi učenje programskog jezika. Ne možete štedjeti vrijeme da radite na greškama - ovo je najvažniji dio učenja. Osim toga, ovo je dobra praksa - kada jednom shvatite problem, kasnije će biti lakše izbjeći mnoge greške. Izvještavanje o greškama nije kazna, u stvari, oni su najbolji prijatelji kodera koji žele da ga nauče kako da sve uradi kako treba.

Komunikacija sa drugim programerima

Takva komunikacija će također pomoći da se shvati da se i drugi ljudi jednako često susreću s problemima kodiranja i to nije neobično. A ako, osim toga, početnik može pomoći svom prijatelju, programeru, onda će imati drugi vjetar i nastavit će učiti sa osvetom. I ne treba se bojati komunikacije – programeri su zapravo prijateljski raspoloženi ljudi, samo su često na svojoj talasnoj dužini i početnik samo treba da uđe u rezonanciju.

Ispravan i pogrešan pristup

Koderi početnici često pokušavaju kopirati dijelove koda iz drugih projekata, rješavajući bilo koji njihov problem. Smatraju da je to razumno, jer je glavno da sve funkcionira. Ovo je pogrešan, štaviše, vrlo štetan pristup. I ne zato što je kopiranje loše, već zato što kopiranje, početnik neće razumjeti šta tačno ovaj kod radi. Naravno, kopiranje je mnogo lakše nego da sve sami pišete.

Ali u procesu učenja takav pristup će dovesti do toga da se stvaraju velike praznine u znanju i da će koder početnik jednog dana odustati, nesposoban da riješi problem s kojim se suočava. I sve će napustiti. Učeći programski jezik, morate bez žaljenja utrošiti vrijeme na analizu bilo kojeg, čak i na prvi pogled, problema. A ako ne možete odmah doći do rješenja, ne možete odustati. Morate čitati, gledati video, pitati druge - početnik se mora temeljito nositi s poteškoćama koje su se pojavile. Iako uči jezik, to nije isto što i učenje običnog, ljudskog jezika. Koder se bavi mašinom, pa mu je važno da razume šta radi. Takvo poznavanje jezika je jednostavno neprocjenjivo kada obrazovni proces dođe u praksu.

Učenje programskih jezika nije najuzbudljivija stvar. Ali sve se može popraviti ako se stvari pristupi fikcijom. Ne postoji bolji način da naučite bilo šta od igranja igrica. Ovo se također odnosi i na kodiranje, jer možete brzo naučiti jezik samo igrajući se i istovremeno poboljšavajući svoje vještine. Evo nekoliko igara za početnike koji mogu provjeriti.

  • CheckiO je igra koju možete igrati u svom pretraživaču i zahtijeva JavaScript ili Python rješavanje problema kako biste napredovali kroz igru.
  • CodeMonkey - uglavnom za djecu, ali ako ste početnik možete naučiti neki kod igrajući ovu igru.
  • Codewars nije prava igra, već radije zajedničko rješenje problema za programere. Ovo je odličan način da savladate kodiranje jer igra podržava mnoge jezike.
  • Code Combat je online platforma na kojoj možete naučiti kako da kodirate igrajući pravu igru.

Postoji mnogo drugih igara koje možete koristiti, ovisno o tome koja vam najbolje odgovara i jeziku koji učite. Igra će pomoći početniku da počne razmišljati kao programer, što je vrlo važno na samom početku učenja.

Zaključak

Neki ljudi uče da kodiraju brzo, drugi sporije, ali svako može naučiti da kodira. I nemojte pasti u brže ako nešto ne uspije. Možete postići svoj cilj laganim kretanjem, i zaista je svako učenje spor proces. Ako početnik ne želi napustiti učenje kodiranja, savladavši samo osnove, mora razviti vlastitu strategiju ponašanja. Morate shvatiti da se u obuku ulaže vrijeme, trud, a ponekad i novac, tako da samo trebate preći iz jedne faze u drugu. I ne prepuštajte se poteškoćama. Da, programiranje nije za svakoga. Ali svako može naučiti jezik, naučiti kodirati. Dakle, samo trebate odlučiti i krenuti svojim putem.

1. Nezavisno

Ako imate željeznu snagu volje i željni ste da postanete programer, onda svoj cilj možete postići samoobrazovanjem. Ovo nije najlakši i najkraći put: sami morate razumjeti informacijski haos i boriti se protiv odugovlačenja. Ali možete učiti u pogodno vrijeme za relativno malo novca ili potpuno besplatno.

Najlakše je započeti s interaktivnim online kursevima. Na webu postoji mnogo materijala koji objašnjavaju osnove programiranja i postavljaju smjer daljeg razvoja. Obratite posebnu pažnju na one kurseve koji podučavaju na primjerima stvarnih projekata, odnosno govore vam korak po korak kako kreirati određeni program ili web stranicu.

FreeCodeCamp platforma za web razvoj

Zapamtite da ne možete ništa učiniti bez vježbe. Proučavajte projektno orijentisane kurseve i pokušajte da napišete programe i sajtove koji su u njima rastavljeni. Pretražite YouTube predavanja o projektima koje biste željeli razviti. Prvo kopirajte tuđi rad i analizirajte ga. Zatim se pokušajte odmaknuti od originala, eksperimentirajte, mijenjajte pojedinačne elemente dok ne možete stvoriti nešto jedinstveno.

Pored kurseva i video predavanja, na usluzi Vam je i zvanična dokumentacija dostupna na web stranicama jezika, i. Kada dobijete osnove, potražite najnovije naslove najboljih praksi za svoj programski jezik. Takve knjige sadrže najbolje tehnike dizajna.

Obavezno postavite sebi cilj da kreirate svoj projekat i stalno radite na njemu.

To će vam pomoći da konsolidujete stečeno znanje i shvatite koje informacije vam još nedostaju. Vaše vještine će se razvijati zajedno s projektom. Kada ga završite, radite na novom, složenijem.

Ako imate bilo kakvih poteškoća u procesu učenja ili razvoja, uvijek se možete obratiti programerskim zajednicama kao što su Toaster i Stack Overflow za bilo koje pitanje. Na primjer, pomoći će vam da riješite problem, odaberete dobar kurs ili ukažete na greške u kodu.


Usluga pitanja i odgovora na tehnološke teme "Toster"

Zgodno je usavršavati vještine na posebnim stranicama na kojima se možete takmičiti s drugim programerima rješavanjem raznih praktičnih problema uz pomoć koda. Ove usluge uključuju Codewars, TopCoder i HackerRank.

Ako smatrate da je vaš razvoj u zastoju ili želite da ubrzate svoje učenje, isprobajte sljedeće opcije.

2.Uz pomoć mentora

Mentor je lični mentor koji ukazuje na greške, upozorava na zamke, pomaže u vođenju kursa. Korisna preporuka, primljena u pravo vrijeme, može vam uštedjeti mnogo problema i uštedjeti mnogo vremena. Stoga mentor nikome neće smetati.

Saznajte postoje li programeri koje poznajete. Možda će vam neko od njih htjeti pomoći. Ako ne poznajete takve ljude, možete ih potražiti u programskim zajednicama. Na primjer, na istom "Tosteru". Samo mentorske usluge nisu jeftine, a niko ne želi da provodi puno vremena sa strancima tek tako.

3. Kod nastavnika "živih" kurseva

Kursevi na daljinu i lični kursevi sa instruktorima koji obučavaju programere od nule postali su neverovatno popularni poslednjih godina. Unutar ovog formata morate puno raditi i sami. Ali vi ćete učiti po stručno pripremljenom programu, a prava osoba će provjeriti rješenje problema. Nedostaci kurseva uključuju visoku cijenu obuke.

Popularne online platforme na ruskom jeziku koje se bave sistemskom obukom programera: Netology, GeekBrains i Loftschool.

Ako više volite da studirate interno, možete potražiti obrazovne centre koji podučavaju programiranje u vašem mjestu. Nažalost, ovakvi objekti su najčešće prisutni samo u velikim gradovima. Primjer je kompjuterska akademija "STEP", koja ima ogranke u nekoliko zemalja.

4. Na univerzitetu

Ako vam je ostalo dosta vremena i sigurni ste da svoj život želite povezati sa programiranjem, možete studirati informatiku na fakultetu. Ali imajte na umu da tradicionalne obrazovne institucije zaostaju za napretkom, tako da ćete morati sami savladati moderne programske jezike i druge tehnologije.

S druge strane, univerzitet će pružiti temeljna znanja iz matematike, algoritama i drugih oblasti koje će vam pomoći da postanete visokokvalitetni programer. Tokom godina marljivog učenja, razvit ćete pravi način razmišljanja, zahvaljujući kojem ćete shvatiti sve u hodu u profesionalnom polju.

Kako odabrati smjer i jezik

Postoji nekoliko pravaca u IT industriji, od kojih svaki koristi svoj skup jezika. Navedimo glavne smjerove po rastućoj složenosti:

  1. Web development... Popularni jezici: JavaScript, PHP, Python, Ruby.
  2. Mobilni razvoj... Popularni jezici: Java, Swift.
  3. Razvoj igara i programa za desktop računare... Popularni jezici: C++, C#, C.
  4. Veliki podaci, mašinsko učenje... Popularni jezici: Python, R, Scala.

Na šta treba obratiti pažnju pri odabiru

Da biste napravili pravi izbor smjera, a posebno jezika, uzmite u obzir sljedeće faktore: složenost savladavanja i količinu materijala za obuku na webu, vaše lične preferencije (šta tačno želite da razvijete) i potražnje za jezikom na tržištu rada.


Grafikon potražnje za jezicima na međunarodnom tržištu rada / research.hackerrank.com

Potražnja za jezikom u vašoj regiji lako je provjeriti na stranicama za traženje posla. Samo otvorite odjeljak za programere softvera i pogledajte broj slobodnih radnih mjesta.

Ako ne možeš da odlučiš

Ako ste zbunjeni, pogledajte bliže JavaScript - jezik na kojem je napisan gotovo cijeli web. Mnoge organizacije i programeri savjetuju početnicima da odaberu ovaj jezik kao svoj prvi jezik.

Na primjer, Quincy Larson, osnivač obrazovnog resursa freeCodeCamp, je JavaScript za sve početnike. Larson iznosi vrlo jednostavne argumente:

  1. JavaScript je relativno lako naučiti. A da biste nešto napisali i pokrenuli na ovom jeziku, samo trebate imati uređivač koda i pretraživač.
  2. JavaScript je najtraženiji jezik na međunarodnom tržištu rada i ima velike izglede. Velike kompanije poput Googlea, Microsofta i Facebooka ulažu u JavaScript ekosistem.
  3. JavaScript ima vrlo širok spektar aplikacija: od web stranica i igara za pretraživače do mobilnih aplikacija.

Osim toga, oko ovog jezika se formirala velika zajednica programera. Veliko interesovanje za JavaScript pruža ogroman broj kurseva, knjiga i drugog obrazovnog sadržaja.

Šta još programer treba da zna: matematiku i engleski?

Svaki programer će imati koristi od dubokog razumijevanja. Za stvari poput grafike igara ili velikih podataka, matematički um je neophodan. Ali što se tiče web razvoja i kreiranja jednostavnih programa, u većini slučajeva možete bez matematike. Iako ne postoji konsenzus među stručnjacima o ovom pitanju.

Ali razumijevanje engleskog, barem na nivou tečnog čitanja dokumentacije, neophodno je za sve programere. Službeni dokumenti i većina obrazovnih materijala pojavljuju se prvenstveno na engleskom jeziku. često su zastarjeli prije objavljivanja prijevoda. Osim toga, znanje engleskog jezika otvara mogućnosti za rad sa cijelim svijetom.

Kako steći prvo iskustvo i prvi posao

Da biste pronašli svoj prvi posao kao programer, morate imati portfolio. Ovo je projekt koji ste kreirali, odnosno nekoliko njih, koji demonstriraju sve vaše programerske vještine. Većina kurseva uključuje razvoj projekata koji se mogu uklopiti u vaš portfolio.

Radno iskustvo, posebno razvoj tima, bit će vrlo vrijedna stavka u životopisu. Ali gdje ga možete dobiti ako tražite svoj prvi posao?

  1. Ispunite više narudžbi za. To može biti Freelance ili Upwork. Ponudite svoje usluge besplatno, tada će vam prvi kupci doći.
  2. Pronađite istomišljenike i kreirajte zajednički projekat s njima. Ljudi se u takve svrhe udružuju na gotovo svim obrazovnim stranicama gdje postoje kursevi programiranja.
  3. Odaberite kurseve koje organizator pomaže pri zapošljavanju. Na primjer, u GeekBrains-u se nakon obuke otvara pristup praksi iz raznih kompanija, uključujući i one koje se plaćaju. GeekUniversity i STEP garantuju zaposlenje svojim diplomcima.

Prije toga, ne zaboravite pretražiti web za liste zadataka i pitanja koja se često postavljaju tražiteljima posla.