Categorie
Opinioni Programmazione Tecnologia

5 Motivi Per Cui Django Stenta A Diffondersi

Negli ultimi anni, tra i framework per lo sviluppo di applicazioni orientate al web, si è fatto un gran parlare di Django che sembra aver fatto breccia nel cuore e nella mente di molti sviluppatori per svariate ragioni. Premesso il fatto che se Python è stato scelto da Google come unico linguaggio se volete che le vostre applicazioni possano essere ospitate sui web server dell’azienda di Mountain View tramite Google AppEngine, e che Django è l’unico framework per cui viene fornito un specie di supporto un motivo ci sarà, io sinceramente trovo ancora un pò scomodo e non vantaggioso come molti sostengono in giro, sviluppare applicazioni web con questo framework MVC.

Ecco sostanzialmente le ragioni per cui non trovo Django così fantastico come si dice in giro.

Installazione tutt’altro che semplice

Il primo grande ostacolo che si trova è proprio l’installazione che è tutt’altro che elementare sia in locale (su Windows e su Mac) che in remoto sul vostro web server. Se infatti siete degli amanti di MAMP, WAMP, XAMMP e simili che fino ad ora vi hanno permesso di testare in locale i vostri script in PHP e MySQL, troverete non poche difficoltà nell’installazione non tanto di Django quanto del modulo di MySQL per Python e sinceramente senza l’appoggio di un database vi potete divertire ben poco a sviluppare applicazioni che abbiano un senso.

Passando all’installazione lato server i problemi non sono minori, anzi. Se non avete la possibilità di accedere via ssh al vostro spazio web potete anche sognarvi di usare Django per le vostre applicazioni web. Se per esempio siete su Dreamhost e quindi avete questa possibilità, l’installazione è tutt’altro che semplice come potete leggere nel wiki. L’ideale sarebbe quindi avere un VPS (Virtual Private Server) se non addirittura un server dedicato, ma non tutti purtroppo se lo possono permettere.

Documentazione tutta in Inglese

Se siete degli sviluppatori o pseudo tali e non avete una buona conoscenza dell’inglese (almeno quello volgarmente detto tecnico) vi consiglio di darvi all’ippica perchè siete tagliati fuori. In ogni caso anche se siete poliglotti e l’inglese per voi non è un problema, scommetto che avere della documentazione scritta in italiano non vi dispiacerebbe vero? Ecco un’altra nota dolente: la documentazione ufficiale è tutta in inglese.

Il Django book è davvero un’ottima risorsa, però almeno all’inizio per prendere confidenza con il nuovo ambiente di sviluppo leggere qualcosa in italiano non farebbe affatto male. Purtroppo a parte qualche tutorial e qualche guida su come risolvere i problemi più comuni, in italiano non si trova praticamente niente.

Vi consiglio pertanto un bel corso di inglese prima di iniziare.

Hosting difficile da trovare

Come detto in precedenza per installare Django ci vuole per forza di cose un accesso SSH, quindi non potrete ospitare i vostri capolavori su un qualsiasi spazio web. Specialmente in Italia, se avete un normalissimo contratto di hosting, magari a basso prezzo, non potrete installare il framework MVC (che io sappia a parte UnBit non ci sono altri provider che offrono normali servizi di hosting Django-ready). Quindi o vi toccherà emigrare all’estero presso Dreamhost o altri celebri provider che fanno dell’overselling il loro cavallo di battaglia oppure dovrete seriamente pensare di mettere mano al portafogli e prendervi un VPS o se proprio potete spendere un bel server dedicato.

Performance eccezionali?

Ok, ma per la vostra idea geniale ci vuole una realizzazione efficientissima altrimenti la vostra applicazione web 2.0 sarà lentissima quando milioni di persone la utilizzeranno contemporaneamente: ecco perchè vi serve Django!!!

