Ce este codificarea. Cum și unde să înveți codificarea? Cum să alegi direcția și limba

Și o să explic de ce.

În urmă cu cincisprezece ani, am fost sfătuit să devin programator din cauza faptului că eram o persoană introvertită și timidă și aveam, de asemenea, o minte analitică și o lipsă totală de viață socială, dar am râs și i-am demis pe astfel de consilieri. Atunci eram adolescent, iar în mintea mea de adolescent programatorul locuia mereu în subsolul casei părinților mei, era coș și purta ochelari urâți, nu a avut niciodată o iubită, dar fanteziile despre Prințesa Leia au dat roade (și destul de des). Acest mod de viață nu a fost pe placul meu. În plus, atunci aveam deja o prietenă, și destul de frumoasă.

Înainte rapid șase ani: stau la aeroportul din Budapesta și citesc o carte pe HTML...

Șase ani mai târziu, am fost angajat de o companie start-up din Irlanda de Nord ca generalist. Da, se pare că a durat ceva timp. Dar cât mai exact? Nu pot spune exact. Dar multe. Miticele 10 mii de ore? Nu. Dacă mi s-ar cere să dau o cifră aproximativă, aș spune că până în ziua aceea am „codat” aproximativ 8 mii de ore. Tehnic vorbind, dacă ar fi de crezut regula celor 10.000 de ore, atunci în 2.000 aș fi devenit expert în acest domeniu.

Dar voi face?

Asta am reușit să obțin în 8 mii de ore. Fă-te confortabil, deoarece povestea mea va fi lungă. Am codificat în următoarele limbi: C, HTML, CSS, JavaScript, Java (Android), Swift, PHP, Ruby, Python, Chuck, SQL, am lucrat cu următoarele cadre: Node, Angular, Bootstrap, Foundation, React, Rails , CodeIgniter, Ionic și a creat pagini de destinație, site-uri Wordpress, soluții de comerț electronic, conținut eLearning, site-uri Moodle și Totara, site-uri Mahara, pachete Common Cartridge și SCORM, aplicații Android și iOS, aplicații hibride, aplicații web interne, cărți electronice, reviste , jocuri și aplicații suplimentare pentru jocuri de societate. Deci spre unde mă îndrept?

Vreau să spun că nu există un domeniu ca atare, așa că sarcina de a deveni expert în el este de neatins. Codificarea nu este un domeniu. Informatica - da, dar este complet diferit.

Codificarea este ceea ce președinții, profesorii și părinții împing generația mai tânără, ca și cum ar conduce oile în câmpurile de aur ale oportunităților.

Această promisiune este un vis, o propagandă atât de bine creată și exprimată (acum nici măcar nu este exprimată în cuvinte) încât a fost simplificată în mod absurd în imagini, astfel încât copiii drăguți care se târăsc să înțeleagă că gândirea logică este mai importantă decât dorința de a se hrăni singur (te rog). fii atent la sarcasm)...

15 ani mai târziu, codificarea a devenit o versiune de cultură pop a programării, iar acum populația are mari speranțe într-o viitoare armată de codificatori, datorită căreia vom avea case controlate de AI, trafic, retail, divertisment și o revoluție în medicină. , industrie și sex - doar o casă de nebuni, nu există alt cuvânt. Și totul pentru că programarea este expusă pentru codare și, în teorie, este ușor de învățat... Dar acest lucru este atât de departe de adevăr...

Sursa: LifeHacker

Să ne dăm seama. Mitul că oricine poate învăța unul dintre limbajele de programare în doar câteva ore, luat ca un „fapt”, este adevărat doar până la un anumit punct, iar acest moment vine într-un stadiu incipient al învățării. Într-adevăr, o limbă poate fi învățată într-o singură zi. În general, dacă ți-ai propus ca într-o lună să devii poliglot în programare, în timp ce ai un loc de muncă, poți stăpâni 8-10 limbi dacă studiezi în weekend. Dar aici este prinderea. Fiecare limbaj de programare are propriile biblioteci, precum și caracteristici sintactice, iar toate acestea nu pot fi învățate ușor sau rapid sau în weekend. De fapt, în lumea reală, limbajul de programare nu va fi principala problemă.

Doar pentru că vorbești engleză nu înseamnă că poți scrie romane sau chiar nuvele. Același lucru se poate spune despre codificare.

Doar pentru că ai învățat o limbă nu înseamnă că știi să scrii un program. Adăugați la aceasta nenumărate cadre, pluginuri, biblioteci, preprocesoare, postprocesoare, standarde de codare, standarde industriale, dezvoltare bazată pe teste (TDD), dezvoltare bazată pe comportament (BDD), sisteme de management al conținutului, versiunea fișierelor, integrare continuă (CI), lansare management și implementare, depanare, ticketing, modele în cascadă - și metode scrum și combinații ale acestora și nu sunt sigur ce altceva să numesc. Concluzia este că conceptul de „coder” acoperă aproape tot ce s-a menționat mai sus. Programarea afectează doar o mică parte. Important, dar încă mic.

Cu toate acestea, programarea continuă să fie simplificată...

Apple a lansat Playgrounds, MIT a lansat Scratch, iar Lego pregătește Boost, iar toată lumea încearcă să vândă codificarea generației din ce în ce mai tinere, de parcă ar vrea să ocupe locurile de muncă de noi programatori în anii 2020.

Văd așa: „Nu vă faceți griji pentru cod, luați aceste piese virtuale de puzzle și gata, puteți programa”. Dacă ar fi adevărat. Iată ce trebuie să știți despre programare: este bazată pe text. Întotdeauna a fost și va fi pentru mulți ani de acum înainte. Copiii care joacă Lego Boost, Playgrounds sau Scratch nu vor deveni programatori mai experimentați până la 22 de ani decât cei care au început să programeze la 16 ani și au lucrat cu un limbaj de programare real. De fapt, de unde astfel de așteptări? Nu cred că copilul meu va învăța să-și câștige singur pâinea până la 22 de ani. Dar dacă studiază codificare timp de 6 ani, atunci garantez că își va găsi rapid un loc de muncă.

