Newsgroup: it.comp.www.php
Titolo: Perchè molti parlano male del linguaggio PHP

Salve
a mio personale e modesto parere, la brutta nomea che si porta dietro 
PHP come "linguaggio per faciloni", ï¿œ legata appunto allo stile 'sporco' 
di alcuni, e quindi php non ha colpe in questo.
Probabilmente se molti programmatori iniziassero dal C, almeno un 
pochino, avrebbero un'idea della programmazione piï¿œ rigorosa...
Io ad esempio ho iniziato da php, e sapete quando ho poi iniziato ad 
utilizzarlo in maniera piï¿œ dignitosa?
Dopo un paio di esami sul C e sul Java...e lo studio dell'elaboratore 
rispetto al trattamento dell'informazione.
E' questo il problema, senza basi forti, anche io inizialmente 
'approssimavo', ma poi la chiarezza si ï¿œ fatta strada, un po' alla volta.
Non si puo' iniziare a programmare in nessun linguaggio, se non sai come 
funziona il tuo elaboratore, se non sai come funziona l'aritmetica 
binaria, i registri, le strutture dati,la gestione della memoria....
etc...etc.
Non puoi comprendere il presente, senza conoscere il passato.
buon lavoro

 di alcuni, e quindi php non ha colpe in questo.
Si puo scrivere pessimo codice in qualsiasi linguaggio (e ne ho visti TANTI di
linguaggi).
Se c'e' chi crede che il PHP sia un linguaggio inferiore, peggio per lui.
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
      A long time ago,
        In a galaxy far, far away...

 pochino, avrebbero un'idea della programmazione più rigorosa...
Qui no. Il C e` uno dei linguaggi statici meno rigorosi che conosca, e 
porta piu` facilmente di PHP a scrivere codice veramente sporco.
Io sono partito dal Basic sul C64, passato al C su Amiga, poi ho studiato 
Pascal e Cobol a scuola, e Python per conto mio, in parallelo a PHP. E di 
recente Java.
Tra questi, sceglierei Pascal o Python per imparare a programmare, ma 
soprattutto una bella dose di concetti di programmazione a oggetti 
applicati da subito (quindi non solo teoria, e non dopo un mese che 
programmi a procedure).
Anche PHP puo` andar bene per imparare, ma non ho ancora trovato un libro 
che lo spieghi in modo decente. Partono tutti con il codice PHP infilato 
in pagine HTML senza un minimo di separazione logica, e proseguono con 
l'accesso a DB senza nessuna verifica dei dati. Tirano fuori gli oggetti 
solo quando sono costretti dall'XML.
I "corsi" e i "tutorial" su Internet sono ancora peggio.
Il brutto e` che penso che un libro fatto bene su PHP non venderebbe 
nemmeno la meta` di un "libro rumenta" come i suddetti.
Bye.

 
hai ragione
perï¿œ php rende la vita 'troppo' facile, e quindi per chi non ï¿œ abituato 
alla rigorositï¿œ di linguaggi fortemente tipizzati come il C, viene 
facile ad assumere "cattive abitudini" di programmazione...
Ogni linguaggio nasce per uno scopo, non ha senso perdere tempo con il C 
, se devi realizzare qualcosa che in php lo fai in 5 minuti e molto 
meglio....e viceversa.
Quindi non c'e' nessuna gara al merito....ed entrambi si possono 
utilizzare male o bene, perï¿œ ï¿œ vero che se uno ha delle buone basi, poi 
gli viene facile programmare in C,Php,Java,C#.....e cosï¿œ via.
Pensa che io sto' iniziando adesso a studiare un po' di assembly, che 
praticamente non mi serve a nulla, ma mi aiuta a 'pensare'...
ciao

 recente Java.
bhe' sei comunque arrivato al php dopo un persorso più o meno lungo.
per quanto riguarda la non rigorosità del C, il problema è che C nasce 
non per porre limiti al programmatore, ma per dargli la massima 
espressività, e il totale controllo della macchina.
ciao

 praticamente non mi serve a nulla, ma mi aiuta a 'pensare'...
Da quando c'e' il MacroAssembler che ti permette di fare cose tipo
MOV   AH,AH+1;
l'Assembler non e' piu' quello di una volta! :)
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
I sometimes catch myself looking up at the moon, remembering the
changes of fortune in our long voyage, thinking of the thousands
of people who worked to bring the three of us home. I look up at
the moon, and wonder: When will we be going back? And who will
that be?
    --Jim Lovell, "Apollo 13"

 Tra questi, sceglierei Pascal o Python per imparare a programmare, ma 
Il Pasacl (quello puro di Wirth, non il TurboPAscal che e' facile) e' un OTTIMO
strumento per imparare a programmare. Per imparare, pero', perche' fare progetti
complessi in Pascal "puro" e' da suicida.
E' un po' come una "nave scuola" dove impari le basi e capisci come si fanno le
cose nel modo giusto.
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Come mai la Lemonsoda e` fatta con aromi artificiali
e nel detersivo per i piatti trovi vero succo di limone?

 bhe' sei comunque arrivato al php dopo un persorso più o meno lungo.
