16th Mar 2008
Know your low-level
De multe ori ne-am intrebat la facultate sau liceu de ce invatam niste lucruri (uneori teoretice) pe care nu prea le vom folosi. De multe ori acele lucruri sunt introduceri catre niveluri inalte de cunoastere a unui limbaj, calculator sau a unei materii.
De abia prin anul 2 de facultate am inceput sa invatam cateva lucruri de nivel scazut legat de calculatoare: assembly, achizitii de date, aritectura calculatoarelor, retele de calculatoare. Sa stii cum lucreaza o functie, o comanda sau un protocol te ajuta foarte mult sa eviti bottleneck-uri, sa-ti optimizezi codul sau sa folosesti comenzile cele mai optime pentru operatiile potrivite.
Spre exemplu daca vreti sa inmultiti un numar cu o putere de a lui 2 e mai usor si mai optim sa lucrezi cu operatori pe biti: >> <<:
X << 5 este acelasi lucru cu X=X*2^5. Invers, X >> 5 rezulta in X = X/2^5. Asta fiindca in binar deplasarea la stanga cu o cifra a unui numar inseamna inmultirea acelui numar cu 2 (identic si in sistemul zecimal, unde deplasarea la stanga inseamna inmultire cu 10).
In domeniul retelelor de calculatoare afli cum functioneaza metodele de detectare si corectie a erorilor ceea ce te vor ajuta mai tarziu daca doresti sa dezvolti un algoritm de criptare.
Trebuie si sa stii cum sa folosesti optim resursele calculatorului, cum functioneaza garbage collectorul limbajului pe care-l folosesti, daca chiar trebuie sa folosesti int in loc de char sau chiar byte, ce sunt indexii in domeniul bazelor de date, cum functioneaza si cum sa-i folosesti.
Trebuie sa-ti cunosti mediul ca sa-l folosesti optim si ca sa supravietuiesti.
De multe ori ne-am intrebat la facultate sau liceu de ce invatam niste lucruri (uneori teoretice) pe care nu prea le vom folosi. De multe ori acele lucruri sunt introduceri catre niveluri inalte de cunoastere a unui limbaj, calculator sau a unei materii.
De abia prin anul 2 de facultate am inceput sa invatam cateva lucruri de nivel scazut legat de calculatoare: assembly, achizitii de date, aritectura calculatoarelor, retele de calculatoare. Sa stii cum lucreaza o functie, o comanda sau un protocol te ajuta foarte mult sa eviti bottleneck-uri, sa-ti optimizezi codul sau sa folosesti comenzile cele mai optime pentru operatiile potrivite.
Spre exemplu daca vreti sa inmultiti un numar cu o putere de a lui 2 e mai usor si mai optim sa lucrezi cu operatori pe biti: >> <<:
X << 5 este acelasi lucru cu X=X*2^5. Invers, X >> 5 rezulta in X = X/2^5. Asta fiindca in binar deplasarea la stanga cu o cifra a unui numar inseamna inmultirea acelui numar cu 2 (identic si in sistemul zecimal, unde deplasarea la stanga inseamna inmultire cu 10).
In domeniul retelelor de calculatoare afli cum functioneaza metodele de detectare si corectie a erorilor ceea ce te vor ajuta mai tarziu daca doresti sa dezvolti un algoritm de criptare.
Trebuie si sa stii cum sa folosesti optim resursele calculatorului, cum functioneaza garbage collectorul limbajului pe care-l folosesti, daca chiar trebuie sa folosesti int in loc de char sau chiar byte, ce sunt indexii in domeniul bazelor de date, cum functioneaza si cum sa-i folosesti.
Trebuie sa-ti cunosti mediul ca sa-l folosesti optim si ca sa supravietuiesti.
Posted by Auras under
Uncategorized
3 Comments »