Locuri de joacă de la Apple.

Codarea poate fi cea mai grea parte a procesului de dezvoltare software. Dacă nu ai totul organizat de la început (mai ales pentru proiectele mari), codarea și depanarea după aceea nu numai că va dura foarte mult timp, dar va aduce și multe bătăi de cap.

Codul bun este bine întreținut, reutilizabil și testabil. Următorii pași vă vor arăta dvs. și/sau echipa de dezvoltare cum să gestionați diferite sarcini de programare și să păstrați totul cât mai bine posibil. Vă voi prezenta „cele mai bune practici” pentru a vă ajuta să scrieți un cod bun și să vă ajut pe dumneavoastră și echipa să fiți fericiți și eficienți.

1. Folosiți standarde de codare

Este ușor să scrieți cod rău, dezorganizat, dar greu de întreținut. Un cod bun menține de obicei un fel de standard pentru denumirea variabilelor, formatarea și multe altele. Astfel de standarde sunt utile pentru că fac lucrurile condiționale pentru cei care citesc codul după aceea, inclusiv pentru tine.

Vă puteți crea propriile standarde de codare, dar este mai bine să utilizați unul utilizat pe scară largă. Folosind standardul de codificare Zend Framework sau stilul de codare PSR-1, va fi mai ușor pentru alții să se adapteze.

2. Folosiți comentarii

Comentariile sunt extrem de necesare. Nu înveți să le apreciezi până când nu scrii un cod de o mie de linii și îl lași câteva zile, apoi te întorci încercând să-ți dai seama. Comentariile utile fac viața mai ușoară celor care vor lucra cu codul după tine.

Scrieți comentarii clare, pe o singură linie, pentru părțile de neînțeles ale codului; scrieți o descriere completă a parametrilor și funcționalității funcțiilor și metodelor; pentru blocuri logice complexe, descrieți logica dinaintea lor, după cum este necesar. Nu uitați să vă actualizați comentariile!

3. Refactorizare

Refactorizarea codului este, de asemenea, un obicei bun pentru dezvoltatorii productivi. Credeți sau nu, trebuie să vă refactorizați codul în fiecare zi, altfel ceva este în neregulă cu el! Refactorizarea vă menține codul într-o formă bună, dar ce ar trebui să refactorizați și cum?

Ar trebui să refactorizezi totul, de la arhitectură la metode și funcții, nume de variabile, numărul de argumente transmise unei metode și altele asemenea.

Refactorizarea este mai mult o artă decât o știință, dar există câteva reguli bune care pot face lumină în acest sens:

  • Dacă funcția sau metoda dvs. este mai lungă de 20-25 de linii, cel mai probabil există prea multă logică acolo și o puteți împărți în două sau mai multe funcții / metode mai mici.
  • Dacă numele funcției sau metodei dumneavoastră are mai mult de 20 de caractere, merită să revizuiți numele sau să revizuiți întreaga funcție/metodă folosind prima regulă.
  • Dacă aveți multe bucle imbricate, utilizați prea multe resurse fără să vă dați seama. În general, ar trebui să vă regândiți logica dacă ați imbricat mai mult de două bucle. Trei bucle imbricate sunt doar groaznice!
  • Luați în considerare dacă există modele de design potrivite pe care le puteți utiliza. Nu ar trebui să utilizați modele doar de dragul de a folosi modele, dar modelele oferă soluții dovedite care pot fi adecvate.

4. Evitați codul global

Globalele și buclele pot adăuga probleme atunci când codul tău crește la milioane de linii. Acestea afectează codul în locuri unde este greu de văzut sau provoacă probleme cu numele variabilelor, obiectelor și altor lucruri. Gândiți-vă de două ori înainte de a polua spațiul de nume global cu variabile, funcții, bucle și multe altele.

În mod ideal, nu ar trebui să definiți niciun bloc la nivel global. Declarațiile Switch, try-catch, buclele foreach, buclele while și altele asemenea trebuie descrise într-o metodă sau funcție. Metodele trebuie descrise în interiorul claselor, iar clasele și funcțiile în spațiile de nume.

5. Folosiți nume semnificative

Nu folosiți niciodată nume precum $ k, $ m și $ test pentru variabilele dvs. Cum poate fi citit un astfel de cod în viitor? În cod bun, denumirile de variabile, metode/funcții, clase; ar trebui să aibă o încărcătură semantică. Unele nume bune de variabile sunt $ request, $ dbResult și $ tempFile (Depinde de stilul dvs. de codare).

6. Folosiți structuri semnificative

Structurarea aplicației dvs. este importantă; nu utilizați structuri complexe, păstrați-l întotdeauna simplu. Când denumiți directoare și fișiere, utilizați o convenție de denumire pe care ați convenit-o cu echipa sau care urmează standardele de codare. Separați întotdeauna cele patru părți ale unei aplicații PHP una de cealaltă - CSS, Șabloane HTML, JavaScript, cod PHP - și pentru fiecare, încercați să separați bibliotecile de logica de afaceri. De asemenea, este o idee bună să păstrați ierarhia directoarelor cât mai mică posibil, astfel încât vă va fi mai ușor să căutați părți din cod și să navigați în structură.

7. Utilizați sisteme de control al versiunilor