Questo e' il punto.
Chi sa programmare "come si deve" (leggi: ha esperienza) riesce a scrivere del
codice "pulito ed elegante" anche in GW-BASIC o LOGO ("REPEAT 4 [FORWARD 50 LEFT
90]").
Chi non ha esperienza, fa casino anche con un batch di MS-DOS/Windows
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
There are very few personal problems which can't be solved by a
suitable application of high explosives.

 'sporco' di alcuni, e quindi php non ha colpe in questo.
Assolutamente d'accordo con te.
E' vero che si puï¿œ scrivere codice sporco in tutti i linguaggi ma un 
linguaggio come Java, per esempio, ï¿œ senza dubbio piï¿œ rigoroso e in un certo 
senso ti "obbliga" a scrivere codice meno sporco.
-- 
Elminster 

 solo quando sono costretti dall'XML.
Concordo. Purtroppo.
ciao
Filippo B.
--
http://www.danzainsieme.it
http://www.boschetti.info

 Non puoi comprendere il presente, senza conoscere il passato.
Peccato che poi ci siano in circolazione validissimi programmatori C che 
scrivono cagate in PHP tipo include($_GET['page']); convinti che il 
capitolo "sicurezza" sia stato inserito per sbaglio.
E sono mooolti di piï¿œ di quel che si pensa..

 di alcuni, e quindi php non ha colpe in questo.
Ciao,
alcuni compagni e amici di università, mi dicono:
"ma tu programmi in php??ma non è un linguaggio di programmazione...."
a me non importa, certo c'è molta gente che non sa nulla di
programmazione che scrive php, ma questo non a nulla che fare con php,
ma con il modo di scrivere...

 programmare ad oggetti? 
Per conoscere i quei paradigmi di programmazione e usarli quando serve (non per
usarli sempre!).
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
For every action, there is an equal and opposite criticism.

 "ma tu programmi in php??ma non � un linguaggio di programmazione...."
Questi compagni e amici di universita' hanno, evidentemente, poca dimestichezza
con il mondo del lavoro e devono stare attenti perche' potrebbero finire come
primo impiego a lavorare in un team in cui si programma in COBOL.
Anzi: se lo meriterebbero.
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Why do we want intelligent terminals when there are so many stupid users?


Scusa se mi intromentto ma vorrei dire la mia.
Iniziai con il Basic del C64, poi Linguaggio macchina del 6510 che era del 
C64, poi GWBasic, un po' di C, ma solo un po', quindi  Micrisoft Visual 
Basic, Visual Basic per applicazioni (per Excel ed Access), quindi 
Javascript, ed ultimi in ordine di tempo PHP-MySQL.
Nel frattempo, per riempire gli spazi vuoti :-))), grafica vettoriale.
Ritengo di non avere la competenza che hanno molti di voi, ma credo che ogni 
linguaggio abbia i propri punti di forza e di debolezza.
Per il PHP, ritengo sia un perfetto collante fra linguaggi e codici diversi, 
non solo con MySQL, ma anche CSS, html e perfino Flash e javascript.
In quanto ad imparare a programmare � un po' come imparare a parlare, se uno 
nasce in Germania impara il tedesco, se uno nasce in Francia impara il 
francese; ne assimila le parole, il modo di costruire le frasi, la 
grammatica eccetera. Quando � pi� grande e vuole imparare un'altra lingua 
deve imparare parole diverse per dire le stesse cose a come metterle assieme 
queste parole nella lingua che sta imparando, ma parte da una base ben 
ferma.
Secondo me questo vale anche per chi vuol programmare in linguaggi diversi.
Poi quando uno sa leggere e scrivere, pu� scrivere poesie bellissime o 
cacate pazzesche, buon codice o gazzabugli immodificabili da dover 
riscrivere l'applicazione, ma questo sta alla predisposizione o ai lampi di 
genio di ciascuno.
Ciao
Leo

 procedure e sono sopravvissuto..
