Come rompere il paradigma "php is a bad language"? [chiuso]


19

PHP non è un linguaggio volgare (o almeno non cattivo come alcuni potrebbero suggerire). Avevo insegnanti che non sapevano nemmeno che PHP fosse orientato agli oggetti fino a quando non glielo dissi. Ho avuto clienti che ci sfidano immediatamente quando diciamo che siamo sviluppatori PHP e ci chiedono di non usare linguaggi e framework chic come Django o RoR o linguaggi "enterprise e solidi" come Java e ASP.NET.

Facebook è basato su PHP. Ci sono molti progetti solidi che alimentano il web come Joomla e Drupal che vengono utilizzati nell'impresa e nei governi. Ci sono framework e librerie che hanno alcune delle migliori architetture che ho visto in tutte le lingue (Symfony 2, Doctrine). PHP ha la migliore documentazione che abbia mai visto e una grande comunità di professionisti.

PHP ha funzionalità OO avanzate come la riflessione, le interfacce, per non parlare del fatto che ora PHP supporta il riutilizzo orizzontale in modo nativo e pulito attraverso i tratti .

Ci sono cattivi programmatori e script kiddie che danno a PHP una cattiva reputazione, ma alimentano la comunità PHP allo stesso tempo, e poiché è così facile fare cose PHP puoi spesso fare le cose nel modo sbagliato, scontato, ma perché dare la colpa al linguaggio?.

Ora, per ridurlo a una vera domanda rispondibile: quale sarebbe una buona e solida e breve e dolce discussione per evitare di essere disapprovati e fermare i pregiudizi in un colpo solo e difendere il tuo onore quando dici che sei uno sviluppatore di PHP? .

(biscotto gratuito con la panna montata a coloro che hanno prove empiriche di convincere qualcuno - cliente o altro - sul posto)

PS: usiamo Symfony e il codice finisce per essere bello e mantenibile

PPS: Facebook è scritto in PHP, compilato in C ++ tramite HipHop e distribuito su Hadoop. Qui: http://arstechnica.com/business/2012/04/exclusive-a-behind-the-scenes-look-at-facebook-release-engineering/1/


9
Per cominciare, contrassegna tutti i commenti anti-PHP su Programmatori. C'è almeno uno sviluppatore di PHP tra i moderatori che ama davvero eliminare quelli ...
yannis

23
Scrivi un buon codice PHP
Charles Sprayberry

42
Solo una nota, odio davvero quando le persone PHP introducono l'argomento "FB è costruito su PHP". Questo è bs, è costruito su enormi sistemi distribuiti come Hadoop e le parti che fanno veramente cose sono fatte in C. PHP è usato per il template e l'interfaccia utente, non è abbastanza per dire "FB è costruito su PHP" ...
TC1

10
@NB Sì, ma in questo caso, IMHO dicendo che "FB è costruito su PHP" è come dire che StackOverflow è costruito su CSS e JavaScript, perché ha alcuni tocchi di interfaccia utente qua e là ...
TC1

13
Non ti assumerei perché non voglio mantenere il codice PHP. PHP sta acquisendo funzionalità come Perl e JavaScript e altre lingue affrettate, ma il suo nucleo è stato progettato in fretta e non si può cambiare. Forse dovresti considerare di imparare un po 'di Django, RoR e Grails e quindi essere agnostico.
Giobbe

Risposte:


40

L'unica risposta che ho è questa: tutto fa schifo.

Puoi trovare tonnellate di argomenti contro OOP che vanno bene (una rapida ricerca li rivelerà) rispetto alla programmazione funzionale o procedurale. Sembra che indichi che il supporto OO di PHP lo difende.

Google vuoto fa schifo e troverai risultati per qualsiasi cosa. Python fa schifo . Rubino fa schifo . Rails fa schifo . PHP fa schifo . Java fa schifo .

Vuoi sapere cosa fa davvero schifo? I programmatori. I programmatori fanno schifo. Qualsiasi buon sviluppatore dovrebbe essere in grado di creare un'applicazione, un front-end e un back-end sorprendenti , indipendentemente dalla lingua, anche se non avevano familiarità con la lingua! (Vale a dire, un buon programmatore dovrebbe essere in grado di imparare e lavorare con qualsiasi lingua in modo efficace).

Si noti inoltre che il successo di un'applicazione non ha nulla a che fare con il suo codice. Ho sentito che il codice di Facebook è terribile, ma per Dio è efficace. Lo stesso vale probabilmente per Wikimedia (Wikipedia è costruita su PHP ed è anche un sito Web estremamente popolare). Ciò che conta davvero sono i risultati!