A me la storia delle prestazioni fantasmagoriche di Django non convince troppo. Rispetto a PHP sarà pure più efficiente ed ottimizzato… ma come potete leggere nei punti sopra, quasi sempre le applicazioni sviluppate con Django sono ospitate o su VPS o su server dedicati che magari usano Lighttpd se non LiteSpeed impostazioni di cache a livello di MySQL che rendono le query verso il database, tutto questo sommato alla possibilità di cachare le pagine tramite Django le molto rapide ecc ecc…

Provate ad hostare le vostre applicazioni fatte in PHP (tanto per fare un esempio) su un VPS o un server dedicato come sopra e… se non programmate con i piedi le prestazioni non saranno molto differenti.

CodeIgniter & Co.

Ok l’ultimo mito che è rimasto da sfatare è la semplicità con cui si programma in Django che non è paragonabile a nessun altro framework. Quando si guarda uno screencast e le cose le fa un altro è tutto semplice. Se poi le cose sono degli esempietti stupidi sono ancora più semplici.

Django è un framework MVC (Model-View-Controller) come ce ne sono a decine in giro per i linguaggi più svariati. Se non sapete da dove iniziare la vostra applicazione, il fatto che avete a disposizione Django non vi aiuterà molto. Rispetto a framework pesanti come Ruby On RailsSymphony ha sicuramente il suo perchè e sicuramente vi aiuterà a sviluppare applicazioni più snelle e più veloci. Sempre se riuscite ad installarlo, sempre se avete dove installarlo, sempre se riuscite a sviluppare in locale e poi mettere tutto online ecc ecc

Ora dico io: ci sono degli ottimi framework MVC come CodeIgniter che vi offrono la stessa semplicità di sviluppo, più o meno le stesse basi da cui partire ma non dovrete diventare matti nel trovare una soluzione per installarlo in locale piuttosto che su un servizio di hosting che non prosciughi le vostre tasche.

Perchè andarvi a complicarvi la vita con Django?

Forse adesso non parlo con cognizione di causa perchè mi ha fatto diventare matto per installarlo in locale e poi in remoto e non sarò riuscito ancora ad apprezzarne i vantaggi… però a tutt’oggi definirlo il Visual Basic per il Web mi sembra un paragone abbastanza pittoresco. D’altronde Django solo per installarlo necessita di 3 giorni di ferie: io Visual Basic lo ricordo di molto più semplice utilizzo o sbaglio?

Spero di avere qualche sostenitore. Voi come la pensate?

30 risposte su “5 Motivi Per Cui Django Stenta A Diffondersi”

Non sarebbe idea cattiva, visto che l’articolo è un po datato, scrivere sopra: Oggi abbiamo l’anno 2011, le cose sono un po’ cambiate” con link al nuovo articolo. Penso che anche tu puoi dire che Django è migliorato, anche hosting si trova più facilmente. L’unica lacuna rimasta, secondo me, è la documentazione. Ma non perché scritta in inglese (se vuoi fare sul serio qualsiasi lavoro con computer, figuriamoci la programmazione, l’inglese è d’obligo), ma perché la trovo un po’ disordinata, specialmente per chi si avvicina a Django per prima volta.

Just my 5 cents.

Karim, tu mi sembra invece che hai qualche problema serio con l’italiano.

L’articolo è stato scritto un paio di anni fa in un contesti ed in un dibattito che uno sviluppatore professionista capiberebbe benissimo, uno smanettone no…

Non condivido per nulla quello che dici, l’installazione non è assolutamente complessa … poi non parliamo di quello che dici la documentazione. Il consiglio che darei ad una persona che vuole fare il programmatore è impara prima l’inglese.
La maggior parte di ciò che leggo è in inglese .. e parlo di interi libri.
Nota … CodeIgniter non ha ORM, Django si … altra nota Django non è MVC è MTV (Model Template View) … Django supporta già una cinquantina di lingue ecc … poi scusa dici che sei formato su C/C++ Java ecc … ma hai mai visto webapps ad alto traffico in Java ??? …. ti assicuro che applicazioni che iniziano a fare milioni di accessi pur se con server mirrorati e bilanciati in Java crollano …

