PHP vs JS. Ce sa abandonez si ce sa aprofundez?

Ceea ce spui acolo deja este rezolvat de IDE ori nativ(Phpstorm spre exemplu) ori prin extensii.
Nu inteleg la ce te referi prin fortare dar PHP non OOP nu cred ca mai este o optiune de peste 10 ani. Daca te referi la fortare la nivel de limbaj atunci asta nu va veni prea curand, si e ok sa fie asa. Libajul este atat de mult folosit fix din cauza flexibilitatii si simplitaii, iar o asemenea schimabre ar insemna in BC masiv care ar duce la scindarea limbajului care deja are probleme cu upgrade-urile (sunt multi care inca ruleaza 5.x desi inclusiv 7.1 este EOL iar 7.2 doar in security fixes).
In legatura cu JS cred ca cel mai mare dezavantaj este dezastrul de npm, care este destul de netransparent si a creat deja suficiente probleme, si care ma astept ca undeva in viitor sa explodeze destul de rau.

De ce?

Inlocuiesti PHP cu node.js in functie de proiect. In putine cazuri se justifica, in multe altele se face de moft si creaza mai multe probleme decat rezolva.

Inainte sa treci la node.js, invata bine vanilla Javascript. Ce faci tu acolo in browser cu 3 linii de cod copiate de pe stackoverflow e nimic. Sa treci de la PHP la Javascript cere un anumit reset la modul in care gandesti codul. Apoi, Javascript in browser si Javascript pe server nu sunt acelasi lucru. Frameworkurile JS de front-end, pe langa faptul ca nu se aprofundeaza usor, mai adauga si un nivel de complexitate proiectului, de foarte multe ori nejustificata. Ca sa folosesti de exemplu React, mai trebuie sa inveti si Webpack si inca vreo 2-3 alternative legacy de management a state-ului.

Ramai pe PHP. Indiferent ce spune lumea, e tehnologia cea mai populara (si cred ca si cea mai potrivita pentru web) si va ramane in top mult timp. Invata Laravel, aprofundeaza incet-incet javascript si uita-te putin peste Vue. Daca simti ca te atrage, poti continua cu Node, Typescript etc.

1 Like

Laravelul cred ca a adus o influenta destul de mare in ceea ce priveste evolutia PHP-ului. Cred ca multa lume a ramas/venit spre PHP datorita acestui framework, care promoveaza multe best practice-uri. In felul asta, cred ca Laravel a inceput sa joace un rol important in educarea comunitatii PHP, iar cum a aparut si PHP 7 cam in aceeasi perioada, s-a potrivit manusa pe directia pe care o luase Laravel-ul, implementand foarte bine si rapid toate noile features aduse de limbaj.

Ce vreau eu sa spun, pe scurt, e ca multi aleg azi PHP datorita Laravel-ului.

2 Likes

Limbajul e o unealta. Ar trebui sa te gandesti serios ce framework sa inveti, unul bazat pe PHP (Laravel, Symfony) sau JS (Vue, Angular, etc). Sfat: nimeni nu te va plati bine cat timp esti incepator, asa ca in final conteaza doar sa faci ce iti place si sa excelezi in acel limbaj. Chiar CSS e limbaj (sa zicem), si se cauta specialisti!

2 Likes

Eu am trecut prin ambele experiente: am inceput cu php (Zend Framework, apoi am trecut la Symfony 1 si putin Symfony 2) si dupa cativa ani petrecuti aici am trecut la javascript (initial doar front end - backbone, ember, angular), iar in final am ramas la node.js, react, MongoDB etc…

Insa… daca ar fi sa o iau de la zero acum, cu siguranta as petrece cativa ani buni cu Laravel. Mi se pare ca Taylor Otwell construieste unul dintre cele mai bune ecosisteme server side la momentul actual si aici ma refer nu doar la framework si extensii, cat si la Vapor, Forge etc…

Eu acum folosesc Nest.js pe backend. E un framework care se aseamana cu Symfony oarecum. Si pentru ca tot a venit vorba de Symfony, Fabien Potencier face si el o treaba minunata acolo (din cate stiu, Laravel foloseste multe Symfony components).
Cred ca e greu sa dai gresi cu Laravel sau Symfony, deci ai optiuni bune in php.

O alta alegere la fel de buna e rails. Are un ecosistem vast, e battle tested, iar DHH nu da semne de oboseala.
Probabil la fel si Django e o alegere buna.

In node ecosistemul nu e nici pe departe la fel de bine inchegat, ci e mai distribuit. Gasesti zeci de frameworks din care ti-e greu sa alegi, fiecare cu approaches diferite. Da, gasesti extensii (packages) pentru orice lucru ai avea nevoie, dar roaga-te sa fie up to date si usor de integrat cu frameworkul tau.
Insa de cand TypeScript a inceput sa devina mainstream incep sa se aseze lucrurile si aici.