Perche` ho notato che nella programmazione a oggetti si insegna e viene 
anche naturale strutturare e suddividere meglio il codice.
A scuola si sono sperticati a spiegare il famoso sistema dividi e 
conquista, applicandolo alle procedure (suddividi il problema in vari step 
e ingloba ogni step in una procedura). Beh, trovo che sia fondamentalmente 
sbagliata questa applicazione. :)
Nella programmazione a oggetti viene molto piu` naturale la divisione, 
perche` sei "costretto" a vedere prima i dati su cui lavori, e poi le 
procedure da applicare a questi dati, esattamente l'opposto della 
programmazione procedurale, ed esattamente come fai nella vita normale.
Si impara a scrivere codice pulito e soprattutto riciclabile molto piu` 
velocemente.
Bye.

 buon lavoro
Preambolo: io amo il php, è il primo linguaggio che ho imparato e lo
uso tutt'ora.
Sono d'accordissimo con te sul discorso dell'ordine del codice (no
solo a livello di stesura, ma anche di funzionalità), anche io come
tutti i 'faciloni' ho iniziato da zero su php.. dopo 3 anni quando
rivedo uno script che scrissi all'inizio mi viene letteralmente da
piangere (per la vergogna ;)).
Però, per quel che riguarda l'ordine inteso come indentazione et
similia del codice, ci terrei a dire che è un concetto che può essere
molto relativo, e che un linguaggio ti 'obblighi' (come fà python) ad
avere una certa indentazione non sempre è una cosa positiva, a mio
modesto parere.
Inoltre, vorrei aggiungere che purtroppo le critiche che vengono mosse
al php non sono solo su quest'argomento; una è sicuramente il supporto
dei character set che dovrebbe essere sicuramente migliorata, un'altra
è il discorso delle comparazioni:
if ("false" == true) echo "true\n";
// => true
if ("false" == false) echo "true\n";
// => false
if ("false" == 0) echo "true\n";
// => true, wtf
if (false == 0) echo "true\n";
// => true, as expected
// so "false" = true && "false" = 0, so "false" is true and
// false is false and we haven't even discussed identity, yet
if ((string)"false" === (int)0) echo "true\n";
// => false, ...ok...
if ("0" === 0) echo "true\n";
// => false
if ("false" === false) echo "true\n";
// => false
if ((int)"0" === 0) echo "true\n";
// => true, with type coercion
fonte: 
http://maurus.net/resources/programming-languages/php/
Ma d'altronde, quale linguaggio è perfetto?
Io resto sempre dell'idea che il peggior difetto di qualsiasi
linguaggio di programmazione è fondamentalmente il programamtore che
lo utilizza ;)

 velocemente.
Io scrivo sia funzioni (molto atomiche) sia oggetti.
E col tempo ho visto che riciclo piu' facilmente le funzioni degli oggetti.
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
It is impossible for an optimist to be pleasantly surprised.

RoundRobin ha scritto:

il C mica ï¿œ tanto rigoroso prova ad accedere ad un array oltre l'ultimo
elemento o tramite un puntatore non inizializzato ad un area di memoria
oppure i vari cast ect...
In C si possono scrivere tante di quelle porcate che il PHP si sogna.
Il java ï¿œ rigoroso e formale un altro linguaggio che davvero insegna un
certo rigore ï¿œ il pascal. Hai miei tempi si studiava alle superiori, con
matematica nei licei e con sistemi negli istituti tecnici. Anche i primi
esami dell'universitï¿œ sia di algoritmi e strutture dati sia di
programmazione I e II ho usato il pascal. (ora credo usino java)
Il C l'ho studiato a sistemi operativi e programmazione di sistema (in
special modo sotto linux) ma ripeto io il C non lo vedo cosï¿œ rigoroso.
micheg

 un quarto della velocità.
