PHP si adoptarea altor limbaje

Incepusem un topic destul de ofensiv contra php, incerc o alta abordare

Tehnologii noi adoptate de companiile mari din domeniu:

golang - google trends - github trends
proiecte: docker, coreos,

node.js - google trends
companii: exemple

Cu greu se gasesc developeri in golang, node.js, erlang, etc. in Romania, cu toate ca este cerere, adoptia este lenta.

Care sunt motivele pt. care nu adoptati un limbaj nou?

Care sunt motivele pt. care inca folositi php?

1 Like

Excludem posibilitatea ca pur și simplu să-ți placă un limbaj încât să nu vrei să-l schimbi (nu pentru că nu e posibil ci pentru că s-ar termina discuția destul de repede).

Acestea fiind spuse, eu mă gândesc la astea:

Comoditate

Cunosc câțiva programatori care s-au plafonat în urmă cu câțiva ani. Ei fac proiecte destul de interesante, dar folosind tehnologii din 2005, mergând pe principiul „if ain’t broke don’t fix it”.

Tot din comoditate se aplică și „nu am timp de X, am treabă de făcut”, fără să realizeze că X este o investiție pe termen lung și îi va face munca mai ușoară.

Ca o paranteză, o poveste auzită… cred că la Uncle Bob, referindu-se la TDD (dar se poate aplica la orice):

Până pe la mijlocul anilor 1800, medicii nu se spălau pe mâini înainte de tratarea pacienților. Când un cercetător a făcut legătura dintre pacienții ce nu se vindecau și mâinile nespălate, medicii au sărit de cur în sus, că „noi n-avem timp să-l pierdem pe prostiile astea, avem vieți de salvat!”.

Eu tot încerc: ba Python, ba Ruby (nu Django și Rails, ci limbajele în sine, făcând mici utilitare), ba Node (pentru diverse automatizări ce folosesc sau nu Grunt), ba TDD șamd.

Risc

Putem reduce totul la proverbiala cioară din mână vs vrabia de pe gard :smiley:

Dacă la 15-20 ești într-o situație în care îți permiți să experimentezi și să schimbi limbaje fără să-ți faci prea multe griji, la 30+ stă altfel situația: ai de plătit facturi, poate rate, poate un copil. Să schimbi pur și simplu barca înseamă cel puțin câteva luni în care vei fi plătit mai puțin. Sigur, este destul de posibil ca după aceste câteva luni, dar, din nou, este un risc pe care unii nu vor/pot să și-l asume.

Ăsta e motivul pentru care am rămas cu WordPress. Pentru a deveni eficient în orice alt CMS, indiferent de limbaj, voi avea nevoie de câteva proiecte reale cu deadline foarte generos. Cu WordPress - așa prost cum este el - am avut nevoie de cel puțin un an pentru a face lucruri cu care să nu-mi fie rușine și chiar și acum, după mai bine de patru ani de WordPress încă se mai întâmplă să învăț lucruri noi.

Lene

Mi-e lene să detaliez. :smiley:

4 Likes

Repet ideea, cererea pietei impune adoptarea unui limbaj sau altul. Deocamdata cererea este neta in favoarea PHP, inainte de PHP cererea era Perl, poate ca cu timpul va veni si randul node.js

De exemplu, mai jos PHP - 3065 iar node.js - 28
https://www.freelancer.com/job/

Subscriu la ce a spus @iamntz, multi au petrecut ani alaturi de acelasi limbaj. Au adormit gandit solutii in acel limbaj, au scris soft-uri open source care-i dovedesc experienta in acel limbaj.
Sa te gandesti sa schimbi limbajul, este cel putin infricosator. Pentru ca desi este simplu de invatat, simplu fapt ca o sa muncesti un an - doi sa arati ce stiai deja, este irosire de timp.

Si salariul, putini sunt care o sa accepte un impas atat de mare profesional pentru cele 30 de job-uri in nodejs.

Limbajul unui programator nu este numai o carte din care a citit, nu este doar niste functii pe care le foloseste. E mai mult de atat, mult mai mult.

Inchei prin o confesiune. Singurul limbaj pe care l-as adopta ar fi Ruby, in nici un ca Golang sau Node, si nici macar acesta nu m-ar face sa renunt la php.

2 Likes

I moved 18 posts to a new topic: PHP vs NodeJS - Care e mai bun?

  1. Imi fac treaba cu PHP. Rezolv probleme, imi iau salariul pentru asta. Platesc facturi, rata la casa, etc.
  2. Inca nu am intalnit un CMS/Framework/Platforma suficient de matura si as feature rich as Magento pe limbajele enumerate mai sus. Inca mai astept.

