<div class="gmail_quote">2009/3/16 Nicola Larosa <span dir="ltr">&lt;<a href="mailto:nico@teknico.net">nico@teknico.net</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">&gt; A rischio di suscitare le ire di altri partecipanti in questa mailing<br></div><div class="im">
&gt; list, secondo me sia Java sia Python sono sub ottimali per fare<br>
&gt; programmazione GUI. </div></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">
<br>
</div>Qual è secondo te un linguaggio ottimale per scrivere GUI?</blockquote><div><br></div><div>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. &lt;flame&gt;E lo so che c&#39;è 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&#39;applicazione media su Ubuntu con quella su Mac OS X. C&#39;è una differenza di cultura, certamente, ma anche di strumenti utilizzati.&lt;/flame&gt;</div>
<div><br></div><div>I tool ideali dipendono dalla piattaforma secondo me (e sono quelli &quot;nativi&quot; alla piattaforma):</div><div><br></div><div>Windows: Delphi (Object Pascal o C++), Visual Studio / C++ / C# (1)</div>
<div>Mac OS X: Objective-C / Cocoa / XCode / Interface Builder (2)</div><div>GNU/Linux: A seconda del WM in uso, sarà C/GTK+/Gnome o C++/Qt. (3)<br></div><div><br></div><div>Se si è costretti ad una soluzione cross-platform, C++/Qt/Qt Creator è secondo me la migliore scelta (adottata infatti da molte grandi aziende).<br>
</div><div><br></div><div>[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&#39;è sempre l&#39;amato/odiato MFC 9.0 se non si vuole dipendere da un runtime oneroso.</div>
<div><br></div><div>[2] I binding per Python esistono e il sistema operativo preinstalla Python. Quindi in teoria, una soluzione ibrida che impieghi Python può essere &quot;ottimale&quot; per alcuni. Rimane il problema del codice sorgente e delle prestazioni. Infatti i tizi di Checkout (<a href="http://checkoutapp.com/">http://checkoutapp.com/</a>) usano l&#39;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.</div>
<div><br></div><div>[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&#39;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&#39;impressione che la persona che ha posto la domanda all&#39;inizio, fosse soprattutto interessata a Mac OS X e Windows (dove tra l&#39;altro, un ISV avrebbe maggiore interesse).</div>
<div><br></div><div>Leggendo le tre note qui sopra, noterete che la piattaforma dove creare applicazioni GUI in Python è davvero sub ottimale è Windows. IronPython è un&#39;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&#39;avvio.</div>
<div><br></div><div>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.</div>
<div><br></div><div>Ciao,</div><div>Antonio</div><div><br></div><div>PS: Sì ci sono generalizzazioni. Ma il commento è già bello lungo di suo, senza indicare ogni eccezione alla regola.</div><div>-- </div></div><a href="http://antoniocangiano.com">http://antoniocangiano.com</a> - Zen and the Art of Programming<br>
<a href="http://math-blog.com">http://math-blog.com</a> - Mathematics is wonderful!<br><a href="http://stacktrace.it">http://stacktrace.it</a> - Aperiodico di resistenza informatica<br>Follow me on Twitter: <a href="http://twitter.com/acangiano">http://twitter.com/acangiano</a><br>
Author of &quot;Ruby on Rails for Microsoft Developers&quot; (Wrox, 2009)<br>