Non sempre. Una perdita prestazionale ce l'hai di sicuro, ma il quadruplo 
del codice lo scrivi solo in Java. ;P
Avere una classe che ti astrae l'accesso a una tabella nel DB significa 
che non devi piu` scrivere 100 righe di codice per ogni tabella usata nel 
tuo sito solo per inserire una riga (sanitizza input, prepara la query, 
escape dei parametri, verifica risultato della query. E se devi fare anceh 
un update devi complicarlo ancora di piu`), ma puoi farlo in poche righe: 
istanzia oggetto, valorizza campi, scrivi su DB (per l'update diventa: 
prendi oggetto esistente, valorizza campi, scrivi su DB). Tutto il resto 
lo fa la classe da cui erediti.
Come dicevo: se hai una tabella fai prima a farlo procedurale e amen. Se 
ne hai 60 cambia un po'. :)
Puoi farlo anche procedurale (tutto "diventa" procedurale dentro la 
CPU...), ma e` meno ordinato e meno flessibile.
Sono anche convinto che uno che sa programmare a oggetti trova semplice 
programmare procedurale, ma uno che sa il procedurale ha molte difficolta` 
a capire la programmazione a oggetti. Soprattutto per questo consiglio di 
partire direttamente a oggetti, quando si impara.
Bye.

 use the right tool for the job
lo penso anch'io: un programma e' una cosa che deve fare il suo lavoro, 
e deve essere facimente manutenibile anche da chi non lo ha scritto. A 
volte si perde di vista l'obiettivo per seguire eleganza stilistica...
Ho lavorato con persone che stracciavano l'anima con i decimali delle 
release delle librerie, con aggiornamenti improbabili "per essere 
allineati" e avere in linea funzionalita' che mai avremmo usato, che 
scrivevano commenti in inglese (e poi a pranzo parlavano in dialetto, e 
male ;))
E il camion non si riempiva mai, e in produzione si giravano i pollici...

 Bye.
Io ne conosco almeno due ottimi, anche se non so quante copie anno venduto:
Object-Oriented PHP
e
The definitive guide to Symfony
(certo il secondo parla di symfony non tanto di php scusso ma insiste
molto sull'oop e sulla separazione tra contenuto, dati e codice)
micheg

 partire direttamente a oggetti, quando si impara.
Per quel che mi riguarda sono certo che tu abbia ragione: probabilmente 
sono troppo vecchio e pigro per impadronirmi davvero della 
programmazione OO, e per i progetti che devo sviluppare adesso non ne 
sento più nemmeno la necessità (uno dei vantaggi dell'età che avanza... 
qualcun'altro fa il lavoro sporco :-) ).
Ciao



wrote:

Mi dai casa produttice e autore del primo?
Ho quasi finito il manuale di postgres, una ripassata a php non fà mai
male ;)

 male ;)
No starch press, Peter Lavin (ha scritto qualche articolo anche sul sito
onlamp di oreilly), il libro ha pure un sito di riferimento:
http://objectorientedphp.com/
� del 2006 (quando ho ripreso in mano php dopo anni di java) non so se
in questi 3 anni � uscito qualcosa di valido pi� aggiornato.
(sarebbe pure l'ora di una seconda edizione grazie al php 5.3, alle
closure, alla standard php library, al late static binding tre-quattro
nuovi capitoli ci starebbero tutti)

 // false is false and we haven't even discussed identity, yet
Mi sembra un po' stiracchiata, eh...
Se non fai il cast il php tenta di farlo a modo suo, cosa che in
ambito web *in genere* non causa problemi.
Se il programmatore prevede di avere input non sanitizzati o
comunque incerti, deve fare il casting esplicito o sanitizzare
l'input.
-- 
ValeRyo
XT600 "Katoki Pajama" - 
http://www.slimmit.com/go.asp?7Y9
CBR600F "Cerbero" - In vendita - 
http://www.slimmit.com/go.asp?7X0
GamerTag: 
http://card.mygamercard.net/IT/nxe/ValeRyo76.png
 

>
Ok se parliamo di C, ma lo scopo dei linguaggi ad alto livello non era 
proprio quello di liberare il programmatore dalla necessità di conoscere 
l'architettura dell'elaboratore per concentrarsi solo sul'applicazione?
Temo che il dibattito, per quanto lungo, non avrà mai una risposta unica.
Saluti.