În trecut, echipele bune de dezvoltare au avut încredere în CVS. Acum, avem o variantă a soluțiilor disponibile. Gestionarea modificărilor și revizuirilor ar trebui să fie simplă, dar eficientă, așa că alegeți sistemul de control al versiunii care funcționează cel mai bine cu fluxul echipei de dezvoltare. Prefer să folosesc un sistem distribuit de control al versiunilor precum Git sau Mercurial; atât gratuit / open source și foarte puternic. Dacă nu știți ce este controlul versiunilor, vă recomand să verificați seria Introducere în Git a lui Sean Gudgston.

8. Folosiți instrumente de construcție automată

9. Folosiți documentatorii de cod

Pentru aplicațiile mari care acoperă mai multe clase și spații de nume, ar trebui să aveți o documentație API generată automat. Acest lucru este foarte util și toată lumea din echipă va ști ce este. Și dacă lucrați la mai multe proiecte în același timp, veți găsi această documentație o binecuvântare, deoarece probabil veți uita particularitățile structurii și alte diferențe dintre proiecte. Un astfel de documentar pe care ați dori să îl luați în considerare este DocBlox.

10. Utilizați testarea

Există multe instrumente pe care le prețuiesc cu adevărat, dar unul pe care îl prețuiesc în mod clar sunt cadrele care ajută la automatizarea procesului de testare. Testarea (și anume testarea sistematică) este esențială pentru fiecare parte a cererii dvs. de milioane de dolari. Instrumentele bune de testare sunt PHPUnit și SimpleTest pentru testarea unitară a claselor dvs. PHP. Pentru testarea GUI, recomand instrumentele SeleniumHQ.

Rezultat

În acest articol, ați văzut o privire de ansamblu asupra celor mai bune practici pentru scrierea unui cod mai bun, de la utilizarea standardelor de codare la formatarea ca o echipă întreagă, importanța refactorizării și cum să-l stăpânești, folosind instrumente profesionale, cum ar fi un cadru de testare, un documentator de cod și control al versiunilor pentru a ajuta la gestionarea bazei de cod. Dacă nu ai urmat acești pași până acum, ar trebui să te antrenezi pe tine și pe echipa ta pentru a-i face.

Majoritatea dezvoltatorilor de software gratuit lucrează pe Linux sau Mac, dar suportul Windows este de obicei implementat pe o bază rămasă. Functioneaza - ei bine, nu functioneaza - lasa-l pe cel care are nevoie de ea. În acest articol, vă voi arăta cum să creați executabile Windows native fără a avea acest sistem la îndemână.

Cea mai recentă lansare Python 2.7 a fost anunțată anul acesta, după care Python Software Foundation nu va mai susține ramura 2.7. Multe biblioteci și cadre populare renunță, de asemenea, la suportul oficial pentru Python 2 și o serie de distribuții Linux nu îl mai includ în pachetul lor implicit.

Probabil ați folosit serviciile virustotal.com de mai multe ori pentru a verifica dacă binarele conțin funcții rău intenționate sau pentru a vă testa propriile dezvoltări. Acest serviciu are un API gratuit, despre care vom discuta în Python în acest articol.

Orice oportunitate de a accesa în mod invizibil lumea exterioară de la o gazdă în interiorul unei rețele securizate este o descoperire prețioasă pentru un tester de penetrare. Una dintre ultimele căi disponibile este NTP, protocolul de sincronizare a ceasului. Traficul său este permis aproape peste tot, așa că va fi un excelent transport pentru date. Vă voi arăta cum să implementați un client și un server de bază în C #.

Probabil ați auzit că rețelele neuronale au devenit recent destul de bune la recunoașterea obiectelor din imagini. Sarcina noastră este să învățăm cum să folosim aceste rețele neuronale, deoarece puterea lor poate fi utilă într-o varietate de cazuri. În acest articol, vă voi arăta cum să îl utilizați folosind cele mai comune instrumente: Python și bibliotecile Tensorflow și Keras.

Este posibil să fi întâlnit deja identificarea vocală. Este folosit în bănci pentru identificarea telefonului, pentru verificarea identității la punctele de control și în asistenții vocali casnici care pot recunoaște proprietarul. Știți cum funcționează? Am decis să intru în detalii și să-mi fac propria implementare.

Anterior, captcha cu numere era o modalitate excelentă de a elimina roboții, dar acum acest tip nu este aproape niciodată găsit. Cred că tu însuți ghiciți care este problema: rețelele neuronale au învățat să recunoască astfel de captch-uri mai bine decât noi. În acest articol, vom arunca o privire asupra modului în care funcționează o rețea neuronală și cum să folosiți Keras și Tensorflow pentru a implementa recunoașterea cifrelor.

În urmă cu doi ani, dezvoltatorii platformei de streaming Twitch au introdus un nou mod de interacțiune între streameri și telespectatori - Twitch Extensions. Acest sistem permite dezvoltatorilor să completeze și să îmbunătățească interfața atât a site-ului, cât și a aplicației mobile, creând diverse elemente interactive. Vă voi arăta cum funcționează aceste extensii și cum vă puteți crea propriile extensii, dacă doriți.

Troienii bancare provoacă daune de milioane de dolari în fiecare an. Virmakerii încearcă să păstreze tot ce ține de bucătăria internă a bancherilor în cel mai profund secret. Prin urmare, nu puteam rata un eveniment unic - obținerea codului sursă al troianului bancar Carbanak în public - și am început să investigăm structura acestuia din interior.

Julia este un limbaj de programare tânăr conceput în primul rând pentru calculul științific. Creatorii săi au dorit ca acesta să umple nișa ocupată anterior de Matlab, clonele sale și R. Creatorii au încercat să rezolve așa-numita problemă a două limbaje: combină comoditatea lui R și Python și performanța lui C. Să vedem ce au făcut. .