PHP è la lingua che conosco personalmente di più. Lo difenderò fino alla morte. Ho lavorato con framework PHP, codice PHP diretto e PHP, python e ruby (e persino Java) tutti per lo sviluppo web. Non posso dire che uno sia particolarmente migliore dell'altro. Ciò che conta di più sono gli sviluppatori e gli algoritmi. Ho visto un codice incredibilmente buono e completamente orribile in molte lingue (specialmente PHP da quando ho così tanta esposizione).


Ora per la tua domanda: dipende da chi hai a che fare

Gli uomini d'affari

Si preoccupano principalmente dei risultati e del rapporto costo-efficacia. Il fatto che Facebook, Wikipedia e Wordpress di grande successo utilizzino PHP dovrebbe essere più che sufficiente per convincerli che è un linguaggio efficace per la creazione di applicazioni di successo.

I programmatori

Lascia che il tuo codice parli da solo. Se uno sviluppatore afferma che PHP è inferiore in qualche modo, mostra loro un codice PHP che ritieni efficace. La prova del budino è nel mangiarlo.


8
"Qualsiasi bravo sviluppatore dovrebbe essere in grado di creare un'applicazione, un front-end e un back-end straordinari, indipendentemente dalla lingua", ripeterlo dopo averlo provato in Malbolge.
Michael Borgwardt,

5
Non penso che un buon programmatore possa scrivere un buon codice in un linguaggio che non conosce. Decente, forse, ma non buono. Questo perché scrivere un buon codice in qualsiasi lingua richiede una buona conoscenza delle biblioteche e della lingua stessa.
svick

4
Non sono d'accordo; un buon sviluppatore dovrebbe essere in grado di familiarizzare con le conoscenze necessarie per scrivere buone applicazioni. Una buona conoscenza delle librerie e della sintassi è importante, ma è qualcosa che un buon sviluppatore può imparare facilmente. Ciò che è molto più difficile sono algoritmi e concetti (e probabilmente pazienza) .. anche se il linguaggio è Malbolge. O forse sto pensando a un grande sviluppatore.
Esplosione di pillole

7
success of an application has nothing to do with its code<- Vero. Ma quando le persone dicono che "PHP è un linguaggio volgare", non significano "le applicazioni scritte in PHP sono cattive", piuttosto, significano che "le applicazioni scritte in PHP spesso non sono divertenti su cui lavorare a causa degli spaghetti del codice". Ci sono ottime applicazioni scritte in PHP, per essere sicuri. Ma non credo che questa risposta affronti ciò che i programmatori intendono quando chiamano PHP "cattivo".
Billy ONeal

2
@BillyONeal Qual è la tua metrica per stabilire se una lingua è "buona" o "cattiva?" Le applicazioni sono tutto .. a nessuno importa del codice . Linus Torvalds è andato in estasi per quanto terribile sia il C ++ - puoi dire che tutto è male perché alcuni programmatori scrivono codice cattivo in esso.
Esplosione di pillole

20

PHP ha una storia sordida. È molto meglio ora che è stato anche poco tempo fa, ma c'è stato un tempo, un tempo molto lungo, in cui sono state incoraggiate e difficili da evitare molte cattive pratiche e modelli. Esiste un'intera generazione di terribili codici PHP là fuori che è ancora in circolazione, e nella misura in cui i nuovi programmatori stanno imparando leggendo il vecchio codice, stanno imparando comportamenti scorretti. PHP ora potrebbe non meritare la sua reputazione di blackend, ma sicuramente se lo è guadagnato comunque.

La tua scommessa migliore per difendere PHP è quella di prendere attentamente le distanze e distinguere l'attuale stato dell'arte dalla storia con cui tutti hanno familiarità. Puoi dire che PHP non è un linguaggio terribile, ma se stai parlando con qualcuno che è stato nel settore per un certo numero di anni, la loro memoria dice loro altrimenti.

Mostra loro come il team di PHP ha imparato dai loro errori e ha cambiato la lingua in meglio. Sono finiti i tempi delle citazioni magiche e dei globi registrati. Andato è il paradigma globale di tutto, e la modalità sicura e mysql_escape_string. Spiega loro che i veri programmatori PHP usano sempre spazi dei nomi e query con parametri, evitano le funzioni obsolete e mettono sempre il loro codice di libreria fuori dalla radice del documento.

PHP è cambiato e i programmatori PHP sono cambiati. Ecco perché PHP è la meravigliosa piattaforma che è oggi. Inoltre, è l'unica piattaforma che sai che i tuoi clienti avranno preinstallato. È enorme.