P.S. Imi ia de la 2 saptamani la 1 luna sa invat un limbaj nou pentru un nivel de junior. Adica cineva chiar sa fie dispus sa ma plateasca pentru cunostintele mele in respectivul limbaj. Cand nu o sa mai am proiecte pe PHP o sa ma mut pe altceva.

4 Likes

Raspunsul meu la cele doua intrebari ar fi:

  1. Tehnologiile listate sunt imature tehnologic, nu au support bun, documentatia precara, comunitate mica …
  2. PHP ma ajuta sa termin proiectul cu succes fara prea multe batai de cap.

In ultimul an am avut posibilitatea de a experimenta cu nodejs/express, mongo/mongoose, coffeescript,… si in experienta mea sunt facute pentru chestii super simple. In momentul in care vrei sa faci un sistem putin mai complex te lovesti de tot felul de probleme ciudate.

5 Likes

Este parerea ta sau ai vreun argument obiectiv?

Dupa numarul de companii care au investit in ele, as fi putin rezervat sa spun ca sunt imature.

LearnBoost.com, CloudUp.com (cumpart de Automattic), geekli.st, wallmart, etc - le consideri simple?

Observ o tendinta in a da like’ la pareri subiective, chiar daca nu sunteti deacord cu node.js/go/etc, as prefera sa fim putin mai obiectivi si sa argumentam, pana la urma discutam despre tehnologie.

1 Like

O discutie mai interesanta ar fi cati din voi a-ti reusit sa faceti o schimbare la tehnology stack-ul folosit. Si nu ma refer aici ca ai programat aplicatii web folosind PHP cu framework X si ai trecut la framework Y, ma refer aici la toate componentele folosite un exemplu bun ar fi trecerea de la aplicatii web la dezvoltarea de aplicatii mobile …

Eu am avut doua schimbari de genul asta pe parcursul carierei, ce am observat este ca multi de obicei raman cu ceea ce au acumulat din facultate si folosesc acelasi set de tehnologii 5 ani de acuma inainte. O schimbare de acest gen poate fi si foarte grea, depinde de persoana (1-6 luni) timp in care teoretic angajatorul ar trebui sa aiba rabdare pana faci trecerea.

2 Likes

am trecut de la wpphp la php. dupa aia am trecut de la php la obj-c (am urat fiecare clipa cat am lucrat pentru iphone). am avut o scurta perioada de c# si dupa aia m-am intors la php. deci nu-i chiar asa de greu de facut trecerea. daca aveam mai multe proiecte probabil ramaneam pe c#

Dau eu una:

PHP are de departe cea mai buna si mai completa documentatie din toate limbajele. Ever. De-aia e si usor de invatat si prinde la public.

5 Likes

Si totusi, cand vine vorba de bani si proiecte banoase, Java e dumnezeu.

Raspunsul la intrebarea de ce sunt putini programatori in limbajele nou aparute este simplu. Programatorii vor adopta mereu limbajele in care vor fi cel mai bine platiti si/sau isi vor gasi cel mai usor un loc de munca.

Directia de adoptare este dictata de companii si de nevoile proiectelor. Companiile nu isi asuma riscuri mari, decat poate la inceput, cand sunt prea mici si e prea putin de pierdut. O tehnologie noua, un limbaj nou, este foarte riscant. Ce faci, daca limbajul dispare peste 5 ani? Dai faliment? Investesti o caruta de bani sa-ti rescrii aplicatia? Platesti cativa programatori exotici cu multe sute de mii de dolari pe an sa iti intretina programul in limbajul respectiv? Vezi numai cat castiga un programator COBOL in zilele noastre!

Nu programatorii si lenea sau pasiunea lor determina adoptarea unui limbaj la nivelul pietei. Companiile decid.

Java, un limbaj vechi, destul de imbatranit, dar de o stabilitate si incredere fara precedent, in continuare duce vreo 80% din software-ul din lume si peste 50% din programatori programeaza in Java.

PHP, un limbaj cu un trecut tumultos, dar potrivit anumitor tipuri de proiecte. Piata are incredere in PHP si ii cunoaste limitele. Piata stie ce proiecte merita sa fie facute in PHP si ce nu. Piata isi asuma limitele PHP-ului pentru proiectele respective. De aceea PHP a inceput sa capete tractiune in ultimii 5-8 ani in domeniul enterprise. Si da, nu proiectele Open Source si multitudinea de mici pagini web platesc salariile noastre, ci companiile cu proiecte serioase.

Aceste companii, si proiecte vor determina mereu directia si nevoile pietei.

