Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
PC game stream catre Nvidia Shiel...

Pompa de apa HEPU ?!

Vreau o masina electrica de tocat...

Cum ajunge remorca de tir inapoi ...
 Alt "Utilizator nou" pe T...

ULBS INFORMATICA

Index preturi

Boxa membrana tweeter infundata
 Am nevoie de poze cu un curcubeu

Whisky for Mac

Xiaomi 14 Gpay

Izolare zid exterior de scandura
 Dezinstalare drivere W11 23H3

Recomandare masina de spalat fiab...

BSOD din cauza Intel Audio DSP dr...

De ce sunt oamenii nostalgici
 

Cati programatori stiu sa programeze?

- - - - -
  • Please log in to reply
77 replies to this topic

#1
Shinji

Shinji

    Member

  • Grup: Members
  • Posts: 386
  • Înscris: 04.04.2005
Dupa multi ani m-am angajat din nou la prima mea firma, o corporatie care angajeaza o gramada de programatori. In Romania, ca sa fie clar. Eram constient ca o sa dau de cod prost, dar sincer mi-a depasit asteptarile. Oameni cu peste 10 ani de experienta scriu cod la nivel de student care de abia invata cu ce se manaca treaba asta.

Exemplu de azi:
if (a && b )
{
}
else
{
   *do stuff here*
}

Avem deci un if care nu face nimic daca e adevarata conditia si tot codul util e pe else. Stiu ca primul lucru la care te gandesti e ca a fost candva cod util si atunci cand se indeplinea conditia, dar nu e cazul. L-am intrebat pe autor (senior programmer cu 15 ani de experienta) si mi-a zis ca i s-a parut ca se intelege mai usor asa codul decat daca ar transforma conditia din if. Daca ar fi un caz singular as zice ca na, se mai intampla sa dai si de prosti, dar tot codul e plin de functii care au fiecare macar 500 de linii, variabile numite "data" sau "temp", magic numbers etc etc.

Ca sa revin la subiectul principal, am lucrat inainte in cateva alte firme, printre care una de 5 persoane unde ma consideram cel mai slab din echipa. Si intrebarea mea e, dintre cei care sunt angajati ca programatori in Romania (indiferent daca au sau nu diploma in domeniu), ce procentaj credeti ca stiu elementele de baza a programarii. Cat sa nu faca greseli elementare de logica, sa nu puna magic numbers in cod, sa stie ca in principiu o functie trebuie sa faca un singur lucru, sa inteleaga ce-i aia polimorfism, ce-i aia un pointer daca lucreaza in C/C++ etc Nu chestii avansate, nu genii. Doar fara huge WTFs.

#2
pasilla

pasilla

    Superior Member

  • Grup: Senior Members
  • Posts: 55,778
  • Înscris: 31.03.2012
Mie imi vine greu sa cred ca cineva ar face asa ceva:
if (a && b )
{
}
else
{
*do stuff here*
}


Poate doar pentru vreo testare.

Edited by pasilla, 03 July 2018 - 20:56.


#3
james_tont89

james_tont89

    Member

  • Grup: Members
  • Posts: 704
  • Înscris: 25.11.2015
nu am inteles ce ai scris dar mi-a placut cum a sunat

#4
Shinji

Shinji

    Member

  • Grup: Members
  • Posts: 386
  • Înscris: 04.04.2005

 pasilla, on 03 iulie 2018 - 20:55, said:

Mie imi vine greu sa cred ca cineva ar face asa ceva:

Poate doar pentru vreo testare.
Vrei sa-ti dau alt exemplu? Am vazut o lista dublu inlantuita care avea noduri cu trei pointeri: previous, next si me. Mi-a venit greu si mie sa cred, dar "me" era de fapt un pointer la nod in sine. Ca sa fie si mai clar, nodul era o structura care avea un membru pointer catre el insusi.

Edited by Shinji, 03 July 2018 - 21:04.


#5
Lex404

Lex404

    Guru Member

  • Grup: Moderators
  • Posts: 35,484
  • Înscris: 19.04.2009