Come nota a margine, raccomanderei di non citare i motori e i framework CMS esistenti come una grande vittoria per PHP. Corri il rischio che segnalino cose come lo studio sulla sicurezza di Websense di 4 giorni fa, dimostrando che il 94% delle recenti infezioni dei siti Web sono state contro i siti Web PHP che eseguono software come Joomla e Wordpress. Non è il tipo di azienda con cui vuoi essere visto. Invece, sottolinea che il tuo codice sarà molto più sicuro di tutte le altre cose.


1
+1 - ma - ma - affermare che il tuo codice sarà "molto più sicuro" delle revisioni tra pari del codice da parte di diversi professionisti non ha intenzione di trattenere molta acqua per nessuno a metà esperienza nella sicurezza. Tutti scrivono bug di sicurezza. Il trucco è solo risolverli un passo avanti rispetto ai cattivi.
Billy ONeal

@BillyONeal sì. L'ultimo paragrafo ha lo scopo di colpirti come un po '... strano, e di farti davvero ripensare il tuo approccio alla sicurezza. Ho fatto molte ricerche sulla sicurezza delle webapp PHP rispetto a quelle non PHP, e le relazioni sono preoccupanti, fortemente distorte rispetto a PHP. Questo non vuol dire che PHP sia un male, ma la sicurezza è una vera preoccupazione.
Tylerl,

1
"Inoltre, è l'unica piattaforma che sai che i tuoi clienti avranno preinstallato" Questa affermazione mi sembra assolutamente falsa, non tutti i server distribuiti sono distribuiti con uno stack LAMPhp, né alcuna distribuzione di server linux comune con cui ho provato PHP preinstallato. Tuttavia, ogni distribuzione di Linux che abbia mai usato viene fornita con Python 2.x. Sospetto che alcune utility comuni si basino su di esso.
ThorSummoner,

9

PHP è il COBOL del web. Entrambe le lingue non ottengono alcun rispetto, eppure molte persone si guadagnano da vivere costruendo e mantenendo i sistemi scritti in esse, e sono presenti in volume in quasi tutti i principali sistemi informatici per il loro mondo nativo ( cioè , il web e le attività commerciali rispettivamente). Entrambe le lingue sono sottovalutate dai professionisti di altre lingue, più popolari, basate in gran parte su abitudini vecchie e obsolete praticate dai programmatori che da allora hanno imparato meglio e migliorato i loro strumenti.

PHP dovrebbe essere così fortunato, che vive la vita di COBOL. COBOL è in circolazione da più tempo di qualsiasi cosa tranne FORTRAN, e non scomparirà presto. Ci sono molti programmi COBOL nell'uso quotidiano più vecchi delle persone che li mantengono. Potrebbe non essere "il nuovo calore", ma ci saranno sempre soldi da guadagnare lavorando e con esso.


4

Penso che possa anche essere utile capire l'altro lato della medaglia e riconoscere le carenze di PHP. Mentre PHP ha fatto molti progressi dall'essere un linguaggio modello, ci sono ancora molte cose che potrebbero essere migliorate. Ci sono alcuni punti in cui manca ancora PHP: Unicode, caratteristiche funzionali, organizzazione della libreria standard, arrayecc.

Quello che suggerisco è che, al fine di fare una discussione costruttiva sui punti di forza e di debolezza di PHP, potrebbe essere utile riconoscere tutto ciò. "Sì, lo so che la libreria standard PHP non è molto organizzata. Ma se fosse stata scritta oggi, potrebbe fare uso di spazi dei nomi e API orientate agli oggetti". "Sì, so che l'array predefinito crea un po 'di confusione mescolando il dizionario e le strutture dell'array. Ma se si vogliono raccolte migliori, si può fare uso dell'SPL".

Il tuo punto di vista risulterà più forte se dimostri di sapere che gli argomenti degli altri hanno qualche motivo.


2

Perché?

Chiunque ti faccia sentire che devi difenderti (che si tratti di carriera, coniuge, abitudini di spesa, ecc.) Sta sprecando il proprio tempo. Prendersi il tempo per difendersi è semplicemente umorizzare il tipo sbagliato di persone - ora stai sprecando il tuo tempo, così come il loro.

Elimina queste persone dalla tua vita - stai meglio senza di loro.


4
Quindi, la risposta è prenderla sul personale e ignorarla ?. Questo è un problema culturale, preferirei affrontarlo e provare a migliorare le mie argomentazioni e più conciso per abbattere l'ignoranza.
dukeofgaming

