Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Schimbare adresa DNS IPv4 pe rout...

Recomandare Barebone

Monede JO 2024

Suprasolicitare sistem electric
 CIV auto import

Mutare in MOZAMBIC - pareri, expe...

Scoatere antifurt airtag de pe ha...

Magnet in loc de clește pent...
 Cumparat/Locuit in apartament si ...

Pot folosi sistemul PC pe post de...

Sokol cu distorsiuni de cross-over

Filtru apa potabila cu osmoza inv...
 Kanal D va difuza serialul “...

Upgrade xiaomi mi11

securitate - acum se dau drept - ...

Farmacia Dr Max - Pareri / Sugest...
 

Ai mai incepe un proiect mediu/mare in PHP?

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

#1
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,236
  • Înscris: 24.02.2007
Plecand de la urmatorul citat

View PostOriginalCopy, on 13 iunie 2018 - 19:37, said:

PHP e limbajul ideal pentru foarte multe cazuri** (mai multe de cat cred unii fanatici java de exemplu), in special in versiunea lui actuala (7.2).
[...]
** am lucrat la proiecte HA, distribuite, de multe sute de mii de linii de cod, producatoare de multe milioane, scrise in PHP. Trebuie disciplina, nu sunt proiecte pentru Dorel wordpressistul, joomlaistul sau drupalistul, ci pentru programatori in primul rand care se intampla sa stie si PHP.

Ma gandeam care ar fi motivele tehnice pentru care as alege PHP in cazul unui nou proiect, in detrimentul ecosistemelor java sau .net (core).

Cu PHP recunosc ca nu-s la curent, dar, din amintiri, ce nu-mi placea la el:
  • Nu e strongly typed
  • API destul de haotic (ordinea parametriilor de exemplu)
  • Incertitudine in ce priveste posibilitatea folosirii threadurilor

