Cariera de programator

Ce a ajuns C+±ul. Să trebuiească să pui const să arăți că nu modifici un parametru de intrare. Ț, ț, ț.

Pai si asta nu e bine? Ţine loc de documentaţie şi ajuta enorm la “maintainabilitate” :slight_smile:

EDIT: Uite, faptul ca in PHP nu exista deja celebrul qualifier da niste probleme:

  1. Toate argumentele trebuie pasate “by value”, deci functia primeste o copie. Daca am un string de 100 MB, PHP-ul va duplica acel string, consumand inca 100 MB. Wrong, doar se incrementează o referinţă.

  2. Exista o inconsecventa. Fara sa te intrebe, PHP-ul paseaza argumentele de tip obiect “by reference” si nu exista nicio posibilitate sa impiedici functia apelata sa modifice obiectul respectiv (in afara duplicarii manuale).

Mă înşel?

NOTĂ: Dap, mă inşel. Cum era şi logic, intern PHP foloseste reference counting, detalii si aici. A mai ramas doar misterul passing-ului by reference pentru obiecte :slight_smile:

ERATA: doar daca nu cumva PHP-ul e deştept si foloseste mecanismul COW, duplicand contentul doar cand variabila ar urma sa fie modificata. Asta merita studiat.

1 Like

You know how it is, I know what I write and I don’t mess with other people’s code no matter how messy it is. Especially if it’s messy. I just write my own subsystem.

Anyway, ce ajută la ușurința citiri codului e o instrucțiune pe linie ( pe lângă const în cazul C-ului, să nu credeți că am ceva cu el):

  • x = new Object();
  • x->setSomething(1);
  • x->addSomething(2);

mai degrabă decât:

  • x = new Object()->setSomething(1)->addSomething(2);

You get my drift.

Iar când scriu funcții/metode în PHP, ceea ce e tot timpul, o fac în stil C. Variabilele de intrare nu se modifică ever. Fiecare funcție întoarce ceva. Un int, un string, un boolean. Ceva.

Ideea e ca nu poti sa rescrii absolut tot si sa nu folosesti nimic facut de altii. La un moment dat tot de vei baza pe cod scris de altcineva si atunci te rogi sa fie cod scris de cineva responsabil :slight_smile: Asa de exemplu, ce rost mai au modificatorii protected si private. Sa facem toti membrii publici si cu asta basta, ce atâtea complicaţii?

In ceea ce priveste returnatul, nu intotdeauna e atat de simplu. Uneori (de fapt frecvent) este nevoie sa returnezi una sau mai multe informatii (diferite) simultan si nu prea ai cum s-o faci cu return.

De exemplu, ia varianta cea mai simpla, read(). Trebuie sa intorci si datele citite in sine, dar si numarul de octeti receptionati. Eventual si un cod de eroare, daca apare vreuna. Sigur, toate chestiile astea se pot incapsula si intr-o structura dar poate nu vrei sa te complici cu structuri suplimentare.

Sau mai sunt limitari ale limbajului/framework-ului, de exemplu in PHP daca vrei sa modifici item-urile unui array cu ajutorului lui array_walk() ai nevoie de o functie-callback care primeste ca argument o referinta modificabila.

Sunt jdemii de situatii posibile, iar un cod scris responsabil te poate scuti de foarte multe batai de cap…

Toată lumea deviază de la subiect, cu mult… nimeni nu i-a oferit vreun răspuns clar băiatului la întrebare…

La prima întrebare, recunosc că nu știu, dar părerea mea e că vrei să faci ceva pe desktop & gaming, eu zic că ar trebui să încerci ceva pe cont propriu (sa faci jocuri indie).

Părerea multora în general, cel mai ușor limbaj pentru newbies e Python. Și partea cool la limbajul ăsta, e că poți face atât aplicații web cât și desktop. Sau poți învăța Lua și să folosești framework-ul Lua Love 2D (creezi jocuri foarte cool cu el, gen Move or die. Fun fact: e făcut de românii noștri și chiar e foarte foarte reușit și apreciat). După ce înveți unul din ele, poți învăța Ruby, care e un limbaj back-end… partea foarte foarte tare la acest limbaj e Ruby on rails (framework) cu care creezi un site extrem de repede (faci un site like Reddit în 3 ore maxim).

