Se poate trece la capitolul următor cu tasta ► și se poate reveni la un capitol precedent cu tasta ◄

Ce este un programator bun?


<

C
a
p
i
t
o
l
u
l

a
n
t
e
r
i
o
r

<

Ca în fiecare activitate există persoane mai bine sau mai puțin bine pregătite să o facă. Timpul dezvoltă experiența însă asta e tot ce înseamnă să fii un programator bun?

Nu limbajul de programare contează. Gândirea contează.

Am văzut că multă lume întreabă cu ce limbaj de programare merită să înceapă. Unii au auzit că C++ e mișto, alții că Java e la modă sau că faci mulți bani cu PHP.

Din fericire nici unul nu e mai șmecher decât celelalte. Șmecher e ce se află în spate. Fiecare limbaj de programare are felul său aparte de a face un lucru. Ca în cazul limbilor străine, unele sunt mai ușoare, altele mai grele. Pisică în engleză e cat, în germană e Katze sau în rusă e кошка. Se citește koșca.

În primele două limbi e mai ușor de reținut, într-a treia e alt alfabet, nu că ar fi greu de pronunțat. Așa e și cu limbajele de programare. Unele sunt mai ușor de învățat, altele sunt mai grele. Însă în toate vei putea face aceleași lucruri cum orice limbă vei folosi, vei știi cum să zici la pisică. Important e să știi despre pisici sau cărți sau copaci căci altfel vei ști o limbă pe care nu o vei folosi oricum.

Și atunci ce să învăț?

Din fericire programarea se învață punând în practică. Nu trebuie să tocești cărți întregi sau să reții mii de termeni. Totul se învață practicând. Învață despre variabile, vectori, matrici, structuri de date, funcții și proceduri, clase, thread-uri, fork, pipes, sockets, învață despre sortare, căutare, despre pointeri, liste înlănțuite, despre divide et impera, grafuri, backtracking, algoritmi genetici, despre toate astea în orice limbaj de programare vrei.

De-a lungul timpului limbajul de programare să fie doar o unealtă. Un limbaj de programare e mai bun decât altul într-o anumită situație. Alteori nu. Și știind partea „teoretică” din spate, îți va lua oricum foarte puțin să înveți un alt limbaj (câteva ore).

Înveți C++, o să înțelegi foarte repede și Java și PHP. Sau invers. Nu contează.

Și asta o să mă facă un programator bun?

Nu chiar. O să te facă un programator dar mai e ceva. Scurtăturile. Adică matematică.

Mate-naiba-matica?

Știu, am detestat-o dintotdeauna fiindcă a fost predată prost. Toată lumea cu „matematica îți dezvoltă logica” sau ceva tâmpenie similară. La liceu scriam caiete întregi de demonstrații ale unor lucruri predate pentru olimpici pe care nu le-am folosit niciodată. Sau da?

Nimeni nu îți spune că demonstrațiile sunt gunoi. Să demonstrezi ceva care deja e dovedit adevărat e inutil. Însă acel adevăr demonstrat este partea importantă. Uite un exemplu clar:

Se cere suma a primelor 1000 de numere. Ca programator începi să calculezi 1 cu 2 cu 3 cu... Până la o mie.

Ca programator bun știi o „scurtătură”. Suma a n numere e n ori n + 1 pe 2. Adică suma a primelor 1000 de numere este 1000 ori 1001 împărțit la doi, care e 1 001 000 / 2 = 500 500.

Până și rezolvarea pe hârtie e mai rapidă decât să tot aduni numere.

Exact la asta e bună matematică. Nu învăța demonstrațiile. Învață formulele. Și nu toate deodată. Una pe zi, una pe săptămână, formulele nu sunt un infinit. Sunt și ele câteva. Însă dacă le știi (și nici măcar dacă le știi pe toate, doar câteva) ești mai bun decât 90% din programatori.

Asta e tot, să știu formule de mate?

Mai este un singur lucru. Multe limbaje de programare au funcții predefinite pentru diferite lucruri. Hai să zicem că un oarecare limbaj de programare are o funcție de sortare a elementelor unui vector. Din vector = {1, 3, 2} zici sort(vector) și îți scoate {1, 2, 3}. Gata, am terminat, ce mai vrei?

Nu te grăbi. Sortarea unui vector are un algoritm optim. Mai bine nu se poate. E demonstrat și răsdemonstrat. Și tu poți să-l înveți fără nici o problemă, dar oare programatorul ăla care a scris funcția sort l-a folosit? Dacă el a folosit alt algoritm mai încet?

Ca programator bun trebuie să știi că uneori nu totul este ceea ce pare, uneori trebuie să scrii tu codul pentru ceva care deja există. Doar că e prost făcut.

De asemenea poți să ai două funcții care fac același lucru. La prima vedere nu contează pe care o folosești. Însă poți testa. Poți rula fiecare funcție de un milion de ori și să vezi cât durează.

Te poți trezi că prima durează 0.3 secunde și a doua ține 3 secunde și ceva. Da, una e de 10 ori mai rapidă decât cealaltă.

 

Acestea sunt trăsăturile ce diferențiază un programator de un programator bun. Scopul unui program este să rezolve problema cât mai rapid și nu de puține ori știind o astfel de „șmecherie”, poți atinge acest scop.

Nu toată lumea caută astfel de oameni. Nu toată lumea apreciază că programul făcut de tine durează cu o miime de secundă mai puțin decât unul făcut de altcineva. Iar cel care caută astfel de persoane nu deseori este să dispus să plătească mai mult pentru aceasta. Este o decizie personală și uneori asta înseamnă nu numai un salar mai mare, ci și o viață mai bună pentru noi toți.


>

C
a
p
i
t
o
l
u
l

u
r
m
ă
t
o
r

>

Ți-a fost de ajutor ce am scris aici?
Hei, mersi de răspuns.