3
Nel vuoto, sono d'accordo con i tuoi consigli qui, ma PHP è indifendibile. Mi stupisco sempre di come Mark Zuckerberg sia riuscito nonostante la terribile PHP: codinghorror.com/blog/2008/05/…
Jim G.

1

Non c'è una breve e dolce battuta che puoi risolvere per convincere la gente della dignità di PHP e dei suoi sviluppatori, ma hai scritto un argomento molto convincente prima di porre la domanda.


1

Per affrontare il "PHP è un linguaggio volgare", devi capire perché l'individuo in questione pensa che sia un linguaggio volgare. Forse ha lavorato a un brutto progetto scritto in PHP. Forse non gli piace semplicemente aggiungere un prefisso alle loro variabili $. Forse loro stessi hanno tentato di usare la lingua e scritto disordine non mantenibile. Molti programmatori che provengono da altri linguaggi di programmazione vedono PHP e vedono un casino, perché ciò che ha senso in PHP non ha davvero senso in altre lingue o su altre piattaforme. Ad esempio, in PHP, le matrici sono il "nastro isolante dell'universo" e sono utilizzate per realizzare praticamente qualsiasi cosa, mentre in altri linguaggi di programmazione una cosa del genere sarebbe assurda.

Vorrei suggerire una combinazione di risposte qui.

  1. Come ha detto Tylerl , devi dimostrare che il PHP moderno è significativamente migliore rispetto ai suoi cugini più anziani. Andato è la cattiveria di create_function. Andato è la giungla di chiamare includemanualmente ovunque.
  2. Riconosci che ci sono errori in PHP. Vi sono errori in ogni linguaggio di programmazione. Dire diversamente farà sì che molti programmatori seri ignorino completamente la tua risposta come "fanboi".
  3. Mostra alle persone cose facili in PHP che sono difficili in altri linguaggi di programmazione. I linguaggi di programmazione sono progettati per semplificare alcune attività, il che rende necessariamente difficili altre attività. C? La manipolazione della memoria e gli hack dei bit sono davvero facili e il linguaggio è davvero semplice, ma mantenere grandi applicazioni è difficile. Giava? Non ha free, e tutto è "OO-ish", ma il tempo di esecuzione è grande e OO può essere limitante. C ++? Consente di creare tipi che si comportano esattamente come tipi primitivi (ad es. Int) nella lingua, ma che presentano una grande complessità. PHP? Rende davvero facile iniziare senza molta conoscenza della programmazione, ma di conseguenza ha un sacco di codice spazzatura pubblicato su Internet.
  4. Riconosci i vantaggi non linguistici di PHP. Ci sono ancora molte cose in PHP, come linguaggio che può essere ... fastidioso con cui lavorare. Ma è facile da configurare, facile da distribuire e viene fornito con un ampio set di ottime librerie alle quali è possibile "collegarsi" senza molto lavoro aggiuntivo.

C'è un posto per ogni lingua. Scegli la lingua adatta al problema in questione, non cercare di mettere una lingua preferita in luoghi in cui non appartiene.


1
-1: Perché stai cercando di difendere PHP? Fa schifo: codinghorror.com/blog/2008/05/…
Jim G.

1
@JimG .: Perché è quello che l'OP mi ha chiesto di fare. Qui interpreto l'avvocato del diavolo; Personalmente disprezzo lavorare con PHP. Ma solo perché un sistema è fastidioso con cui lavorare non significa che non ci siano cose positive su quel sistema. Si può imparare anche dai principali fottuti. :)
Billy ONeal

@BillyONeal Perché odi lavorare con esso? Decidendo le cose da solo.
johnny,

@ Johnny: Principalmente, essendo solo un linguaggio di scripting che non è adatto per la costruzione di sistemi di grandi dimensioni. I linguaggi di scripting sono l'ideale per la prototipazione rapida, la facilità di distribuzione e sono dotati di librerie standard di grandi dimensioni nella confezione. Ma la costruzione di sistemi di grandi dimensioni con loro spesso comporta un disordine non mantenibile a causa dell'incapacità di imporre controlli e vincoli in fase di compilazione. Le stesse cose che rendono PHP flessibile e buono per gli scenari di scripting (ad esempio le variabili non tipizzate) rendono difficile costruire sistemi con più di un paio di persone che utilizzano un componente.
Billy ONeal,

@Johnny: Per chiarire - non sto dicendo che costruire sistemi di grandi dimensioni con PHP sia impossibile - Facebook e Co. sono la prova positiva che è molto possibile. Solo che finisce per essere più difficile che con le lingue che forniscono una migliore sintassi del tempo di compilazione e controlli semantici.
Billy ONeal,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.