La a treia întrebare, nu.

1 Like

Yup, s-a deviat rau-rau de tot pe thread-ul asta. Un preview la cam cum decurg discutiile in domeniu :smiley:

In principiu domeniul IT e de viitor si e o paine de mancat pentru toata lumea. Nu gresesti daca vrei sa te apuci de programare.[1] Cam peste tot in lume e lipsa de programatori, iar treaba asta pare o sa continue o buna bucata de vreme[2]. Asa ca riscul sa te bagi in domeniu iar el sa dispara sau sa devina supra saturat pana apuci sa faci ceva este destul de mic.

Ca si extra, din cauza ca este o lipsa de oameni / oameni calificati, este mai mult sau mai putin un seller’s market. Pe langa salarii mari, sunt pachete de beneficii atractive, programe mai lejere si in general angajatori mai umani decat in alte domenii.

Pe partea de tehnologii tine mai mult de ce vrei tu sa faci decât “ce se cere”. Găsești mai din toate domeniile in România in orașele mari. De la jocuri la inteligenta artificiala. Deși dacă ai cerințe mai specifice ceva din avantajele de mai sus dispar. [3]


[1] Cum ai fi gresit daca te apucai de finante-banci inainte de criza.
[2] De fapt cam singurele chestii pe care le vad ca ar afecta cererea de programatori pe un termen mai lung ar fi niste treburi care ar schimba fundamental planeta - gen inteligenta artificila generalizata care vrea mai degraba sa adauge noul feature in CRM-ul custom al companiei in loc sa macelareasca homo sapiensi.
[3] De exemplu știu vreo 3-4 companii care fac computer vision in România. Și sunt și in orașe diferite. Așa ca dacă vrei neaparat in domeniu, nu prea poți negocia salarii sau sa zici “screw this, I quit” ca nu mai au iaurtul de care trebuie in Snack barul companiei.

3 Likes

Asa cum contabilul nu are ce face fara firmele de a caror contabilitate sa se ocupe. Sau cum procesul ala industrial ar fi sublim dar nu ar face nimic in lipsa materiei prime, de exemplu

Si atunci propunerea ta e sa stii totul despre nimic? :slight_smile:


Tu de fapt ai vrut sa spui ca stii C++ la perfectie :smiley:

Cum a fost perioada de criza in domeniu?

Chiar nu-mi pot imagina cum ar arata o viitoare criza la noi. Ar putea fi o discutie destul de complexa, pentru noi lucrurile ar putea merge in ambele directii, sunt multe elemente de luat in considerare totusi.

Ma refer in Romania.

Mai degrabă, “să ştii mult despre puţin” :slight_smile:

Pff, nici pe departe… Ştiu câte ceva cât să-mi fac treaba, dar cam atât.

Dacă vorbești de criza din 2008, erau firme mari care dădeau salariile cu 2-3-4 luni întârziere, plus o grămadă de alte firme închise (pe de altă parte, criza a reprezentat și o oportunitate pentru firmele mici)

Dacă vorbești de criza din 2000, România nu era atât de dezvoltată pe partea de outsourcing pentru a fi afectat cineva din țară. Dar dacă s-ar întâmpla azi asta cred că ar fi… interesant.

Crizele vin si pleaca, industria IT tot ramane. O sa fie mai greu 2-3 ani daca e asa de profunda ca cea din 2008, dar nu cred ca asta e motiv de evitat domeniul IT.

2 Likes

cel putin nu in romania. Probabil in USA s-ar simti mai tare o criza, dar la ce salarii se platesc la noi, chiar de ar fi criza, nu cred ca firmele ar avea o problema sa se adapteze.

1 Like

În 2009 - 2010 mi s-a dublat salariul.

Dacă lucrezi pentru americani care sunt obișnuiți cu salarii de 120k sau mai mari pe an, evident că oriunde în Europa, unde 60k pe an e mega-salar (și aici mă refer la brut), e mega-ieftin.