Acum, desigur sunt cativa care isi asuma riscul unui limbaj nou si promitator. Daca esti suficient de bun si proiectul nu este extrem de complex, poti sa il faci in asa fel incat o schimbare de limbaj pe viitor sa nu iti fie catastrofala. Sau pur si simplu iti modelezi buzines-ul in asa fel incat daca proiectul ramane fara limbajul de programare, sa ai alte proiecte din care sa poti trai si sa renunti la cel deficitar.

Sau, pur si simplu faci urmatorul Facebook / Google / Apple. Dar pentru asta iti trebuie si un gram de noroc alaturi de un geniu nebun.

8 Likes

Ca vine vorba de alte limbaje… Ma gandeam sa invat si altceva decat ce stiu, adica php si javascript.
Am gasit niste cursuri foarte bine facute la infoacademy.net. Insul care preda Java, Linux Python si retele e extrem de talentat. Mi-a placut foarte mult cum explica si am inteles ce ma interesa, cand am invatat acolo MySQL si Linux.
Ma tenta sa ma inscriu la Python, deoarece ma simt un pic intimidat de Java. Ce parere aveti? E pierdere de vreme cu Python?
Motivul principal pentru care as alege Python tine de faptul ca permite crearea de aplicatii mobile, iar lumea-l lauda ca e foarte productiv, in sensul ca poti termina un proiect mult mai repede decat in alte limbaje. Dar nu stiu in ce masura e adevarat sau nu.

Ceea ce definesti nu sunt programatori ci oportunisti :sunny: Este normal sa stii si un limbaj pentru a fi platit OK insa a merge pe unul doar pentru ca piata il impune facand abstractie de orice altceva mi se pare destul de aiurea - probabil nu le plac ceea ce fac sau o fac la modul superficial.

Privesti problema un pic distorsionat - in final nu un limbaj cu o sintaxa un pic diferita te invata ceva nou ci paradigma de care apartine iti poate remodela cu adevarat modul de gandire.

1 Like

Erai sarcastic nu? :))

Nu stiu, poate m-am facut prost inteles. Mi se pare ca in momentul de fata, stiind doar programare web, nu pot sa ma ating de aplicatii care nu sunt legate de un browser. Din ce inteleg, in Python poti sa-ti faci singur interfata si poti crea aplicatii complet independente. Din acest punct de vedere, e o mica diferenta intre limbaje. Poate ma insel, dar asa percep eu situatia.
Python ar putea fi folosit pentru a crea aplicatii de mobil, fara a utiliza Java. Ma rog… asta se poate si cu javascript… poate nu e relevant.

Nu sunt de acord cu aceasta observatie. A fi oportunist, in opinia mea, inseamna sa faci o investitie de timp si inteligenta minime pentru un profit maxim. Un oportunist in viziunea mea este o persoana capabila, dar care in loc sa isi foloseasca puterile mintale pentru a face ceva, sta la panda poate poate ii pica ceva. Un oportunist urmareste evenimente exceptionale ce aduc profit maxim.

Daca 75% din paginile web folosesc PHP si daca 97% din destkop-urile din mediul enterprise ruleaza cel putin o aplicatie scrisa in Java, nu poti sa spui ca un programator de PHP sau Java este oportunist. Nu este nimic exceptional in PHP sau Java. Sunt doar tool-urile pentru universul software al zilelor noastre.

Dupa care este legea adoptarii inovatiilor. Totul porneste de la o idee, o persoana. Urmat de cativa entuziasti. Acestia ii conving pe “early adopters” si abia aceea restul.

Primii care incep sa faca bani sunt early majority. Business-ul enterprise se afla in late majority si laggerds.

Evident, eu nu zic, sa nu experimentezi si sa inveti limbaje noi. Orice programator care vrea sa tina pasul cu technologia ar trebui sa invete un limbaj nou in fiecare an si sa se descurce in toate paradigmele de programare (structurala, orientata pe obiecte si functionala).

4 Likes

Nice straw man argument insa revenind la observatia mea: daca inveti un limbaj pentru ca 97% din zona enterprise il foloseste atunci ceva este in neregula, nu zic ca nu este OK in final trebuie sa faci bani cumva insa daca acesta este unicul motiv pentru care programezi cel mai probabil dupa n-ani vei ajunge la concluzia ca you hate your job. That was my point.

Inseamna ca in facultate fie nu au invatat nimic fie nu li s-a predat ceva decent - din facultate ar trebui sa ramai cu design pattterns, algoritmi, logica, etc. in final concepte aplicabile oriunde. Avand in vedere ca inca folosim concepte din anii 60-70 nu vad relevanta argumentului cu “5 ani etc.” - cum ziceam programming is not rocket science nor child’s play.