Forth este folosit într-o varietate de domenii, inclusiv chipset-uri PCI și nave spațiale, iar Pavel Durov va folosi un limbaj similar în contractele inteligente ale criptomonedei TON. Fără a suferi schimbări majore, unul dintre cele mai vechi limbaje de programare permite întruchiparea multor paradigme moderne. Deci, ce este mai exact acest Forth criptic?

Modul gamma, spre deosebire de modul de înlocuire simplu, permite criptarea mesajelor de lungime arbitrară fără a utiliza operația de umplutură. Astăzi vom vorbi despre cum este implementat un astfel de regim și vom scrie toate funcțiile necesare pentru implementarea lui.

Când numărul de linii de cod din programele dvs. este de milioane, găsirea erorilor devine de o mie de ori mai dificilă. Din fericire, astăzi este posibil să se automatizeze testarea folosind fuzzere. Cum funcționează, de ce ar trebui folosite și de ce sunt capabili - veți afla despre asta în articolul de astăzi.

Abstracția este fundamentul programării. Folosim o mulțime de lucruri fără să ne gândim la interiorul lor și funcționează grozav. Toată lumea știe că programele utilizatorului interacționează cu nucleul prin apeluri de sistem, dar te-ai întrebat vreodată cum se întâmplă acest lucru pe mașina ta?

Hackerii dezvoltă trucuri, jucătorii le cumpără, companiile angajează ingineri pentru a dezvolta noi apărări. Hackerii găsesc din nou o lacună, iar cercul este complet. În acest articol, vom arunca o privire asupra modului în care funcționează diferitele metode defensive (și dacă funcționează!) Și vom încerca să ne creăm propriul sistem de protecție anti-cheat.

În Linux, după cum știți, multe lucruri sunt implementate ca fișiere în sistemul de fișiere. Și dacă nu sunt implementate, atunci le puteți implementa singur folosind FUSE. În Windows, acest lucru este mai puțin acceptat, dar dacă tot doriți să montați ceva ca sistem de fișiere, atunci este posibil. Vă voi arăta cum să realizați acest lucru folosind C # și biblioteca Dokan.

Cea mai atractivă țintă pentru un atacator este online banking, iar botnet-urile joacă un rol decisiv în succesul atacurilor de virus împotriva acestuia. Dar pentru a extrage informații valoroase din datele interceptate cu ajutorul lor, atacatorul trebuie să muncească din greu. Astăzi vă voi spune cum să le îngreunați viața roboților și să vă protejați aplicația de atacuri.

Lucrul grozav despre jocurile pe calculator este că recompensa pentru succes este o adevărată plăcere, iar costul eșecului este scăzut. Dar uneori, pentru a debloca noi abilități sau doar pentru a accelera jocul, apelezi la metode nu cele mai oneste. Și dacă nu poți schimba regulile lumii, poți încerca să le îndoiești. Da, așa e, vom vorbi despre trucuri.

Combateți keylogger-urile cu tone de funcții și protecție împotriva detectării poate costa zeci, dacă nu sute de dolari. Dar un keylogger nu este un lucru atât de complicat și, dacă doriți, puteți să vă faceți singur și chiar să evitați să fiți detectat de antivirusuri. În acest articol vă voi arăta cum să faceți acest lucru și, în același timp, vom exersa dezvoltarea de programe în C#.

În C++, există un lucru precum identificarea dinamică a tipului de date (RTTI). Este un mecanism care vă permite să determinați tipul unei variabile sau al unui obiect în timpul execuției. Pentru a face fișierul executabil mai mic, RTTI este dezactivat în multe proiecte, ceea ce face ca dynamic_cast și typeid să nu mai funcționeze. Dar există încă o modalitate de a verifica dacă o instanță a unui obiect este derivată dintr-o clasă de bază.

Limbile tastate static, de obicei, vă obligă să scrieți tipuri variabile din orice motiv. Dar nu este întotdeauna cazul: teoria și practica limbajelor de programare au avansat semnificativ, doar că aceste realizări nu sunt imediat acceptate de industrie. Astăzi vom arunca o privire asupra limbajului OCaml și vom vedea că tastarea statică nu este neapărat incomod.

Există multe soluții de securitate care definesc lucrul în mediile sandbox, lucrează cu tehnici anti-depanare, monitorizează integritatea codului lor și criptează dinamic datele lor în memorie împotriva unui dump. O altă tehnică de securitate puternică este virtualizarea codului. În acest articol, vă voi arăta cum funcționează.

Cel mai bine este să înveți limba într-un proiect real, așa că atunci când m-am hotărât să experimentez cu iadul, mi-am propus o sarcină reală și interesantă: să scriu un utilitar pentru detectarea muncii într-un hipervizor. Acest lucru în sine este amuzant, iar noul limbaj de programare va aduce divertismentul la nivelul următor.

Ai dat peste diferite protocoale în viața ta de mai multe ori - ai folosit unele, altele, poate, inversate. Unele erau ușor de citit, altele nu puteau fi înțelese fără un editor hexadecimal. În acest articol, vă voi arăta cum să vă creați propriul protocol care va rula pe TCP / IP. Vom dezvolta propria noastră structură de date și vom implementa serverul în C #.

Dacă scrieți în Python, probabil că ați văzut definițiile metodelor împachetate în litere de subliniere duble în bibliotecile standard. Aceste metode „magice” formează multe dintre interfețele utile pe care le folosiți tot timpul — de exemplu, când obțineți o valoare după numărul de element sau imprimați ceva. Acum vă voi arăta cum să utilizați aceste metode și în programele dvs.

Când scrieți software care interacționează cu alte aplicații, uneori devine necesar să opriți execuția proceselor terță parte. Există mai multe metode care pot ajuta în această problemă: unele sunt bine documentate, altele încearcă să finalizeze procesele necesare în moduri mai rigide, provocând sistemul de operare să le trântească cu forța. Vă voi arăta mai multe modalități de a încheia și distruge procesele în Windows.