Alternativele mentionate vin cu:
  • Limbaje strongly typed cu facilitati pe toate gusturile (Scala si C#, Java nu atat de mult)
  • Unul din cele mai simple & practice moduri de a scrie cod asincron (.net)
  • Tooling rafinat dealungul a multi ani (java)
  • Destule frameworkuri mici si cu tinta clara (pt http si nu numai)


#2
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

Quote

Nu e strongly typed
Poate fi. Impachetezi valorile in Value Objects, ceea ce faci oricum intr-o arhitectura curata. Definesti
declare(strict_types=1);
in fiecare fisier. IDE cu file header rezolva problema de tooling.


Quote

API destul de haotic (ordinea parametriilor de exemplu)
Inca valabil. In practica, nu vad asta ca o problema. Cand folosesti o functie criticata de "a fractal of bad design" (pe buna dreptate luata ca atare), nu o faci de dragul de a o face, ci in contextul unui business: izolezi acel apel intr-o metoda, si poti sa uiti de "dirty php".

Quote

Incertitudine in ce priveste posibilitatea folosirii threadurilor
Inca e valabil. Nu exista un "servlet container". Cand ai nevoie, folosesti gearman, zeromq, etc, cum ai face si cu alte limbaje; dar da, nu exista doar thread-uri, daca chiar ai nevoie de data locality.

Nu am spus ca alte limbaje nu ofera lucruri mai bune pe anumite fronturi, ci ca chiar si unele proiecte complexe nu au nevoie de acele lucruri.

De exemplu multithreading: chiar ai nevoie sa pornesti acel thread (da, sau thread pool) in mijlocul cererii http? Nu cumva vrei sa returnezi un raspuns http cat mai rapid, si sa procesezi asincron?


Cand trebuie sa decid daca PHP, Java sau Go, ma uit mai indeaproape la cerinte. Primul si cel mai mare motiv pentru care PHP iese din discutie din start e nevoia de programatori seriosi. Primul si cel mai mare motiv pentru care castiga, e costul mai redus al programatorilor.

Am fost in ambele situatii:

1. Am mers cu Java, deoarece nu era loc de compromisuri la calitate (nu din cauza PHP ca limbaj, ci din cauza posibililor programatori), si eu nu mai puteam sta in proiect sa fac code review toata ziua la cod PHP nasol, si sa refuz pe banda rulanta patch-uri

2. Am mers cu PHP, deoarece costul programatorilor era un factor important, si am putut sa mai stau 6 luni in proiect sa mentorez, sa disciplinam echipa

Edited by OriginalCopy, 13 June 2018 - 20:39.


#3
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,295
  • Înscris: 21.04.2004
Cred ca singurul motiv pentru care cineva a ales vreodata PhP intr-un proiect mediu/mare este costul. Restul e cancan.

Sigur ca se pot face multe in PhP, dar de la un punct incolo nu mai poti face cu PhP ce poti face cu Java. Cine are bani si isi permite, pune raul in fata si merge cu cea mai sigura solutie (care nu e PhP).

Pina la urma PhP e un limbaj urit si haotic, e cam pe acelasi nivel de tembelitate cu javascript. Adevarul este ca imensa majoritate a oamenilor NU sint disciplinati si nu te poti astepta la asa ceva de la ei. Ori decit sa stai dupa toti dobitocii si sa le spui de 100 de ori acelasi lucru, mai bine lucrezi in ceva care nu-i lasa pe dobitoci sa zburde cum au chef...

Asta nu inseamna ca Java ar fi ceva magic, care face totul sa fie bine, daca proiectul e facut de dobiotoci oligofreni atunci o sa iasa fix un cacat. Probabil cel mai bun exemplu, care pina la urma ne afecteaza pe toti, este "sistemul informatic" de la CNAS...

#4
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Nu am intalnit proiect in Java facut de altii care e la fel de curat ca proiectele conduse de mine facute in PHP.

Am intalnit un singur proiect in Java care se apropia destul de mult dpv arhitectural. Totusi e demn de mentionat, pentru ca era un proiect mai vechi, si totusi a reusit sa fie mentinut curat. Cu o curatenie generala de vreo 2-3 luni, ar fi depasit la calitate ceva echivalent facut in PHP. Java are pana la urma generics, o poveste pentru AOP, si altele.

Doar experienta mea subiectiva.

Exista destul cod java jalnic, chiar facut de Apache.

Edited by OriginalCopy, 13 June 2018 - 22:55.


#5
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,295
  • Înscris: 21.04.2004
Nu e vorba de curatenia codului dintr-un anumit proiect. Singurul motiv pentru care proiectele tale sint curate e ca le-ai facut probabil de la zero, cu simt de raspundere si nu ai preluat proiecte de juma de milion de linii de cod si 10 ani vechime prin care au trecut zeci de oameni carora nu le-a pasat de nimic sau poate au fost bine intentionati si atita au putut.

Intrebarea este daca proiectele alea in PhP se mai dezvolta si cresc pe parcursul a inca 10 ani si revii in proiect, o sa mai gasesti curatenie? Pun pariu ca nu :w00t:

Oricum curatenia codului nu e un indicator si pentru calitatea codului. Poti sa faci un cod curat care a fie absolut timpit in esenta lui. Apoi mai e si problema subiectiva a curateniei, cind poti spune ca codul este suficient de "curat"? Probabil ca raspunsul este "atunci cind nu mai ai bani sa bagi in curatenie", pentru ca pina la urma asta e o cauza majora a codului alandala. Ai o echipa mica de programatori si niste duzi care le pretind luna de pe cer in timpul cel mai scurt, cu cele mai mici costuri posibile, fara sa inteleaga ce rezultat va avea acest lucru sau poate pur si simplu fara sa existe cineva care sa le explice. Atunci ce poti sa faci, pai e simplu, tai din curatenia codului pentru ca oricum nu e vizibil pentru utilizator :w00t:

#6
WinstonMontana

WinstonMontana

    Active Member

  • Grup: Members
  • Posts: 1,913
  • Înscris: 20.02.2018
care este scopul proiectului, in ce domeniu ?

#7
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,440
  • Înscris: 10.08.2005
Discutam teoretic, ce te convinge sa alegi PHP cand incepi un proiect.

#8
RedDev

RedDev

    Active Member

  • Grup: Members
  • Posts: 1,935
  • Înscris: 29.10.2014
Din orice limbaj poți face o varză de cod care poate să meargă foarte repede sau foarte încet. Știu de backend scris fără funcții în PHP (fișiere de genul a 1500 de linii executate una după alta) și care dă rezultatul în 100 milisecunde, și lucruri făcute în framework-uri de PHP, carevasăzică bine structurate, după care stai secunde bune.

Lucrez cu API-uri bazate pe deGeava (SOAP, XML - all that crap) care trebuie verificate zilnic fiindcă... NullPointerException. E un software scris prost care crapă des.

OriginalCopy vorbește bine în ultima vreme. Limbajul nu contează, programatorul da. Și din păcate nu sunt dezvoltatori software pe bune. Iar când vine unul prost toți suferă. Eu stau de 2 săptămâni doar să dreg munca a 4 oameni. Oameni care dacă le atrag atenția că scriu cod prost, mă iau peste picior că ce mă cred eu așa mare și tare. Păi ce ai făcut tu durează 4 secunde, ce am optimizat eu o secundă. Dar nimănui nu-i pasă de valori concrete.

Trecând la subiectul „cod”, codul e pentru oameni. Trebuie să fie:
  • eficient (rezultate rapide)

  • valid (rezultatele corecte)

  • robust (dacă îi dai ceva input aiurea să nu crape toată aplicația)

  • lizibil (când vine alt dezvoltator să nu-și smulgă părul din cap când citește ce ai scris)

  • jurnalizat (când ceva crapă să ai jurnale din care să vezi unde a crăpat și de ce)
Din păcate 1, 2 și 3 pe nimeni nu interesează. Iar de 4 nici nu mai discut. De ce să scriem o funcție scurtă când putem încărca 3 biblioteci PHP și JS și să scriem încă 3 fișiere cu zeci de funcții?

Singura chestie la PHP e că mereu timpul de execuție diferă. Un apel printr-un framework PHP durează fie 60 de ms, fie 110. Aceleași date. Dar trecând peste asta, da, poți face chestii destul de mari. Eu acum lucrez cu o bază de date de zeci de milioane de intrări combinate cu alte milioane de intrări, toate actualizate zilnic de minim 12 ori și cea mai mare problemă e ... MySQL. La partea de tabele temporare și crearea lor pe disk e dezastruos. Aș muta gruparea datelor în PHP. Niște teste mi-au arătat 30 de secunde grupare în MySQL față de 3 secunde în PHP (din care 2.8 secunde doar trimiterea datelor din baza de date).

---
To be honest mă deranjează declararea tipului unei variabile. Știu la ce o voi folosi, poate scriu un if în plus să mă asigur că ce primesc e ce mă aștept să fie. Dacă e să fac o validare mai extinsă, îmi scriu o funcție/clasă o dată și nu mai am treabă.

Edited by RedDev, 14 June 2018 - 10:46.


#9
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Eu caracterizez asa o arhitectura curata:

toate aspectele ortogonale sunt intr-adevar separate. Exemple: business domain, web application, logging, caching, database.

Fiecare dintre ele are un director unic unde se afla tot codul legat de acel aspect, iar dependintele dintre pachete sunt prin contracte, nu implementari concrete. Deasemenea, nu sunt leaky abstractions majore si nu ai lucruri precum "return 404" (semantica fiind de http response code) niciunde altundeva decat in componenta "web application". Iar caching, daca il dezactivezi, nu afecteaza functionalitatea, doar merge mai greu.

E ok sa mai ai unele bube in arhitectura pe ici pe colo (technical debt), atata timp cat pastrezi lucrurile sub control, le ai documentate, si le imbunatatesti permanent, dar un cod care violeaza ce am descris mai sus nu este curat - nu e o chestiune pe care eu o dezbat, pur si simplu e asa.

In afara de aceste principii de baza, multe lucruri pot fi dezbatute, sau sunt chestiuni de gust, sau de compromisuri.

#10
RedDev

RedDev

    Active Member

  • Grup: Members
  • Posts: 1,935
  • Înscris: 29.10.2014
E he he, ăștia cu care lucrez încă au probleme în a pune toate constantele într-un singur fișier.

#11
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
In afara de cazul in care eu am conceput proiectul de la inceput, nu am vazut astfel de arhitecturi curate, indiferent de limbaj. Cel pe care l-am amintit mai sus in Java se apropia destul de mult si ar fi putut fi curatit in 2-3 luni.

In rest, totul varza (relativ la ce am descris mai sus), dupa cum am spus, indiferent de limbaj.

Deci da, la inceputul unui proiect mediu/mare, PHP e pe masa mea de candidati, alaturi de Java sau Go sau Python intr-o anumita masura. Probabil si C# ar fi pe masa mea, dar nu cunosc net core.

#12
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,295
  • Înscris: 21.04.2004
Eu am vazut un singur proiect curat dpdv arhitectural. Fiecare clasa era la locul ei, denumirile claselor aveau o logica consistenta, ierahiile erau clare, baza de date era superba, 600+ tabele cu denumiri clare, care bateau cu denumirile din Java, fiecare field avea denumire clara, nu era nevoie de nici un comentariu.

Povestea este ca ajunsese dupa vreo citiva ani sa fie o varza si au angajat niste arhitecti care l-au refacut de la zero... Evident a ramas partea de implementare, care din pacate nu mai era atit de curata. De fapt codul central, inima produsului era atit de complicat incit nimeni nu prea mai stia ce-i acolo si n-a fost deloc schimbat in 4 ani... Teoretic poti sa sapi, dar efortul este atit de mare ca nu merita decit daca n-ai altceva de facut. Imaginati-va niste metode de citeva ecrane fiecare, recursive, care se cheama unele pe altele cu cite 6-7 parametri, unii dintre paramentrii fiind chestii de genul obiecte care contin tot felul de mapuri si alte liste :first:

Proiectul la care sint acuma buhahaha, dar am facut progrese enorme in 2 ani, l-am adus din stadiul de proiect escalat pina la high management si celule de crize la cel mai bun proiect din firma si am luat premiu, evident doar simbolic :roflmao:

Evident ca acest lucru a fost posibil doar pentru ca si-au schimbat aia mentalitatea si au inteles ca nu poti avea ditamai magaoaia functionala si sa platesti in nasturi. Ce faci cind nu gasesti asemenea intelegere de la aia cu banii? Iti dai demisia? Ce garanteaza ca urmatorii sint altfel? Am auzit tot felul de povesti de groaza, chiar din firmele unde am lucrat, eu am avut norocul sa navighez prin ape line

#13
WinstonMontana

WinstonMontana

    Active Member

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

View PostMarianG, on 14 iunie 2018 - 05:14, said:

Discutam teoretic, ce te convinge sa alegi PHP cand incepi un proiect.
pai teoretic, numai ca la mine teoria este strans legata de practica.Daca in teorie e tramvai , pai tramvai sa fie si in practica, deci teroretic, in ce domeniu s-ar dori acel proiect ?
E-Commerce/Fintech/Metrologie/Transporturi/Logistica/Tehnica Medicala/Servicii ? In ce domeniu ?

Edited by WinstonMontana, 16 June 2018 - 12:37.


#14
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,440
  • Înscris: 10.08.2005
dar nu vreau sa stiu daca pentru un proiect folosesti php, vreau sa stiu la ce proiecte folosesti php

Edited by MarianG, 16 June 2018 - 12:44.


#15
Mohombi

Mohombi

    Member

  • Grup: Members
  • Posts: 589
  • Înscris: 11.09.2015
daca e vorba de Web API exista doar o singura alegere: asp.net core

Ce am facut eu in 3 zile in asp.net (web api cu token securizat - admin dashboard - user management cu roles, policies, groups - https enforcement - arhitectura separata(MVC - de care vorbea OC mai sus) care e creata din start, la fel middleware-uri pe care le implementezi imediat prin dependency injection) ar fi durat in alte platforme saptamani.

Nu sunt programator PHP dar am amici programatori in Laravel si daca vrei API in Laravel trebuie sa folosesti un alt pachet numit Lumen care nu are token(imagineaza-ti asa ceva, api fara token Posted Image) ) by default si trebuie sa instalezi alte librarii numai ca sa ai token pt api, care e caramida proiectului.