1 Like

Cred ca trebuie sa inveti fundamentele informatici algoritmi si structuri de date, complexitatea spatiu, complexitatea memorie, de exemplu in 1999 erau carti la Teora cum sa accesezi si sa programezi cd-rom cu VB6, acesta a fost recris in .NET, probabil asta o sa se intample cu AngularJS 5, ReactJS.

1 Like

Salut @Frenzy, voi incerca sa iti dau cateva sfaturi, din experienta personala.

  1. Indiferent de limbajul in care te decizi sa programezi, fiind si la inceput, nu ignora partea de algoritmi si structuri de date. Chiar daca nu le vei folosi in viitorul apropiat, prind bine si fac partea din formarea ta ca programator.
  2. Nu te pierde intr-un limbaj sute de ore. Incearca sa aplici tot ce inveti in aplicatii simple. Suna bine sa spui ca esti expert in C++ sau Python, dar ca programator esti platit sa livrezi o solutie nu sa excelezi in limbaj. Am cunoscut oameni cu care puteai discuta ore intregi despre limbaje, dar cu greu puteau incepe si termina o aplicatie.
  3. Pentru inceput, alege ceva abordabil, invata de exemplu sa faci in PHP/MySQL o clona de Twitter. Te vei lovi de diferite probleme, dar vei invata foarte multe.
  4. Incearca sa fii curios. Dupa ce stapanesti bine o tehnologie, invata ceva din jurul ei. Continuand cu exemplul de mai sus, dupa ce faci clona de Twitter, invata sa te conectezi la un server prin ssh, sa il configurezi, sa iti distribui proiectul si sa-l faci disponibil live.
  5. Fii flexibil in ceea ce priveste tehnologiile. De-a lungul timpului am facut si aplicatii web si desktop, iar de cativa ani ma ocup de mobile. Daca iti formezi niste baze solide, nu este atat de greu sa faci din cand in cand un jump in alta barca.
  6. Nu incerca sa fii Jack of all trades, master of nothing. Decat sa te lauzi ca stii 5 limbaje, mai bine unul, dar sa fii capabil sa livrezi o solutie cap coada in el.
  7. Nu neglija partea sociala din viata ta, sportul, cititul.
  8. Banii vin in timp, pe masura ce inveti si capeti experienta. In momentul de fata, dintre cunoscutii mei, mai bine platiti (2500-3500 de euro) sunt pe Front-End(Angular + React) si Mobile(iOS mai bine decat Android).
  9. Have fun.
9 Likes
  1. Se cauta bunul simt si dorinta de munca.
  2. Oricare limbaj care-ti place.
  3. Nu.
1 Like

Cred ca ar fi ca si comentariu… cat iti ia sa inveti un limbaj sau cat ar trebuii sa stai pe un limbaj cat treci la urmatorul ?
Mie mi s-a recomandat 2 ani pe Php ca si exemplu, insa nu vreau sa ma limitez la el vreau sa merg pe Js si Python insa Python ceva mai tarziu. Ma intreb oare daca e teama oricarui incepator sa invete un limbaj nou sau dar e pur si simplu obsestie pentru limbajul respectiv.

Oricare iti place sau oricare se cauta? Serios chiar e si o gluma, de ce invata programatori programare ? Raspuns: De Java , oare e pornit gresit?

Incearca sa refornulezi ce ai scris
:slight_smile:

eu unul nu prea inteleg ideea !

Pai aici cred ca depinde si de ritmul tau, depinde si unde vrei sa ajungi.

Daca incepi cu C# si apoi treci pe Java, nu vei vedea diferente extraordinare intre limbaje ci in framework-urile cu care lucrezi.

Pe termen lung, daca iti doresti sa faci webdev, chiar daca incepi cu PHP, este de ajutor pentru a intelege cum functioneaza o aplicatie web. Iar la ceva mai avansat gen Python, logic este sa treci identificand o necesitate, nu neaparat pentru piata spune ca se foloseste.

2 Likes