Limbajul, dezvoltat la ordin al Departamentului de Apărare al SUA și numit după primul programator din lume, Ada Lovelace, este folosit în mod activ pentru a controla avioane, trenuri, nave spațiale și alte lucruri interesante. Să privim limbajul fără prisma miturilor și să vedem cum putem beneficia de el, chiar dacă nu mergem încă în spațiu.

Probabil ați întâlnit emulatori de console de jocuri și, poate, chiar ați stat la ei mai mult de o oră. Dar te-ai întrebat vreodată cum funcționează? Folosind exemplul NES, cunoscut în Rusia sub numele de Dendy, vă voi arăta cum să vă creați propriul emulator. Și în același timp ne vom ocupa de arhitectura vicleană a acestei console, care a produs o imagine uimitor de bună pentru vremea ei și prețul ei modest.

Probabil ați auzit de o astfel de clasă de aplicații rău intenționate precum furătorii. Sarcina lor este să extragă date valoroase din sistemul victimei, în primul rând parole. În acest articol, voi explica exact cum o fac, folosind exemplul de extragere a parolelor din browserele Chrome și Firefox și voi arăta exemple de cod C++.

Întrebări de interviu precum „de ce capacul căminului este rotund?” - este ciudat. Foile de cod C pe care trebuie să le compilați în cap sunt plictisitoare. Cele mai interesante sarcini sunt pentru gândirea tehnică și logică generală. Și astăzi tovarășii de la compania Abbyy ne-au aruncat așa!

Abilitatea de a programa este una dintre cele mai valoroase abilități solicitate în lumea modernă. Și practic nu contează ce anume face o persoană să creeze codul: interes sincer, considerente financiare sau de carieră - cei care știu să programeze nu vor rămâne inactiv. Codarea este foarte asemănătoare cu comunicarea într-o limbă străină, așa că în primele etape ale învățării programării, începătorilor le este adesea dificil. În același timp, mulți se confruntă cu un disconfort sever, dar în timp totul se îmbunătățește și o persoană începe să codifice ușor, fără costuri mentale puternice. Astăzi puteți găsi multe cărți și resurse online cu care puteți învăța să codificați, dar orice auto-studiu este asociat cu stres și emoții negative - acest lucru trebuie amintit întotdeauna când începeți să stăpâniți un limbaj de programare. Cel mai important lucru pentru un programator incepator este sa nu renunte la invatarea unei limbi la jumatate, pierzand orice interes pentru aceasta ocupatie. Deci, ce trebuie să știe un viitor programator? Ce dificultăți îl așteaptă pe drumul spre stăpânirea abilităților utile?

Limbaje de programare

Mai întâi trebuie să vă decideți asupra limbajului de programare pe care un începător dorește să-l învețe. Nu este atât de ușor - există multe limbi și fiecare dintre ele este bună în felul său. Este foarte important să alegeți o limbă în mod conștient - la urma urmei, se va investi mult timp și efort în dezvoltarea ei. Dar oricum ar fi, un programator începător trebuie să știe că nu există limbaje de programare bune sau rele, dar există limbaje care sunt prietenoase cu neofiții. Prin urmare, cu cât limbajul de programare este mai ușor și mai ușor de înțeles, cu atât mai bine - la începutul drumului este mai bine să treci de la succes la succes, de la sarcini simple la altele mai complexe. În continuare, va fi mai ușor, după ce începătorul va învăța să codeze în primul său limbaj de programare, i se vor oferi mult mai ușor alte limbaje.

De asemenea, este foarte important să determinați imediat pentru ce trebuie să cunoașteți limba. Pentru că codarea este foarte diferită. Dacă cineva dorește să devină dezvoltator de software, atunci poți privi spre Java, iar în cazul creării de aplicații pentru iOS, limbajul Swift este mai bun.

Metodă de predare adecvată

Există multe modalități de a învăța, așa că în cazul limbajelor de programare, trebuie să găsești o metodologie potrivită. În același timp, va fi înțelept să alegeți metoda principală și să o completați cu metode de predare secundare. Totul aici este foarte individual: dacă un începător este vizual sau înțelege bine informațiile după ureche, atunci el poate învăța codificare vizionand videoclipuri pe YouTube și poate obține alte cunoștințe din cărți. Iată câteva tutoriale simple, dar eficiente:

Cursuri de codificare online. Unii oameni lucrează mai eficient atunci când li se spune ce să facă și li se verifică periodic performanța. Și există o mulțime de astfel de oameni. Prin urmare, dacă un începător simte că are probleme cu autodisciplina, atunci ar trebui să aleagă un curs în care să fie motivat constant de verificări. Este o idee bună - atât de mulți oameni renunță să învețe programarea, bazându-se pe voința și entuziasmul lor. Învățarea de codare pe cont propriu nu este pentru toată lumea, acest lucru ar trebui să fie amintit întotdeauna.

video YouTube. Astăzi, puteți afla totul despre toate doar vizionand videoclipuri pe YouTube. Codificatorii mai experimentați vă vor arăta exact ce trebuie să faceți, așa că aceste materiale sunt de mare ajutor. Este o modalitate simplă, eficientă și, cel mai important, gratuită de a învăța cum să codificați. Dacă aveți acces la internet, puteți sta, privi, repeta cel puțin toată ziua până când devine clar.

Cărți... Acesta este un mod oarecum de modă veche de a învăța limbaje de programare în zilele noastre, dar adevărul rămâne că de-a lungul anilor, codarea nu s-a schimbat prea mult și ceea ce se spune pe YouTube nu diferă cu mult de ceea ce se spune într-un carte de hârtie. Dar cărțile au un merit incontestabil - fac mai ușor de înțeles logica limbii, iar acest lucru este incredibil de important. În primul rând, pentru că atunci când vine vorba de pregătire practică, nimeni nu vrea să facă ceea ce este de neînțeles sau imposibil. Pentru a nu renunța la totul la jumătate, este imperativ să citiți cărțile de programare.