\Numai inceputul, testingul pe PHP si fezabilitatea te costa zile. In .net le ai pe toate de-a gata, nu exista comparatie.

Edited by Mohombi, 17 June 2018 - 15:00.


#16
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,603
  • Înscris: 30.07.2003
Nu e singura cale, mai exista si Java EE.

Edited by neagu_laurentiu, 17 June 2018 - 15:19.


#17
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Asta cu asp.net core vs php pare un argument bun pentru novici: cand nu stii de unde sa le apuci, si ai nevoie de cineva sa iti arate calea.

In practica, chiar daca aleg PHP, nu reinventez roata, am deja cod reutilizabil din alte proiecte. As putea numi partea asta chiar "framework".

Oricum ai da-o, limbajul si framework-ul nu tin loc de competenta, indiferent de limbaj. Ca si daca vine asp.net si iti spune "bre, fa asa", dar tu esti incepator, tot anapoda o sa le faci.

De exemplu aici https://github.com/g...Conduit/Domain/ -- auzi cica "domain", dar daca te uiti prin clasele alea bate vantul peste domeniul anemic. (gasirea acestui proiect a durat 30 secunde: o cautare pe google si click pe rezultatul care a parut cel mai relevant; nu stiu de ce, dar am asa o presimtire ca asa sunt multe proiecte asp.net core).

