Newsgroup: it.comp.www.php
Titolo: un piccolo dubbio...

php si sa non puo' certo definirsi un linguaggio fortemente tipizzato. Ma
voi, come la pensate?
Siete favorevoli alla tipizzazione piu' o meno forte di un linguaggio specie
se interpretato?
Pensate che la tipizzazione sia uno strumento in piu' per prevenire
eventuali falle di sicurezza?
Scusate per la domanda forse banale, ma ultimamente un mio amico e' passato
alla nuova piattaforma m$ (dotnet) ed e' rimasto favorevolmente ammaliato
dalla struttura del linguaggio, dalle possibilitra del framework e via
discorrendo. E voi cosa ne pensate?
-- 
Questo messaggio si autodistruggera' entro 10"
    _     _
  o' |,=./ `o
     (o o)    
 ooO--(_)--Ooo-

 
non vorrei sollevare un flame ma
purtruppo non e' un problema di tipizzato o non tipizzato.
attualmente .net consente di fare molte piu' cose di php... e
difatti non sono puo' confrontabili.
Si puo' confrontare php con asp  ma non con .net.
poi sesi vuole parlare di prestazioni o altro...
... con php 5 e la nuova impostazione degli oggetti si sta cominciando a
farequalcosa ma siamo ancora indietro.

 difatti non sono puo' confrontabili.
