so che queste sono le
classiche mail che non si dovrebbero mai mandare
in una mailing list a tema per evitare inutili flame, e vi assicuro
che
mi sto già cospargendo la testa di cenere :-)
Devo dire che d'altra
parte non saprei proprio dove fare questa
domanda (confesso che ne
farò una uguale anche nella lista Ruby,
quindi pure crossposting ....
ahi :-/ ).
A parte che questo è "cross-trolling"… :D LOL, scherzo.
Domandare è sempre lecito e rispondere in modo obiettivo dovrebbe essere
dovere di ogni sviluppatore degno di questo nome.
Insomma è da un po' che tento di fare una scelta (personale, ma
da
condividere magari anche qui dove lavoro) se "puntare" più
sull'accoppiata
Python+Django piuttosto che su Ruby+RoR. Un tempo un
amico mi disse
che il confronto era tra due linguaggi con un lustro di
vantaggio (e
maturità anche della community) di uno sull'altro, mentre
per i
framework si poteva fare una discorso simile ma al contrario
(non 5
anni ovviamente). Non so se questo sia ancora un'affermazione
valida.
Parti dal presupposto che penso sia importante nel nostro lavoro essere
*poliglotti*, per cui diventare estremisti di un linguaggio piuttosto
che di un altro lo trovo ridicolo.
Le differenze principali, a mio avviso, tra Ruby e Python è che il primo
è maggiormente criptico e, come loro stessi dicono, troppo *magic* per
me. Per magic si intende il fatto che esistono scorciatoie sintattiche
(syntactic sugar) che possono rendere il linguaggio un po' oscuro a chi
non lo conosce bene. È, in pratica, poco esplicito, e leggere il codice
di qualcun altro, con uno stile di scrittura totalmente diverso dal tuo,
richiede una buona conoscenza del linguaggio, perchè possa essere
facilmente compreso.
In pratica puoi fare la stessa cosa in mille modi diversi. A parte
questo, il linguaggio è meno veloce di Python.
Python, dal canto suo, è, quanto meno per me, un linguaggio estremamente
chiaro, comprensibile, eplicito (tanto per, avvia python nel terminale e
digita "import this" senza virgolette per comprenderne la "filosofia").
Chiunque legga del codice python è capace di comprenderlo (a patto di
conoscere il linguaggio…) perchè la sua sintassi è chiara e
comprensibile (anche per me…). Python è molto, molto veloce. Molte delle
funzioni che accompagnano le (infinite) librerie presenti nativamente
in python sono scritte in C, aumentandone notevolemente la velocità di
esecuzione per non parlare del fatto che python crea dei file
precompilati (.pyc) per snellirne l'esecuzione in runtime.
Trovi, infine, librerie per tutti i tipi di applicazioni che potessero
venirti in mente (davvero).
La principale differenza di sensazione tra i due, poi, è che Ruby ha un
migliore marketing, migliori grafici e sembra più cool. :D
Personalemente, poi, ho scelto Django rispetto a Rails per la
flessibilità e la filosofia su cui è basato il framework. Mentre Rails,
infatti, ti costringe (almeno al primo acchitto) a usare "convenzioni
rispetto alle configurazioni" per cui hai percorsi abbastanza
riconoscibili negli indirizzi (e.g. tipo /model/azione/ per cui
/cliente/new/) in Django sei tu che hai "completo" controllo sul
percorso della tua applicazione (e.g. potresti avere qualcosa tipo
/gestione/anagrafica/crea-nuovo/cliente/ ).
Aldilà di questo, diciamocelo, la funzione di admin ti farà risparmiare
"incredibili quantità di tempo" nella creazioni di interfacce crud per i
tuoi clienti finali (ovviamente per le interfacce riservate al tuo
cliente, per le interfacce pubbliche di applicazioni te le "dovresti"
creare tu) e non dimentichiamo che noi, alla fine della giornata,
vendiamo "tempo e conoscenza".
Un'ultima considerazione. Essendo Django nato in un ambiente editoriale,
si diceva fosse utile soprattutto (alcuni dicevano *del tutto*) per la
gestione dei contenuti mentre Rails fosse migliore nella creazione di
applicazioni e servizi… ovviamente niente di più errato (per entrambi).
Con Django (e con Rails) ci fai di tutto. Ma tutto tutto. Period.
E' da un po' che seguo questa lista o so essere animata da
persone con
una discreta "onestà intellettuale" e sarei veramente
contento ci
conoscere la vostra opinione a riguardo.
Immagino che
qui si propenda nettamente per la prima coppia, ad ogni
modo quanto
mi potrete dire sarà per me prezioso.
Proprio questa, infine, è una delle maggiori motivazioni che mi hanno
fatto scegliere Django, la sua comunità internazionale e, soprattutto,
quella Italiana.
Tutti gli iscritti a questo gruppo, sono persone preparate. Anzi,
estremamente preparate e cortesi. Non importa quanto banale, ripetuta,
scontata, sia la domanda: otterrai sempre risposta. Certo, qualcuno ti
indicherà la sezione del (dell'ottimo manuale) manuale a cui fare
riferimento ma se ciò dovesse accadere sarà stata colpa tua: bisogna
spendere sempre 3 minuti su manuale e due minuti su Google prima di
chiedere. Io la chiamo la regola dei 5 minuti. :)
Scusate ancora per il massacro che ho fatto delle buone
regole che si
dovrebbero seguire in una ML :-)
Se esistessero "certe" regole, sarebbero sbagliate. Una mailing list,
come qualsiasi altro luogo di discussione, *dovrebbe* essere aperta al
dialogo e al confronto.
Se tutti usassero questa, di regola, si vivrebbe in un luogo migliore.
:)
Spero di averti aiutato nella scelta del framework più adatto alle tue
esigenze e personalità. Puoi
scaricarlo da qui. ;)