Bazaconii d-astea nu ai vedea in domeniile mele, indiferent daca le scriu in PHP sau Java.


Deci Mohombi, nu te mai obosi cu limbajele, ca daca un programator e slab, si proiectul asp/java/php tot slab va fi.


Problema cu PHP e una singura: cei care scriu cod prost sunt mai vocali in ecosistem ca ceilalti, si isi impart prostia care se inmulteste. Vezi de exemplu PressWord si fanaticii lui care sunt dresati sa foloseasca global cu sarguinta. Asta deoarece marketingul face miracole.

Edited by OriginalCopy, 17 June 2018 - 16:10.


#18
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,295
  • Înscris: 21.04.2004

View PostMohombi, on 17 iunie 2018 - 14:57, said:

Ce am facut eu in 3 zile in asp.net (web api cu token securizat - admin dashboard - user management cu roles, policies, groups - https enforcement - arhitectura separata(MVC - de care vorbea OC mai sus) care e creata din start, la fel middleware-uri pe care le implementezi imediat prin dependency injection) ar fi durat in alte platforme saptamani.
Nu stiu cine ti-a spus ca programarea e un sport de viteza, dar indiferent ce-ai facut tu acolo in 3 zile cu ASP.NET faci tot in 3 zile sau probabil mai repede cu JavaEE. Si il poti instala instant pe orice sistem de operare :lol:

Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

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