...ecco, e' questo che mi sfugge e che continuano a dirmi.
Oramai sono anni che in un modo o nell'altro programmo, ho iniziato con il
linguaggio macchina su aim65 e 80A, ho attraversato i plc ecc... ma ancora
non riesco a capire perche', considerando due linguaggi di programmazione
ad alto livello, cio' che puo' essere fatto con uno non possa essere
comunque fatto anche con l'altro.
In soldoni, si puo' sapere cosa fa .net che non puo' essere poi fatto con
php? Non ditemi aaaaa.... ma l'oggetto qui, il metodo la, il framework di
qua. No. Dato un algoritmo, un programma, una sua parte, una funzione, una
classe o quello che volete voi fatto con .net, voglio sapere se non puo'
essere "ricostruito" con php adottanto gli strumenti che php mette a
disposizione (piu' potenti, meno potenti o quello che sono ma pur sempre
propri di php. Non voglio quindi sentire "eh!, ma per quella funzione o
classe o quello che e' ho adottato quella procedura, funzione nativa o
quella che e' che in .net c'e' e in php no").
Scusate la tigna, ma un mio professore di programmazione continuava a dire
(anni fa naturalmente) che si, vabbe', visual basic qui e visual basic la,
va bene per i giochetti. Per le cose serie occorre pensare ad altro...


 va bene per i giochetti. Per le cose serie occorre pensare ad altro...
Qui non capisco se concordi o dissenti.
Saluti.
P.S. i 3 paesi citati esistono veramente.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 php? 
Niente. L'unica differenza è che esistono implementazioni di PHP per 
molti cloni di UNIX, per i sistemi operativi Microsoft, comprensiva di 
interfaccia per gli oggetti COM e ActiveX, e persino per MacOS X, mentre 
per l'architettuta .NET esiste una sola implementazione, ovvero quella 
per i sistemi Microsoft. Traine tu le conseguenze.
-- 
Alla prossima,
Marco

 
..beh, se proprio si deve dire tutta, la via piu' breve non sempre coincide
con una linea retta. Inoltre, in un percorso occorre anche considerare che
un motore pesante, anche se potente, non equivale esattamente con un costo
minimo, una migliore prestazione ed una migliore condizione di utilizzo.
Si rischia, voglio dire, di avere un motore primo elefantiaco, inamovibile,
chiuso a riccio.
Ritornando quindi al tuo esempio, la strada che da Chiopris porta a Medeuzza
potrebbe essere lunga quanto quella via Viscone se fatta con un elefante.


 
ecco, questo mi spinge a pensare e dubitare sulla reale necessita' di
un'architettura simile, chiusa ed unica quasi a voler dire "dopo di me
nessun altro".
Inoltre, quali e quanti saranno mai tutti st'applicativi che richiedono la
meravigliosa intelligenza e potenza di dottenette e del suo esclusivissimo
club framework?


 nessun altro".
Mah... Secondo me, ma potrei sbagliare, l'architettura .NET è stata 
partorita dalla Microsoft in grande ritardo per correre dietro a Sun, 
che, finalmente, dopo anni e anni che straparlava della sua JVM da 
mettere persino nell'aspirapolvere, è riuscita a far girare Java fuori 
dai PC (e dentro i cellulari).
Insomma, a Redmond non ci credevano, non ci hanno creduto, finché... O, 
alternativamente, speravano che Sun schioppasse prima (e loro, lo 
zampino, hanno provato a mettercelo). Non lo so, e poi è OT.
In fondo, è un mercato appena nato e con grandi possibilità di 
espansione: alcuni cellulari già implementano visualizzatori di 
documenti in formato MS Word, tra qualche tempo ci sarà (forse) Office 
.NET for Symbian OS e così via. Write once, run everywhere.
Comunque, realizzare un compilatore di Intermediate Language per PHP non 
dovrebbe essere così impossibile: Parrot, il progetto senza fine del 
Perl 6, lo prevede. Così avremo PHP .NET, con buona pace di tutti.
-- 
Alla prossima,
Marco

 se interpretato?
No. I linguaggi interpretati vanno bene cosi' come sono perche' battono
tutti nella fase di prototipazione e per le piccole applicazioni.
Per lo sviluppo di applicazioni piu' complesse, invece, nascono dei
problemi se non si sta molto attenti. In questo senso mi sto orientando
su di una soluzione ibrida: PHP nudo e crudo per la stesura iniziale
del programma; validatore + sintassi estesa per il controllo finale.
Allo scopo sto provando un validatore (che poi ho fatto io ;-) che
produce una diagnosi piu' stringente del solito "php -l". Ad esempio
segnala variabili non usate (tipicamente dal nome scazzato) o usate ma non
preventivamente inizializzate, segnala costrutti pericolosi (assegnamenti
nelle espressioni, ecc.) e cose cosi'.  Inoltre supporta una sintassi
estesa del PHP che permette di dichiarare i tipi e la signatura delle
funzioni in un modo trasparente al PHP ma che da' importanti indicazioni
al validatore. Ad esempio, se ho una funzione fatta cosi':
function MiaFunz($a, $s)
{ bla bla bla }
Il validatore mi avvisa se la chiamo con un numero di argomenti diverso
da quelli previsti. Se poi aggiungo il codice "esteso" allora diventa:
/*.int.*/ function MiaFunz(/*.int.*/ $a, /*.string.*/ $s /*., args.*/)
{ bla bla bla }
Cosi' informo il validatore che la funzione ritorna un valore (e quindi
deve essere chiamata in una espressione) e che ha un numero variabile di
argomenti >= 2. Quando tutto e' a posto, si puo' sempre "snellire" il
codice rilasciato con un bel "php -w".
Insomma, la strategia che propongo e' quella di usare un linguaggio
"spiccio" come PHP in prima battuta, usare un validatore stringente, ed
eventualmente arricchire il codice con tutte le dichiarazioni tipiche di
un linguaggio fortemente tipizzato. Non mi pare che una simile strategia
sia mai stata proposta. Forse un giorno nascera' una nuova figura di
programmatore: l'addizionatore di codice di validazione al posto del
beta-tester ;-)
Ho applicato questo metodo alle librerie di utilita' che mi sono costruito
nel tempo e che uso di solito, e quindi ai programmi completi, scoprendo
un bel po' di magagne...
Il passo seguente sara' quello di introdurre la tipizzazione forte anche
all'interno delle funzioni, e magari del codice di controllo a run-time
generato dal validatore stesso. Se qualche coraggioso in vena di esperimenti
ci vuol dare un'occhiata, e' qui:
www.icosaedro.it/phplint/
Per contro, usare un linguaggio fortemente tipizzato come Java, C# e
compagnia, mi sembra di dover correre con il gesso. Nelle applicazioni
WEB, dove si manipola spesso testo, stringhe, query SQL, avere anche array
dinamici e array associativi di uso immediato e' un vantaggio enorme.
Tutto IMHO, naturalmente.
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it

 
premetto che: lavoro con php, ed e' stata una scelta.  
concordo sul fatto che si puo' fare tutto con qualsiasi linguaggio.
pero' vorrei aggiungere che magari tra fare un web server da zero in linguaggio macchina
per far apparire su un browser "Hello World"
e scrivere una pagina html ce ne corre.
fatta questa premessa .net ha degli strumenti che da un lato servono solo per grandi applicazioni e 
che dall'altro php non ha (semplicemente perche e' nato come linguaggio di scripting).
non che non si possano implementare o aggiungere... ma che non ha.
alcune cose sono piu lunghe da fare con .net e con php ci vuole un secondo
altre invece e' il constrario.
noto la cosa sempre di piu ultimamente perche mi sto spostando su architetture 
piu complesse per gli applicativi.