Ciao,
sono arrivato su questo post cercando documentazione per Django e mi sono soffermato un paio di minuti a leggere le tue 5 motivazioni. Premetto che sono un programmatore Python e che uso Django per web application tutt’altro che piccole.

Q) Installazione tutt’altro che semplice
A) no comment. trascurando i pacchetti pronti per l’uso avere l’ultima stabile (o l’ultima versione del repository) è questione di lanciare un comando svn e impostare _una_ variabile d’ambiente (ma solo se non metti django in un path noto a Python)

Q) Documentazione tutta in Inglese
A) dai.. questa l’hai messa solo per arrivare a 5…

Q) Hosting difficile da trovare
A) Forse. Ma dipende solo da quanto vuoi spendere e da che cosa cerchi. In ogni caso il deployment di una app Django è molto flessibile e sono documentati (in inglese [lol!] ) tutti i modi, i pro e i contro. In ogni caso non è necessario essere root sul tuo server per poter installare Django (vedi la soluzione svn). In ogni caso un buon servizio di hosting (ma anche housing o VPS) lo si valuta sopratutto dall’assistenza e dalla disponibilità di chi ti offre il servizio, non solo dal costo…

Q) Performance eccezionali?
A) Django è eccezionalmente veloce. È ovvio che una app scritta coi piedi rallenti qualunque cosa ma è difficile scrivere coi piedi se hai imparato bene Python. Più facile se sei un programmatore PHP e sei abituato a scrivere brutto codice per risolvere i problemi più banali… Vengo giusto da un’esperienza di lavoro portato avanti con CakePHP: un dolore incredibile… Devo ancora capire perchè le query hanno un livello di ricorsività, perchè è massimo 3 ma sopratutto perchè per ottenere i dati (che normalmente otterresti con due query) Cake ne faccia un numero enorme (50 o più…)

Q) CodeIgniter & Co.
A) Non li conosco. Ognuno sceglie il framework che gli permette di fare di più con meno fatica… L’importante è non scegliere con i paraocchi e essere pronti a sopperire alle mancanze personali.

“D’altronde Django solo per installarlo necessita di 3 giorni di ferie: io Visual Basic lo ricordo di molto più semplice utilizzo o sbaglio?”

Ok… il tuo background è PHP e VB… sono chiare molte cose 😉 Mi spiace per te ma se ti sei formato con questi linguaggi hai dovuto imparare a sopperire alle lacune di cattiva progettazione degli stessi con tecniche sporche e _molto_ _poco_ professionali.

Io mi sono formato prevalentemente con il C/C++ ed il Java che non sono linguaggi con chissà quali lacune 😉

Sicuramente nell’articolo ho posto molta enfasi su alcuni problemi che non sono da imputarsi a Django (in particolare l’installazione su OS X è molto rognosa più che altro per colpa di OS X) che dopo averlo utilizzato per diversi progetti ho imparato ad amare.

Ciò non toglie che diversi difetti continuo a trovarli… in primis il deployment nell’ambiente di produzione che essendo forse troppo flessibile qualche problema lo fa sempre sorgere 😉

Sono d’accordo con Simone. Non ripeto le stesse cose se non dire che è un ottimo framework.semplice potente. Solo due cose. 1) Come fai a paragonare Python con php? sono 2 mondi diversi. 2) cosa centra ora Codeigniter? io l’ho usato per parecchio tempo…non mi sembra nemmeno paragonabile la cosa a livello di potenzialità, lunghezza del codice e soprattutto modularità.
Ho installato Django in 10 min. Il tutorial ti porta via quanto? mezz’ora? 20 min? e hai già un’applicazione funzionante e dinamica..

Rispondi