Practică. Mulți dintre cei mai buni programatori sunt autodidacți. Foarte des au început să codifice neobservați pentru ei înșiși, deoarece antrenamentul lor era întâmplător. S-au confruntat cu o problemă, au rezolvat-o, s-au confruntat cu alta - și au rezolvat-o și ei. Treptat, astfel de autodidacți trec de la o problemă la alta, mai complexă și în același timp master coding. Nu merită să imitem astfel de oameni, dar practica nu trebuie abandonată - este cheia succesului în învățare.

Remedierea succesului

Un începător, care abia începe să învețe un limbaj de programare, trebuie să știe și să fie pregătit pentru faptul că acest lucru este pentru o lungă perioadă de timp. Învățarea codificării este un proces lung în care eșecul este resimțit mult mai mult decât succesul. Pentru a nu abandona școala, este imperativ să înregistrezi toate acțiunile tale. Oamenii își pierd adesea motivația doar pentru că nu pot simți progrese. Și va fi cu siguranță dacă începătorul este angajat cu sârguință. Doar că aptitudinile cresc imperceptibil, un codificator începător poate nici să nu-l observe, cu pași atât de mici se îndreaptă spre scopul propus.

Acesta este motivul pentru care trebuie să vă amintiți din când în când cât de departe ați ajuns și să priviți mai des înapoi. Ajută foarte mult - la urma urmei, privind primele rânduri de cod, oricine poate înțelege că progresează. Toate aceste recorduri personale pot părea distractive. Nu, de fapt, înregistrarea succesului este foarte importantă - este foarte motivantă pe parcursul întregului proces de învățare. Prin urmare, pentru a începe și nu a renunța, este imperativ să marcați fiecare etapă trecută.

Condiții clare de formare

Când vine vorba de codificare, mulți începători fac o greșeală comună - încearcă să facă o grămadă de sarcini deodată și de obicei renunță la toate înainte de a termina. Devin interesați de altceva, cel mai adesea de alte sarcini, așa că sar de la un proiect la altul. Nu face asta. Cel mai bine este să vă mișcați într-un mod sistematic - pentru a rezolva o problemă sau pentru a înțelege exemplul până când totul devine clar. Este un principiu foarte simplu: câte un lucru pe rând.

Dar, în același timp, trebuie să înțelegi că este necesar să mergi înainte, așa că trebuie să-ți stabilești termene stricte pentru studiul unuia sau altul aspect al limbii. Poti incerca sa iti imaginezi ca examenul va veni in curand si va trebui sa arati tot ce ai putea realiza. Acest lucru este motivant. Da, toate aceste afaceri personale pot să nu fie foarte confortabile, dar codificarea în sine nu este distractivă. Disciplina strictă vă va permite să dobândiți abilitățile necesare, iar respectarea termenului limită este aproape cea mai importantă abilitate pentru un programator independent.

În timp ce utilizatorilor obișnuiți le este frică să facă o greșeală și o urăsc atunci când ceva nu merge bine, programatorul se află într-o poziție complet diferită. Greșelile fac parte din munca lui și o mare parte. Prin urmare, un codificator începător ar trebui să învețe singur cum să citească mesajele de eroare, indiferent cât de frustrant ar fi. Aceste mesaje conțin o mulțime de informații valoroase, deoarece vă spun ce anume a omis în procesul de creare a codului. Trebuie să fii pregătit ca astfel de mesaje să apară foarte des și să nu ajungă nicăieri chiar și după terminarea studiului limbajului de programare. Nu puteți pierde timp pentru a lucra la greșeli - aceasta este cea mai importantă parte a învățării. În plus, aceasta este o practică bună - odată ce înțelegeți problema, mai târziu va fi mai ușor să evitați multe greșeli. Raportarea erorilor nu este o pedeapsă; de fapt, ei sunt cei mai buni prieteni ai codificatorului care vor să-l învețe cum să facă totul corect.

Comunicarea cu alți programatori

O astfel de comunicare va ajuta, de asemenea, să înțelegeți că alți oameni la fel de des întâmpină probleme de codare și acest lucru nu este neobișnuit. Și dacă, în plus, un începător își poate ajuta prietenul, un programator, atunci va avea un al doilea vânt și va continua să învețe cu răzbunare. Și nu ar trebui să vă fie frică de comunicare - programatorii sunt de fapt oameni prietenoși, sunt adesea pe propria lungime de undă și un începător trebuie doar să intre în rezonanță.

Abordare corectă și greșită

Codificatorii începători încearcă adesea să copieze bucăți de cod din alte proiecte, rezolvând oricare dintre problemele lor. Ei cred că acest lucru este rezonabil, pentru că principalul lucru este să faci totul să funcționeze. Aceasta este o abordare greșită, în plus, foarte dăunătoare. Și nu pentru că copierea este proastă, ci pentru că copierea, un începător nu va înțelege ce face exact acest cod. Desigur, a copia este mult mai ușor decât a scrie totul singur.

Dar în procesul de învățare, o astfel de abordare va duce la faptul că se formează lacune mari în cunoștințe și un codificator începător va renunța într-o zi, incapabil să rezolve problema cu care se confruntă. Și va abandona totul. Învățând un limbaj de programare, trebuie să petreci timp fără regrete analizând orice problemă, chiar și la prima vedere. Și dacă nu poți veni cu o soluție imediat, nu poți renunța. Trebuie să citiți, să vizionați un videoclip, să întrebați pe alții - un începător trebuie să se ocupe cu atenție de dificultățile care au apărut. Deși învață o limbă, nu este exact același lucru cu învățarea unei limbi umane obișnuite. Un programator are de-a face cu o mașină, așa că este important pentru el să înțeleagă ce face. O astfel de cunoaștere a limbii este pur și simplu neprețuită atunci când procesul educațional vine în practică.