Acum am aflat si eu de ce jocurile de la Ubisoft si EA sunt atat de prost optimizate...

#6
WinstonMontana

WinstonMontana

    Active Member

  • Grup: Members
  • Posts: 1,913
  • Înscris: 20.02.2018

 Shinji, on 03 iulie 2018 - 20:48, said:

Dupa multi ani m-am angajat din nou la prima mea firma, o corporatie care angajeaza o gramada de programatori. In Romania, ca sa fie clar. Eram constient ca o sa dau de cod prost, dar sincer mi-a depasit asteptarile. Oameni cu peste 10 ani de experienta scriu cod la nivel de student care de abia invata cu ce se manaca treaba asta.

Exemplu de azi:
if (a && b )
{
}
else
{
   *do stuff here*
}
Avem deci un if care nu face nimic daca e adevarata conditia si tot codul util e pe else. Stiu ca primul lucru la care te gandesti e ca
atunci cand faci cod review sau te uiti pe un cod mai vechi( de cativa ani) dupa 6 ore de munca a citi o conditie care incepe cu negatie este mult mai greoaie decat
a citii conditia directa.In plus, in peste 90 % din cazuri , creierul sare automat peste ! si din oboseala citesti conditia taman inversa inversului conditiei.
Noi avem specificatii in acest sens, adica nu avem voie sa incep o conditie cu NOT sau ! , ci fie refacem logica astfel incat condiftia din if sa se evalueze catre TRUE
La fel si la SQL , fara negatii in conditii de join

Astfel de cod intalnesti acolo unde lizibilitatea primeaza si de obicei este facut pentru profesionisti ca sa nu-si primeasca injuraturi.
E ok codul.

Edited by WinstonMontana, 03 July 2018 - 21:35.


#7
UlrichVans

UlrichVans

    Active Member

  • Grup: Members
  • Posts: 1,091
  • Înscris: 28.06.2018
Sunt chestii pe care le inveti daca studiezi serios individual din carti bune(ceea nu foarte multi fac). La facultate putin probabil sa auzi de magic numbers si altele de genul(probabil doar daca ai profesor si/sau colegi foarte buni).

Sa denumesti variabile locale tmp/temp nu e o greseala, de fapt e chiar foarte bine daca asta e rolul variabilei(de a tine temporar o valoare - de ex. la un swap sau ceva de genul).

#8
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,599
  • Înscris: 30.07.2003

 Shinji, on 03 iulie 2018 - 20:48, said:

ce procentaj credeti ca stiu elementele de baza a programarii.
Vei intalni fel si fel, nu esti nici primul si nici ultimul. Ia-o ca atare, degeaba facem aici teoria chibritului.

#9
MembruAnonim

MembruAnonim

    MembruAnonim

  • Grup: Banned
  • Posts: 398,284
  • Înscris: 08.10.2015

 Shinji, on 03 iulie 2018 - 20:48, said:

Dupa multi ani m-am angajat din nou la prima mea firma, o corporatie care angajeaza o gramada de programatori. In Romania, ca sa fie clar. Eram constient ca o sa dau de cod prost, dar sincer mi-a depasit asteptarile. Oameni cu peste 10 ani de experienta scriu cod la nivel de student care de abia invata cu ce se manaca treaba asta.

Exemplu de azi:
if (a && b )
{
}
else
{
   *do stuff here*
}

Avem deci un if care nu face nimic daca e adevarata conditia si tot codul util e pe else. Stiu ca primul lucru la care te gandesti e ca a fost candva cod util si atunci cand se indeplinea conditia, dar nu e cazul. L-am intrebat pe autor (senior programmer cu 15 ani de experienta) si mi-a zis ca i s-a parut ca se intelege mai usor asa codul decat daca ar transforma conditia din if. Daca ar fi un caz singular as zice ca na, se mai intampla sa dai si de prosti, dar tot codul e plin de functii care au fiecare macar 500 de linii, variabile numite "data" sau "temp", magic numbers etc etc.

