2009/3/16 Nicola Larosa <n...@teknico.net> > > A rischio di suscitare le ire di altri partecipanti in questa mailing > > list, secondo me sia Java sia Python sono sub ottimali per fare > > programmazione GUI. >
> Qual è secondo te un linguaggio ottimale per scrivere GUI? Ti parlo dalla prospettiva di un ISV che vuole creare applicazioni GUI e venderle tramite internet (il caso più comune al di fuori del mondo open source). Sotto queste condizioni, i linguaggi ottimali sono quelli che non richiedono la distribuzione di una VM, sono relativamente veloci, hanno un minimo di protezione del codice sorgente e soprattutto hanno designer maturi e avanzati per la creazione di GUI. <flame>E lo so che c'è gente che si trova benissimo a scrivere interfacce utenti con un editor o con designer di base, ma di solito non producono software esteticamente piacevole e usabile. Provate a confrontare l'applicazione media su Ubuntu con quella su Mac OS X. C'è una differenza di cultura, certamente, ma anche di strumenti utilizzati.</flame> I tool ideali dipendono dalla piattaforma secondo me (e sono quelli "nativi" alla piattaforma): Windows: Delphi (Object Pascal o C++), Visual Studio / C++ / C# (1) Mac OS X: Objective-C / Cocoa / XCode / Interface Builder (2) GNU/Linux: A seconda del WM in uso, sarà C/GTK+/Gnome o C++/Qt. (3) Se si è costretti ad una soluzione cross-platform, C++/Qt/Qt Creator è secondo me la migliore scelta (adottata infatti da molte grandi aziende). [1] In realtà, C# e managed C++ richiedono il framework .NET, ma se si fa una scelta oculata, è possibile sviluppare per la versione 2.0 che è supportata/preinstallata sulla maggior parte dei computer moderni (con Vista, si potrebbe usare anche la 3.0). E c'è sempre l'amato/odiato MFC 9.0 se non si vuole dipendere da un runtime oneroso. [2] I binding per Python esistono e il sistema operativo preinstalla Python. Quindi in teoria, una soluzione ibrida che impieghi Python può essere "ottimale" per alcuni. Rimane il problema del codice sorgente e delle prestazioni. Infatti i tizi di Checkout (http://checkoutapp.com/) usano l'approccio ibrido, e mi pare di ricordare che siano ricorsi a Objective-C per le parti che richiedevano maggiori prestazioni e protezione del codice. In ogni caso, hanno usato Interface Builder per creare la loro curatissima interfaccia grafica. [3] Su Linux, se non è un problema rilasciare il codice sorgente, usare Python con uno dei toolkit citati, ha sicuramente i suoi vantaggi. Visto che gli strumenti per l'intefaccia grafica, e i toolkit, sono gli stessi sia che si scelga C++ che Python. Infatti, su Linux diversi programmi sono scritti in Python. Ma ho come l'impressione che la persona che ha posto la domanda all'inizio, fosse soprattutto interessata a Mac OS X e Windows (dove tra l'altro, un ISV avrebbe maggiore interesse). Leggendo le tre note qui sopra, noterete che la piattaforma dove creare applicazioni GUI in Python è davvero sub ottimale è Windows. IronPython è un'alternativa valida, ma la sua integrazione con Visual Studio è decisamente poco stabile, e chi produce software commerciale tende a create la parte relativa alla UI con C#, per scrivere poi la logica in IronPython. E le applicazioni tendono ad essere lente all'avvio. Concludo dicendo che usare Python per GUI application su qualsiasi delle tre piattaforme, non è affatto una scelta insensata. Il vantaggio in termini di produttività è sicuramente notevole rispetto a linguaggi come C++, ma bisogna ammettere che molte persone, per la parte relativa alla UI, particolarmente su Windows e Mac, troveranno tool creati per altri linguaggi, molto più convenienti. Ciao, Antonio PS: Sì ci sono generalizzazioni. Ma il commento è già bello lungo di suo, senza indicare ogni eccezione alla regola. -- http://antoniocangiano.com - Zen and the Art of Programming http://math-blog.com - Mathematics is wonderful! http://stacktrace.it - Aperiodico di resistenza informatica Follow me on Twitter: http://twitter.com/acangiano Author of "Ruby on Rails for Microsoft Developers" (Wrox, 2009)
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python