Învățarea limbajelor de programare nu este cel mai interesant lucru de făcut. Dar totul poate fi rezolvat dacă abordezi problema cu ficțiune. Nu există o modalitate mai bună de a învăța ceva decât jucând jocuri. Acest lucru este valabil și pentru codificare, deoarece puteți învăța rapid o limbă doar jucându-vă și îmbunătățindu-vă abilitățile în același timp. Iată câteva jocuri pe care să le verifice un programator în devenire.

  • CheckiO este un joc pe care îl puteți juca în browser și necesită rezolvarea problemelor JavaScript sau Python pentru a progresa în joc.
  • CodeMonkey - în principal pentru copii, dar dacă sunteți începător, puteți învăța ceva cod jucând acest joc.
  • Codewars nu este un joc real, ci mai degrabă o soluție colaborativă de rezolvare a problemelor pentru programatori. Aceasta este o modalitate excelentă de a stăpâni codificarea, deoarece jocul acceptă multe limbi.
  • Code Combat este o platformă online în care puteți învăța cum să codificați jucând un joc real.

Există multe alte jocuri pe care le puteți folosi, în funcție de care funcționează cel mai bine pentru dvs. și de limba pe care o învățați. Jocul va ajuta un începător să înceapă să gândească ca un programator, ceea ce este foarte important chiar la începutul învățării.

Concluzie

Unii oameni învață să codifice rapid, alții mai încet, dar oricine poate învăța să codifice. Și nu cădea în mai repede dacă ceva nu merge. Îți poți atinge scopul deplasându-te încet și, într-adevăr, orice studiu este un proces lent. Dacă un începător nu dorește să abandoneze studiul codificării, stăpânind doar elementele de bază, trebuie să-și dezvolte propria strategie de comportament. Trebuie să înțelegi că timp, efort și uneori bani sunt investiți în antrenament, așa că trebuie doar să treci de la o etapă la alta. Și nu ceda dificultăților. Da, programarea nu este pentru toată lumea. Dar oricine poate învăța o limbă, poate învăța să codifice. Așa că trebuie doar să decizi și să mergi pe propriul drum.

1. În mod independent

Dacă ai voință de fier și ești dornic să devii programator, atunci îți poți atinge scopul prin autoeducare. Aceasta nu este calea cea mai ușoară și mai scurtă: tu însuți trebuie să înțelegi haosul informațional și să te lupți cu amânarea. Dar poți studia la un moment convenabil pentru bani relativ puțini sau complet gratuit.

Cel mai ușor loc de început este cursurile interactive online. Există multe materiale pe web care explică elementele de bază ale programării și stabilesc direcția pentru dezvoltarea ulterioară. Acordați o atenție deosebită acelor cursuri care predau exemple de proiecte reale, adică vă spun pas cu pas cum să creați un anumit program sau site web.

Platforma de dezvoltare web FreeCodeCamp

Amintește-ți că nu poți face nimic fără practică. Studiați cursuri orientate spre proiecte și încercați să scrieți programele și site-urile care sunt dezasamblate în ele. Căutați prelegeri pe YouTube despre proiectele pe care ați dori să le dezvoltați. În primul rând, copiați munca altora și analizați-o. Apoi încercați să vă îndepărtați de original, experimentați, schimbați elementele individuale până când puteți crea ceva unic.

Pe lângă cursuri și prelegeri video, veți găsi documentație oficială disponibilă pe site-urile web lingvistice și. Când obțineți elementele de bază, căutați cele mai recente titluri de cele mai bune practici pentru limbajul dvs. de programare. Aceste cărți conțin cele mai bune tehnici de design.

Asigurați-vă că vă stabiliți un obiectiv pentru a vă crea proiectul și a lucra constant la el.

Acest lucru va ajuta la consolidarea cunoștințelor acumulate și la înțelegerea informațiilor care vă mai lipsesc. Abilitățile dumneavoastră se vor dezvolta odată cu proiectul. Când îl termini, lucrează la unul nou, mai complex.

Dacă aveți dificultăți în procesul de învățare sau dezvoltare, puteți oricând să apelați la comunități de programare precum Toaster și Stack Overflow pentru orice întrebare. De exemplu, vă vor ajuta să rezolvați o problemă, să alegeți un curs bun sau să semnalați erorile din cod.


Serviciu de întrebări și răspunsuri pe teme tehnologice „Pâine de pâine”

Este convenabil să perfecționezi abilitățile pe site-uri speciale unde poți concura cu alți programatori rezolvând diverse probleme practice cu ajutorul codului. Aceste servicii includ Codewars, TopCoder și HackerRank.

Dacă simțiți că dezvoltarea dvs. este în impas sau doriți să vă accelerați învățarea, încercați următoarele opțiuni.

2.Cu ajutorul unui mentor

Un mentor este un mentor personal care subliniază greșelile, avertizează asupra capcanelor, ajută la ghidarea cursului. O recomandare utilă, primită la momentul potrivit, vă poate scuti de multe probleme și vă poate economisi mult timp. Prin urmare, un mentor nu va deranja pe nimeni.

Aflați dacă există dezvoltatori pe care îi cunoașteți. Poate unul dintre ei va dori să te ajute. Dacă nu cunoști astfel de oameni, îi poți căuta în comunitățile de programare. De exemplu, pe același „Toaster”. Numai serviciile de mentorat nu sunt ieftine și nimeni nu vrea să petreacă mult timp cu străini doar așa.

3. La profesori de cursuri „live”.