Pe de alta parte, se pare ca inovatiile apar mai intai in Javascript, sau cel putin aici devin populare. Ma refer la GraphQL, next.js, Gatsby, CSS in js, serverless, eslint, prettier si chiar la react si react native.

4 Likes

Intrebarea mea e: Cine va definieste tehnologia folosita? Ca e PHP-based sau Javascript-based.

La mine, stiti, ce limbaj folosim e dictat de client, care la randul sau a ales limbajul in functie de cati programatori pe tehnologia aia sunt.

Numai mie mi se pare ca acesta discutie se transforma in php vs the world? :wink:
#justmytwocents

1 Like

Poti sa-mi dai mai multe detalii despre experienta ta cu Nest.js? Cat de matur ti se pare?

Mie mi se pare ca fiind: The missing Node.js framework.
Chiar daca express se intituleaza a fi un framework, eu il vad mai degraba ca un library. Nu-ti impune nicio structura, nu are implementari built-in pentru tot felul de servicii…

Cochetez de ceva timp sa incep si eu un proiect cu Nest.js pentru ca poarte foarte promitator, la prima vedere. Pe hartie, pare destul de matur. Are o documentatie bine pusa la punct.
Tot acolo vad ca are si integrari specifice cu multe servicii utile precum: Websockets, Microservices, RabbitMQ, GraphQL…
Pe mine ma duce cu gandul, mai degraba, spre Laravel decat Symfony.

E foarte mult bazat pe DI, d’aia am zis Symfony (tin si acum minte articolele lui Fabien Potencier despre injection containers).

Si mie mi se pare ca the missing node.js framework :slight_smile:. Si chiar am incercat cateva pe real world projects (loopback, hapi, express etc.). Chiar ajunsesem sa dezvolt propriul framework la care am renuntat odata ce am dat de nest.js.
Si, da, ai dreptate: documentatia e buna, frameworkul e solid, nu reinventeaza roata unde nu are rost (integreaza librarii externe).

1 Like

You can’t do anything to anybody

Am procedat si eu o perioada in modul asta. Tare pagubos. Ca si cum ceri medicului cardiolog sa faca un implant dentar sau instalatorului sa repare un circuit electric.

Tehnologiile au evoluat atat de mult incat e greu sa fii foarte bun pe mai mult de 1-2 limbaje/ framework-uri. Nu mai exista savanti in fizica, chimie, matematica, astronomie, filozofie ca pe vremea lui Michelangelo.

3 Likes

Sfatul meu e sa inveti bine javascript. Pe php sunt mai mult joburi, insa sunt si semnificativ mai prost platite.
Pe de alta parte, javascript-ul e mai greu pentru ca e asincron si trebuie sa inveti bine cum sa gestionezi chstia asta elegant. Dupa ce inveti asta, lucrurile devin simple.
Lumea foloseste php pentru ca programatorii de php sunt semnificativ mai ieftini. Chiar daca esti bun, maximul pe care-l poti atinge e sub ce poti obtine cu javascript. Asta privind lucrurile pragmatic.
Povestea cu limbajele si framework-urile sunt doar tool-uri… suna frumos cand e zisa, insa nu inseamna nimic concret.
E bine sa inveti, desigur, design patterns, algoritmi, principii de programare functionala. Iti vor fi utile in orice limbaj vei lucra. Daca ai de ales intre php si altceva, nu alege php.
In principiu, sa ajungi bun in PHP trebuie sa lucrezi cu Symfony sau Laravel. Principiile pe care trebuie sa le intelegi ajung sa fie la fel de avansate ca pentru un dezvoltator de Spring in Java. Vei ajunge bun, insa nimeni nu te va plati in PHP cat pe un programator de Spring. Din acest motiv, nu cred ca merita sa te complici. Daca tot investesti efort in ceva, investeste intr-o chestie care scaleaza bine si poate sa devina profitabila pe masura ce trece timpul.

O problema in javascript e ca ai pachetele care se schimba destul de des si e greu sa tii pasul cu noile api-uri. E frustrant sa repari chestii ca te miri ce pachet a shcimbat ceva in API si vrei sa faci si tu upgrade, dar cand il faci incep sa-ti crape chestii… Cu timpul te inveti cu durerea.

4 Likes

As vrea niste numere care sa sustina asta.

Cine spune asta? De ce nu Slim? sau poate nici un framework daca situatia nu o cere?

Sincer in PHP nu am durerea asta, mai ales cu Symfony (mi-a luat o ora sa fac trecerea de la Symfony4 la Symfony5 pe un proiect mediu).

Chiar daca JS poate fi platit mai bine, de ce as accepta aceste dureri? de ce as fi masochist? Poate ar trebui sa ne gandim si la altceva in afara de bani, la ce te ajuta banii daca pierzi noptile sa repari chestii ca te miri ce pachet a schimbat ceva API sau poate chiar a fost sters (vezi left_pad) sau sa te trezesti cu cine stie ce cod infestat (vezi event-stream si cine stie cate altele mai sunt despre care nu stim).