Ca sa revin la subiectul principal, am lucrat inainte in cateva alte firme, printre care una de 5 persoane unde ma consideram cel mai slab din echipa. Si intrebarea mea e, dintre cei care sunt angajati ca programatori in Romania (indiferent daca au sau nu diploma in domeniu), ce procentaj credeti ca stiu elementele de baza a programarii. Cat sa nu faca greseli elementare de logica, sa nu puna magic numbers in cod, sa stie ca in principiu o functie trebuie sa faca un singur lucru, sa inteleaga ce-i aia polimorfism, ce-i aia un pointer daca lucreaza in C/C++ etc Nu chestii avansate, nu genii. Doar fara huge WTFs.

Programarea nu inseamna sa stii mii de limbaje de programare, sa le inveti pederost, sau sa stii C++ , C#  perfect.
Programarea inseama sa stii sa rezolvi problema incepand de la limbajul pseudocod.
Abia dupa ce ai toate etapele necesare poti implementa condul in orice limbaj de programare in functie de necesitati.
Trebuie sa alegi limbajul de programare diferit pentru fiecare situatie.
Fiecare limbaj de programare fie interpretat fie compilat a fost gandit sa fie util doar pentru anumite situatii.
Nu incerca sa retii pederost tot ce prinzi, exista documentatie pentru fiecare limbaj de programare.

Din proprie experienta nu exista nici programator prost nici programator bun, si nici unul nu e mai presus decat celalat.
Cine incearca sa te injoseasca spunandu-ti ca esti un programator prost greseste. Si el la randul lui nu stie anumite lucruri pe care poate tu le stii, si el la randul lui stie anumite lucruri pe care tu nu le stii.

Edited by adiatric, 03 July 2018 - 21:38.


#10
Shinji

Shinji

    Member

  • Grup: Members
  • Posts: 386
  • Înscris: 04.04.2005

 WinstonMontana, on 03 iulie 2018 - 21:19, said:

atunci cand faci cod review sau te uiti pe un cod mai vechi( de cativa ani) dupa 6 ore de munca a citi o conditie care incepe cu negatie este mult mai greoaie decat
a citii conditia directa.In plus, in peste 90 % din cazuri , creierul sare automat peste ! si din oboseala citesti conditia taman inversa inversului conditiei.
E desigur de preferat sa nu ai o conditie care incepe cu negatie. Dar de aici si pana la face un if doar pentru ramura de else e cale lunga. Si sper ca nu vorbesti serios cand spui ca in 90% din cazuri o sa ratezi negatia cand esti obosit.

Quote

Sa denumesti variabile locale tmp/temp nu e o greseala, de fapt e chiar foarte bine daca asta e rolul variabilei(de a tine temporar o valoare - de ex. la un swap sau ceva de genul).
Intr-o functie de 3 linii care face un swap, da, merge un temp. Dar  cand ai o functie de 1000 de linii in care ai temp, tmp, t, tt etc it gets tricky...

Edited by Shinji, 03 July 2018 - 21:38.


#11
MembruAnonim

MembruAnonim

    MembruAnonim

  • Grup: Banned
  • Posts: 398,284
  • Înscris: 08.10.2015
Diferenta de superioritate a dus la ceea ce se observa pe piata.
Poate nu se observa pe piata, dar incepe sa se revina la vechiul stil de progamare in C, C++, Java, probabil va intrebati de ce.

#12
WinstonMontana

WinstonMontana

    Active Member

  • Grup: Members
  • Posts: 1,913
  • Înscris: 20.02.2018

 Shinji, on 03 iulie 2018 - 21:38, said:

E desigur de preferat sa nu ai o conditie care incepe cu negatie. Dar de aici si pana la face un if doar pentru ramura de else e cale lunga.
Nu e, e chiar scurta. O alta varianta ar fi fost sa incepa cu afirmatia insa sa inverseze logica , fapt care este mai greu decat doua acolade goale.

Quote