Cursurile la distanță și față în față cu instructori care formează programatori de la zero au devenit incredibil de populare în ultimii ani. În acest format, trebuie să lucrezi mult și pe cont propriu. Dar vei studia conform unui program pregătit profesional, iar o persoană reală va verifica soluția problemelor. Dezavantajele cursurilor includ costul ridicat al instruirii.

Platforme online populare în limba rusă care sunt implicate în formarea sistemică a programatorilor: Netology, GeekBrains și Loftschool.

Dacă preferi să studiezi intern, poți căuta centre educaționale care predau programare în localitatea ta. Din păcate, astfel de unități sunt prezente cel mai adesea doar în orașele mari. Un exemplu este academia de informatică „STEP”, care are filiale în mai multe țări.

4. La universitate

Dacă îți mai rămâne mult timp și ești sigur că vrei să-ți conectezi viața cu programarea, poți studia informatica la universitate. Dar rețineți că instituțiile de învățământ tradiționale sunt în urmă cu progresul, așa că va trebui să stăpâniți pe cont propriu limbaje de programare moderne și alte tehnologii.

Pe de altă parte, universitatea va oferi cunoștințe fundamentale de matematică, algoritmi și alte domenii care vă vor ajuta să deveniți un programator de înaltă calitate. De-a lungul anilor de studiu sârguincios, îți vei dezvolta mentalitatea potrivită, datorită căreia vei înțelege totul din mers în domeniul profesional.

Cum să alegi direcția și limba

Există mai multe direcții în industria IT, fiecare dintre ele utilizând propriul set de limbi. Să enumerăm principalele direcții în ordinea creșterii complexității:

  1. dezvoltare web... Limbi populare: JavaScript, PHP, Python, Ruby.
  2. Dezvoltare mobilă... Limbi populare: Java, Swift.
  3. Dezvoltare de jocuri și programe pentru computere desktop... Limbi populare: C++, C #, C.
  4. Big Data, machine learning... Limbi populare: Python, R, Scala.

Ce să cauți atunci când alegi

Pentru a face alegerea corectă a direcției și, în special, a limbii, luați în considerare următorii factori: complexitatea stăpânirii și cantitatea de materiale de instruire de pe Web, preferințele dvs. personale (ce anume doriți să dezvoltați) și cererea de limbă pe piaţa muncii.


Graficul cererii de limbi pe piața internațională a muncii / research.hackerrank.com

Cererea de limbă din regiunea dvs. este ușor de verificat pe site-urile de căutare de locuri de muncă. Doar deschideți secțiunea pentru dezvoltatori de software și vedeți numărul de posturi vacante disponibile.

Dacă nu te poți decide

Dacă sunteți confuz, aruncați o privire mai atentă la JavaScript - limbajul în care este scris aproape întregul web. Multe organizații și programatori îi sfătuiesc pe începători să aleagă această limbă ca primă limbă.

De exemplu, Quincy Larson, fondatorul resursei educaționale freeCodeCamp, este JavaScript pentru toți începătorii. Larson aduce argumente foarte simple:

  1. JavaScript este relativ ușor de învățat. Și pentru a scrie ceva și a-l rula în această limbă, trebuie doar să ai un editor de cod și un browser.
  2. JavaScript este limba cea mai solicitată pe piața internațională a muncii și are perspective mari. Companii mari precum Google, Microsoft și Facebook investesc în ecosistemul JavaScript.
  3. JavaScript are o gamă foarte largă de aplicații: de la site-uri web și jocuri cu browser până la aplicații mobile.

În plus, în jurul acestui limbaj s-a format o mare comunitate de dezvoltatori. Interesul ridicat pentru JavaScript oferă un număr mare de cursuri, cărți și alt conținut educațional.

Ce altceva ar trebui să știe un programator: matematică și engleză?

Orice programator va beneficia de o înțelegere profundă. Pentru lucruri precum grafica jocului sau big data, o minte matematică este o necesitate. Dar în ceea ce privește dezvoltarea web și crearea de programe simple, în cele mai multe cazuri te poți descurca fără matematică. Deși nu există un consens între profesioniști în această chestiune.

Dar înțelegerea limbii engleze, cel puțin la nivelul de citire fluentă a documentației, este o necesitate pentru toți programatorii. Documentele oficiale și majoritatea materialelor educaționale apar în principal în limba engleză. sunt adesea învechite chiar înainte ca traducerea să fie lansată. În plus, cunoașterea limbii engleze deschide perspective pentru a lucra cu întreaga lume.

Cum să obțineți prima experiență și primul loc de muncă

Pentru a-ți găsi primul loc de muncă ca programator, trebuie să ai un portofoliu. Acesta este un proiect pe care l-ați creat, sau mai degrabă mai multe, care vă demonstrează toate abilitățile de dezvoltator. Majoritatea cursurilor includ dezvoltarea de proiecte care se pot încadra în portofoliul tău.

Experiența de lucru, în special dezvoltarea echipei, va fi un element foarte valoros pe un CV. Dar de unde îl poți obține dacă îți cauți primul loc de muncă?

  1. Finalizați mai multe comenzi pentru. Poate fi Freelance sau Upwork. Oferă-ți serviciile gratuit, atunci primii clienți vor veni la tine.
  2. Găsiți oameni cu gânduri similare și creați un proiect comun cu ei. Oamenii se unesc în astfel de scopuri la aproape fiecare site educațional unde există cursuri de programare.
  3. Selectați cursuri pe care organizatorul le ajută la angajare. De exemplu, în GeekBrains, după antrenament, se deschide accesul la stagii de practică de la diverse companii, inclusiv plătite. GeekUniversity și STEP garantează angajarea absolvenților lor.

Înainte, nu uitați să căutați pe Web liste de sarcini și întrebări care sunt adesea adresate persoanelor aflate în căutarea unui loc de muncă.