Toata aceasta discutie imi aduce aminte de aceleasi discutii purtate in 2012-2016 cand Ruby era pe val si trendy, aparea in toate topurile de cel mai bun, cel mai dorit, si se spunea ca va fi viitorul, iar acum nu mai este nici macar in top 10 pe nicaieri, iar cei care au ales sa il foloseasca (companii) isi blesteama zilele pentru ca nu gasesc developeri, iar cei pe care ii gasesc trebuie sa ii plateasca enorm.

Just my 2 cents

2 Likes

Va mulțumesc pt păreri, observ că lumea insistă cu Laravel la php. Laravel este ceea ce m-a ținut în “ecosistemul” php, dar nu pot sa trec peste faptul ca JS începe să fie prezent în din ce în ce mai multe locuri si poti folosi aceeasi sintaxa (cu mici diferente) dar totusi este un avataj enorm: backend/fronted, After Effects, TensorFlow.js/ML, MCUs/Embedded

Un alt dezavantaj al PHP îl observ și la testele pe diferitele frameworkuri, inclusiv Laravel, unde nu suportă un număr mare de requests așa cum de exemplu poate suporta Fastify sau altele construite pe node.js https://www.techempower.com/benchmarks/#section=data-r18&hw=ph&test=json

Ah, si apropo de haosul cu pachetele npm care sunt abandonate, asta incepe sa se intample si in PHP cu al lui Composer.

In viitor va invinge limbajul care se va adapta si va suporta ML, Big Data, un numar foarte mare de requests si sa aiba un impact cat mai redus asupra cerintelor sistemelor (unde probabil pe JS vs Python va fi urmatoare dezbatere)

De ce nu continui cu amandoua? Pai din pacate “la varsta mea” a inceput sa fie greu sa memorez valul de “inovatii” si noi aparitii din ambele tabere, a inceput sa devina coplesitor.

2 Likes

Asa cum in PHP ai optiuni solide, vei vedea ca esista optiuni solide si in javascript. Mai mult, dupa ce se va lansa deno, foarte multe probleme se vor rezolva.
Javascript e asincron, ceea ce poate sa fie de mare ajutor in anumite circumstante. Poti sa faci asta si in PHP, stiu foarte bine, insa in javascript e nativ. Asa merg lucrurile.
Daca tot treci pe javascript, e bine sa te axezi pe chestii care iti permit sa folosesti typescript. Ajuta mult pe termen lung.
In final, trebuie sa alegi singur drumul pe care vrei sa mergi. Astea sunt probleme pe care si eu mi le-am pus. Am lucrat mult in PHP. Doresc sa nu mai aud de el. In final e chestie de preferinta. Indiferent pe ce cale vei merge, vei avea greutati de diverse feluri. Toate greutatile pot sa fie depasite.

3 Likes

Pe JS sunt deja cu Vue.js si imi place mult. Typescript il stapanesc binisor momentan, probabil o sa prind viteza cand se va lansa oficial Vue 3. Si sunt de acord cu tine, Typescript va ridica si mai mult ecosistemul JS.

2 Likes

Marian, ne “scapai” de jumate de discutii daca ne spuneai ca deja folosesti Laravel si Vue :slight_smile:

Daca iti place si TypeScript, atunci arunca un ochi pe https://nestjs.com.

Daca nu ai incercat GraphQL, da-i o cheie.

Iar daca te tenteaza o schimbare de directie spre front end, atunci poti sa stai linistit, ca exista firebase, prisma si multe altele.

Eu am inceput sa imi aleg tehnologiile in functie de velocitate. Insa ca sa vezi cu ce esti mai rapid si mai confortabil, cam trebuie sa le iei pe incercate.
In final cam la asta se rezuma munca - sa iti faca placere si sa fii productiv (sa ai un outcome cat mai bun).

P.S.: bechmarks pe frameworks nu trebuie luate prea tare in serios. Da, conteaza, dar nici pe departe atat de mult (uita-te si la codul folosit pentru benchmarks la techempower). In fond, scalezi arhitecturi nu frameworkuri si proiectul propriu nu va ramane niciodata la stadiul de “hello, world!”.

2 Likes

5 Likes

Cu timpul te inveti cu durerea.

JavaScript development summarized (also)

6 Likes

Daca vrei un limbaj pentru sanatatea creierului tau, nu alegi nici js, nici php. Alegi un limbaj functional. Gen Elixir sau Erlang pe server iar pe frontend clojurescript. Presupun insa ca vrei sa lucrezi cu ce mai foloseste lumea prin piata pe la noi si poti sa gasesti un job.

2 Likes

As putea sa zic acelasi lucru si despre php :face_with_hand_over_mouth:

1 Like