Si sper ca nu vorbesti serios cand spui ca in 90% din cazuri o sa ratezi negatia cand esti obosit.
Ba da, si din cate imi dau seama cei pe care ii critici sunt mult mai inteligenti decat ii crezi tu  (cine stie s-ar putea sa pleci iarasi ) =))

Raspunde la intrebare te rog: exemplu de polimorfism din lumea reala .

Edited by WinstonMontana, 03 July 2018 - 21:46.


#13
MembruAnonim

MembruAnonim

    MembruAnonim

  • Grup: Banned
  • Posts: 398,284
  • Înscris: 08.10.2015

 UlrichVans, on 03 iulie 2018 - 21:20, said:

Sunt chestii pe care le inveti daca studiezi serios individual din carti bune(ceea nu foarte multi fac). La facultate putin probabil sa auzi de magic numbers si altele de genul(probabil doar daca ai profesor si/sau colegi foarte buni).

Sa denumesti variabile locale tmp/temp nu e o greseala, de fapt e chiar foarte bine daca asta e rolul variabilei(de a tine temporar o valoare - de ex. la un swap sau ceva de genul).
Acum se folosesc variabile dinamice.
Nu mai zic cat timp se economiseste , fara prea multe greseli.

#14
WinstonMontana

WinstonMontana

    Active Member

  • Grup: Members
  • Posts: 1,913
  • Înscris: 20.02.2018

 adiatric, on 03 iulie 2018 - 21:44, said:

Diferenta de superioritate a dus la ceea ce se observa pe piata.
Poate nu se observa pe piata, dar incepe sa se revina la vechiul stil de progamare in C, C++, Java, probabil va intrebati de ce.
ba se observa,

#15
StefanSC

StefanSC

    Senior Member

  • Grup: Senior Members
  • Posts: 4,730
  • Înscris: 02.07.2011
Felicitari... ai aflat ca programatorii romani sunt asa iubiti in Vest pentru ca sunt ieftini, vorbesc engleza inteligibil si sunt relativ aproape (comparat cu China sau India) :D. Dar nu pentru ca sunt buni.

Apuca-te sa tii interviuri si o sa ai un soc (eu am crezut mereu ca sunt un programator slab pana cand am tinut cateva interviuri... :D am prins curaj).

General vorbind insa, e o problema care tine de industrie... nu de Romania... termene prea stranse, code reviews prea lejere sau prea rapide, cerere prea mare de oameni si prea putin timp sa faci cod lizibil si usor de modificat in timp. Plus ca undeva la 50% din programatori sunt autodidacti si de aici o gramada de carente.

#16
daybreak246

daybreak246

    Member

  • Grup: Members
  • Posts: 668
  • Înscris: 05.07.2014
Nu ca vreau sa zic, dar iar vin si spun ce am zis deja aici
Pare-se ca mi se confirma si din breasla ceea ce am vazut eu de mult timp

Edited by daybreak246, 03 July 2018 - 21:52.


#17
WinstonMontana

WinstonMontana

    Active Member

  • Grup: Members
  • Posts: 1,913
  • Înscris: 20.02.2018

 daybreak246, on 03 iulie 2018 - 21:52, said:

Nu ca vreau sa zic, dar iar vin si spun ce am zis deja aici
Pare-se ca mi se confirma si din breasla ceea ce am vazut eu de mult timp
ce ai vazut ? Zi-ne si noua ce ai vazut .

#18
Shinji

Shinji

    Member

  • Grup: Members
  • Posts: 386
  • Înscris: 04.04.2005

 StefanSC, on 03 iulie 2018 - 21:47, said:

General vorbind insa, e o problema care tine de industrie... nu de Romania... termene prea stranse, code reviews prea lejere sau prea rapide, cerere prea mare de oameni si prea putin timp sa faci cod lizibil si usor de modificat in timp.
Sunt si situatii in care timpul e critic, dar astea sunt mult mai rare decat par cand asculti managerii. In practica, timpul "economisit" scriind cod greu lizibil si fusarit e pierdut ulterior multiplicat de multe ori, ca sa nu mai vorbim de stress si nervii pierduti cand trebuie sa lucrezi cu codul aiurea.

Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate