[Python] Python e Mac 10.4.11

Antonio Cangiano acangiano a gmail.com
Lun 16 Mar 2009 16:10:35 CET


2009/3/16 Nicola Larosa <nico a 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)
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: http://lists.python.it/pipermail/python/attachments/20090316/22399079/attachment.htm 


Maggiori informazioni sulla lista Python