Post by Alessandro PellizzariPost by ngw1) PHP e' un linguaggio profondamente mediocre.
2) La gestione di Zend e' a tratti stupidita' allo stato puro.
Queste sono opinioni tue che rispetto ma non condivido, come gia` sai.
Saranno anche opinioni, ma un linguaggio che nel 2009 implementa i
goto senza avere i namespace e' un linguaggio che, a livello tecnico,
non e' comparabile con i suoi 'avversari'. Si puo' al massimo
disquisire su quanto possano essere utili i namespace per progetti
anche soltanto di media grandezza, come si puo' dibattere
sull'importanza dei goto nella gestione degli errori dopo aver
sbandierato la gestione delle eccezioni a destra e a manca, ma
sinceramente nel momento in cui tutto e' soggettivo non vedo neppure
il motivo per cui sia di qualche utilita' una discussione.
Faccio pero' notare che tutti i linguaggi hanno dei drawbacks, Ruby ha
una GC mark & sweep che a tratti risulta imbarazzante, ma sono cose
fixabili (e, nel caso di Ruby, fixate con la prossima major release),
mentre sembra che chi *disegna* il linguaggio PHP sia rimasto fermo
all'ALGOL e l'altro ieri abbia scoperto dell'esistenza di Java, visto
che stanno tentando di scopiazzarlo, ma prendendo feature
fondamentalmente a caso.
A mio parere nella comunita' PHP non ci sono proprio le basi per
buttare fuori un linguaggio per limiti dovuti alla storia stessa di
PHP.
Io aborro Perl, e' un linguaggio in cui non riesco a programmare, ma
mi rendo conto che, a differenza di PHP, il problema e' il "one size
don't fit us all", niente piu' niente meno. Non ho mai pensato che
Larry Wall avesse scritto Perl dopo un coma etilico, cosa che invece
penso ogni volta che apri qualunque applicazione in PHP.
Post by Alessandro PellizzariPer quanto riguarda le API change, personalmente non mi ci sono mai
imbattuto, e ho script in PHP3 (non fatti da me, io ho praticamente
iniziato col 4) scritti 10 anni fa che funzionerebbero ancora in PHP5 (ho
provato su un server di test), se abilitassi register_global. Ma non lo
faccio, e ho messo un php4 in cgi in parallelo al php5 per gestirli.
Ovviamente dipende dalla complessita' dell'applicazione, ma non credo
tu non abbia mai sentito di sviluppatori furiosi per la rottura di
compatibilita' tra minor release.
Post by Alessandro PellizzariPost by ngw3) Tutti dicono che scala, nessuno sa come. A quanto pare in Facebook
aggiungono n macchine al mese, il che suggerisce che no, non scala
affatto (qui parliamo di migliaia di server, dei quali innumerevoli
centinaia di caching - se l'architettura è ok, e lo è, com'è che non
scala orizzontalmente ?)
La scalabilita` orizzontale dipende praticamente solo da come e` scritta
l'applicazione, non dal linguaggio.
PHP non e` un application server che gestisce da solo la scalabilita`, ma
ti mette a disposizione determinati strumenti per gestirla (memcached
distribuito, possibilita` di connessioni a db multipli, storage delle
sessioni in RAM, disco, DB, ecc.)
Non consente di distribuire il carico computazionale puro, ma uno script
web non dovrebbe lavorare per piu` di qualche millisecondo, al massimo
qualche decimo di secondo. Il resto del lavoro dovrebbe essere sul DB o su
software apposito (tipo elaborazione pesante di immagini e video), che
sicuramente non sara` scritto in PHP ma in C/C++, e quindi dovra` essere
clusterizzato per conto suo.
C'e` giusto un articolo (molto sui generis, a dire il vero) su PHP
architect di questo mese, riguardo il clustering e la distribuzione del
carico.
A mia conoscenza, nessun application server o software di questo mondo
gestisce automaticamente la scalabilita', qualunque cosa voglia dire.
Parlando di PHP, parlo dello stack, mi sembra ovvio.
Scalare, e' fatto piu' che altro architetturale, e' assurdo e
abbastanza sciocco parlare di velocita' di esecuzione di una
determinata azione piuttosto che di un'altra, perche' e' parametro
difficilmente ricavabile e tra l'altro poco significativo. Io
certamente non intendevo quello, mi scuso se mi sono spiegato male.
Le soluzioni sono ovviamente molto varie ma anche abbastanza comuni,
che si cachi o che si usi lo sharding poco importa, rientra nei
termini architetturali che si ingegnerizzano per appunto raggiungere
il punto in cui il rapporto tra requisiti funzionali e requisiti
progettuali siano misurabili, in poche parole, se con 1 macchina tengo
100 utenti, con 2 ne tengo 180, con 3 360 (solo per far capire, ovvio
che sono numeri stupidi).
PHP ha a disposizione esattamente le stesse opzioni di qualunque altro
linguaggio, siano essere MySQL, memcached, RabbitMQ e chi piu' ne ha
piu' ne metta. Ha tra l'altro a disposizione uno staff che molti si
sognano, in grado di mettersi a patchare memcached e MySQL senza
grandi problemi di competenza. La loro architettura e' a mio parere
ottima (e forse qualcosa di piu', puoi leggere a riguardo sul
neopubblicato Beautiful Architecture, scritto da uno sviluppatore
FreeBSD certamente competente). Eppure aggiungono macchine come non ci
fosse un domani, tra l'altro dopo che hanno eliminato il 90% di hit al
database e implementato il messaging. Per me, normale normale non e',
ma e' una mia supposizione. Quello che si sa e' che stanno togliendo
botte di PHP dal loro sistema, per sostituirle con componenti in Java
(e si sussurra in Erlang, ma si sussurra e basta).
Post by Alessandro PellizzariPost by ngw4) Non cerchi "programmatori PHP", ma programmatori CakePHP, Symphony,
Drupal ecc. Questi Framework spesso fungono anche da pezze alle
innumerevoli mancanze del linguaggio, e quindi hanno un costo di entrata
che non è soltanto la conoscenza del linguaggio. In Python/Ruby ad
esempio non è così, se conosci il linguaggio devi solo impararti l'API
di Django/TurboGears/Rails/Sinatra, ovvero sei al 90%.
Questo, purtroppo, succede solo in America.
Qui in Italia sono pochissime le inserzioni che cercano esperti di
framework.
Io francamente non ho altro, dagli altri responsabili della societa'
per cui lavoro.
Post by Alessandro PellizzariPost by ngw5) PHP ha un
costo d'entrata bassissimo, per una applicabilità, come noti, abbastanza
bassa. Il mercato quindi si satura abbastanza in fretta
Verissimo.
E` "l'annoso" problema: meglio una tecnologia semplice che avra` alta
percentuale di improvvisati o una piu` complessa che seleziona all'inizio
i migliori?
Ho paura che sia meglio quella semplice, e lo dimostra il "successo" di
Windows e di tool come VisualStudio o Eclipse rispetto a Emacs o Vi, ma
anche il fatto che anche Linux si sta muovendo verso la semplificazione.
Da una base di utenza piu` ampia e` si` piu` difficile trovare le
eccellenze, ma e` anche piu` probabile che tali eccellenze esistano.
I fatti ti danno ampiamente torto, se permetti.
Non sono a conoscenza di nessun Alex Payne o Tim Peters per quanto
riguarda PHP, lasciamo proprio perdere i Van Rossum o i Matz. L'unico
di cui si sa qualcosa e' Terry Chang, ma bisogna valutare se e' per le
sue doti tecniche (che per quanto mi riguarda, non sono pervenute) o
per la sua capacita' di generare flame - con noi di Ruby ci ha provato
per un anno buono senza suscitare molto interesse, non fosse altro che
Tagged e' un software onestamente imbarazzante, e quindi farebbe prima
a considerare di migliorarlo un po' prima di guardare come e' messo
Twitter su Alexa.
Inoltre, mi pare che tu confonda la semplificazione con la sciatteria
- ne Python ne Ruby sono difficili, direi tutt'altro, hanno sintassi
che non sono una sorta di C castrato, un object model coerente, un
featureset ben definito. Sono anche linguaggi fortemente idiomatici,
in cui le best practices sono profondamente diverse da "parsati
l'input che se no ti fanno tanto male", quello viene dato per
scontato.
Il paragone che fai puo' essere un paragone realistico nel momento in
cui Linux rimuove iptables dal suo kernel per renderlo piu' semplice.
Vorrei anche farti notare di come in PHP sostanzialmente tutti i
progetti in un lasso di tempo ragionevolmente breve vanno
completamente in merda. Che si prenda Wordpress o che si prenda
MediaWiki, il codice e' orrendo, praticamente illeggibile. Wordpress,
che da me e' un collo di bottiglia e verra' sostituito al piu' presto,
fa una quantita' di query al db che onestamente non so neppure a cosa
serva. Guardandole non hanno senso, anche considerando che lo schema
del DB non e' affatto normalizzato (quantomeno, non somiglia ad un
database normalizzato, poi come ovvio anche le cose piu' consolidate
in informatica in PHP prendono vita propria). Ad un certo punto penso
che la comunita' PHP dovra' chiedersi perche' ha tutto questo
installato e una tecnologia che continua ad inseguire i concorrenti.
Quando e' capitato a VB, e' uscito VB.net che per quanto possa non
piacermi e' un linguaggio che almeno ha senso. E ha perso 3/4 degli
sviluppatori.
Uno sviluppatore, se e' bravo e appassionato, si evolve. Se scopre che
PHP e' subottimale, passa ad altro. Non a caso, sembra quasi che Rails
si sia preso la crema degli sviluppatori PHP (che appunto ora ti
sviluppano i Github, tanto per dirne uno, visto che Chris Wanstrath da
li viene) e abbiano lasciato indietro tutti gli altri.
Post by Alessandro PellizzariPost by ngwMentre io posso passare a
Sinatra da Rails in modo abbastanza veloce (credo di averci impiegato 20
minuti a capire come funzionava), lo sviluppatore PHP non passa da
Symphony a Drupal altrettanto velocemente, per una azienda sono costi.
Symfony e` un framework, Drupal un CMS, per quanto abbia alcune
caratteristiche da framework.
Passare da Zend Framework a CodeIgniter "costa" abbastanza poco perche`
hanno filosofie simili, cambia solo la API. Passare a Symfony o a CakePHP
costa un po' di piu` perche` alcune cose sono diverse (ORM vs
TableAccessGateway sui model, per esempio).
Passare a Drupal e` tutt'altra cosa. Hai delle API (abbastanza incasinate,
IMHO) per l'accesso alle funzioni del CMS, ma non un gruppo omogeneizzato
di classi e oggetti da usare. E non seguono praticamente nessun pattern
generico...
Appunto, ma che casino e' ? Tra l'altro, il sopracitato ORM, pare
spari query a tutto spiano, peggio di ActiveRecord. E ce ne vuole
eh ...
Cos'e' tutta questa foga di avere n framework subottimali tutti con
una API fondamentalmente diversa ? Symfony e CakePHP sono due cloni di
Rails, entrambi sostanzialmente indietro, perche' non si uniscono ?
Sembra quasi di vedere la parte peggiore dello sviluppo open (fork a
manetta) unita alla parte peggiore dello sviluppo closed (pochissima
code review, troppe alternative).
Post by Alessandro PellizzariPost by ngwLa pubblicità conta pochissimo, Zend ha sicuramente fatto più pubblicità
della PSF o della Ruby Foundation (che non ne hanno fatta per niente),
ma Python e Ruby tirano tanto di più in quanto fondamentalmente
tecnologie migliori ed estremamente più produttive
Anche questo, forse in USA.
In Italia (o almeno qui nel Triveneto) non ho mai visto un annuncio (nella
categoria "Informatica", non in quella "programmazione web") che
richiedesse Python o Ruby, negli ultimi 5 anni.
Perche' si ricercano poco e nulla, visto che tipicamente sono
rivoluzioni intestine all'interno di una azienda.
Se conosci PHP, basta un po' di olio di gomito e sei produttivo in
Ruby in un tempo abbastanza basso, a patto di studiare.
Non si cercano figure nuove in parte perche' raramente servono (come
ti ho detto, Zooppa lo teniamo in piedi in 4, designer incluso,
slideshare lo tengono in piedi in 5, stessa cosa Github per quel che
ne so, Twitter sono addirittura in 20), ma anche perche' trovare in
Italia figure preparate e' impresa ardua, e quando dico preparate
intendo dire proprio sulle basi. Noi in Farm, che siamo in Veneto,
usiamo sia Rails che Django comunque, ed in aziende diverse.
Post by Alessandro PellizzariLa maggior parte richiede Java, seguito da .Net e PHP a pari merito. Ogni
tanto (sempre piu` spesso, a dire il vero) passa un annuncio per AS400.
Pochi per il Cobol.
Stiamo ancora parlando a 2 livelli differenti, tu mi parli di
quantita', io di qualita'.
Post by Alessandro PellizzariE non ho mai visto pubblicita` di Zend se non su riviste dedicate a PHP.
E quanta pubblicita' hai visto su Ruby ? Esistono riviste dedicate a
Ruby ?
Io me ne infischio onestamente, valuto la tecnologia in base alla
tecnologia, non alla quantita' di pubblicita' che viene fatta.
Post by Alessandro PellizzariPost by ngwSe consideriamo che l'Italia è fondamentalemente come gli Stati Uniti ma
3 anni in ritardo (è stato così per Python, per Java, per praticamente
tutto),
Io onestamente non ho visto questo "seguire" gli USA.
E` stato cosi` per Java, ma mi pare che negli USA stia calando, mentre in
Italia sta salendo. Soprattutto nell'ultimo anno ho visto esplodere le
proposte di lavoro (sempre nel triveneto).
No Java non cala, e' il Cobol del 2000.
Post by Alessandro PellizzariPer Python non mi pare proprio. A parte qualche grossa azienda che ha dei
pythonisti come manager o comunque come responsabili di un certo settore,
non si vede niente.
Oddio, io nel 2004 ci lavoravo con Python in Monte dei Paschi e in
Telecom ...
Post by Alessandro PellizzariRuby non sanno nemmeno cosa sia.
Peggio per loro. L'importante poi e' non cascare dalle nuvole quando
l'India ci mangia in testa.
Post by Alessandro PellizzariC'e' stata, nell'ultimo periodo, una "rinascita" di AS400 e di Cobol
perche` molte grosse aziende li usano ancora e non vogliono investire per
stravolgere tutto. Finche` funziona non si cambia.
E' Legacy. Qui stiamo parlando di web pero'.
Post by Alessandro Pellizzari.Net lo vedo spesso richiesto per programmi gestionali, ma poco per il web.
Per il web praticamente se la contendono solo Java (60-70% degli annunci)
e PHP (30-40%).
Non so se la situazione sia diversa in altre zone (Milano, Roma o altro).
Anche qui non sono granche' interessato all'argomento. Magari potrei
trovarmi un lavoro con PHP pagato poco e niente e a progetti poco
interessanti, che ne so.
Preferisco continuare a lanciare startup francamente, visto che mi
viene tutto sommato bene.
ngw