Continuando nelle riflessioni e nelle differenze che caratterizzano Linux (ed in particolare mi riferisco ad Ubuntu) ed i sistemi operativi Microsoft, mi metto oggi dal punto di vista degli sviluppatori. Mi vorrei soffermare oggi sui “mezzi” che i due sistemi operativi mettono a disposizione di chi sviluppa software. Ho sempre pensato che ad ubuntu mancasse una sola cosa per contrastare efficacemente i sistemi windows: una vasta scelta di programmi “COMPLETI” di gui e ben funzionanti. Purtroppo in questo secondo me linux è ancora una spanna indietro (non per colpa sua però). Ad ogni modo quello che oggi vorrei affrontare è un discorso sugli IDE (Parolona corta che sta per integrated development environment (IDE), in italiano ambiente integrato di sviluppo, (conosciuto anche come integrated design environment o integrated debugging environment, rispettivamente ambiente integrato di progettazione e ambiente integrato di debugging) è un software che aiuta i programmatori nello sviluppo del software. Essenzialmente sono due gli IDE che windows da un lato e linux dall’altro offrono (lascio stare in questo contesto gli IDE “minori” come ad esempio SharpDevelop e molti altri, altrimenti più che un blog dovrei aprirmi un sito su un server con hdd da 3 terabyte
)
Da un lato esiste Visual Studio (nelle versione gratuite express edition) arrivato ormai alla matura versione 2008. Visual studio ormai rappresenta il punto di riferimento di ogni buon programmatore (programmatori smentitemi se potete
).
%20-%20Microsoft%20Visual%20Studio%20(Administrator)%20(5).png)
Come potete leggere anche su molti siti dedicati, Visual studio offre un ambiente integrato di progettazione per più linguaggi di programmazione (Visual Basic, C++ e C#, quest’ultimo è il linguaggio che studio e che uso per hobby, n.d.r), divenendo così il punto di riferimento per coloro i quali usano il .net per le loro applicazioni.
“Microsoft® Visual Studio® 2008 si basa sulla visione di Microsoft delle applicazioni Smart Client consentendo agli sviluppatori di creare rapidamente applicazioni connesse che garantiscono esperienze utente complete e di qualità elevatissima. Con Visual Studio 2008 le organizzazioni potranno acquisire e analizzare con molta facilità le informazioni necessarie per prendere decisioni aziendali efficaci. Grazie a Visual Studio 2008, le organizzazioni, a prescindere dalle dimensioni, potranno creare applicazioni più sicure, gestibili e affidabili che utilizzano Windows Vista™ e Office System 2007.”
“Visual Studio 2008 include miglioramenti quali le finestre di progettazione visive per lo sviluppo rapido con .NET Framework 3.5, miglioramenti significativi agli strumenti di sviluppo Web e miglioramenti del linguaggio che velocizzano lo sviluppo con tutti i tipi di dati. Visual Studio 2008 fornisce agli sviluppatori tutti gli strumenti e il supporto framework per creare applicazioni Web compatibili con AJAX interessanti ed efficaci.”
Personalmente, ciò che più mi ha colpito di visual studio è la facilità con la quale è possibile creare un Gui per i vostri programmi. I controlli vengono “calamitati” ai bordi risultando così possibile allinearli per rendere il programma esteticamente più gradevole. Lato programmazione risulta a dir poco eccellente l’intellisense (ovvero il completamento automatico di ciò che si sta digitando. L’intellisense provvede a suggerire per ogni classe che si sta utilizzando, il metodo ed i membri disponibili per quella determinata classe). Gran parte del merito va anche all’architettura .net, che consente una facilitazione enorme, soprattutto per i programmatori alle prime armi (Pensate che ho imparato ad usare Visual Studio con c# in meno di due mesi). Le migliorie apportate nella versione 2008 sono notevoli, soprattutto per quanto riguarda la gestione grafica dei dataset, la gestione dei database mysql ed altro ancora. Particolarmente comoda la possibilità di inserire snippet codes, (ovvero frammenti di codice che solitamente vengono ripetuti, come blocchi if, try catch ecc..) semplicemente con un click. Se voleste approfondire il tutto vi invito a dare una occhiata ad una guida che ho trovato molto completa, che trovate qui.
Quel che offre invece Ubuntu (linux) come IDE di sviluppo è essenzialmente (e qua vi reinvito a smentirmi se trovate di meglio, visto che uso ubuntu da poco tempo) è mono.

Purtroppo, per il poco tempo che ho avuto, Mono non mi ha fatto affatto (e scusate il gioco di parole, probabilmente scritto in .net…..ok ho detto na cazzata
) una bella impressione.
L’ambiente di sviluppo APPARENTEMENTE simile a VS, mostra purtroppo tutti i suoi limiti una volta che ci si mettono le mani sopra. La gestione della costruzione della GUI del programma purtroppo non rispecchia lontanamente quella di VS, risultando il posizionamento dei controlli molto ostico, soprattutto per la mancanza di elementi che vi permettano di allineare i controlli stessi (avendo utilizzando il c#, mi è venuto molto più comodo piazzarli via riga di comando). La gestione lato programmazione mostra un intellisense abbastanza affidabile, ma purtroppo mancano (o almeno non ho visto) tutta una serie di facilitazioni per la gestione di elementi quali ad esempio DataSet, Datatable ed affini. Curiosità, per chi ne sa più di me: l’ident con mono quale logica segue? perchè nel piccolo programma che ho scritto per provarlo ha cannato i tabs in maniera clamorosa..
Di seguito riporto una definizione di Mono:
“Mono è un progetto open source coordinato da Novell (precedentemente da Ximian) per creare un insieme di strumenti compatibili con il Framework .NET, secondo gli standard ECMA (Ecma-334 e Ecma-335).
I più importanti di questi strumenti sono il compilatore C# e il Common Language Runtime.
Mono funziona sui sistemi operativi GNU/Linux, UNIX, Mac OS X, e Windows.
Mentre Microsoft ha reso disponibile una versione di .NET per FreeBSD chiamata la Shared source CLI, la licenza di Microsoft non è di software libero e può essere insufficiente per i bisogni degli utenti (in particolare, proibisce esplicitamente l’utilizzo commerciale).
La macchina virtuale di Mono contiene un motore JIT per vari processori: x86, SPARC, PowerPC, ARM, s390 (in modalità a 32 bit) e x86-64 e SPARC a 64 bit. La VM può eseguire una compilazione just-in-time o può pre-compilare il codice in codice nativo. Per altre architetture hardware esiste solo un interprete.”
In conclusione, ritengo che la strada per gli sviluppatori di applicazioni che utilizzano linux sia purtroppo, ATTUALMENTE, tutta in salita. Sul fronte IDE Visual Studio attualmente primeggia su tutti, dando una serie di strumenti e facilitazioni per i programmatori a dir poco notevole. Spero che la spinta che Canonical ha dichiarato di voler dare ai pacchetti che Ubuntu supporterà diano inizio ad una serie di sviluppi che porteranno ad un innalzamento di qualità di Mono, l’unico che potrà sperare negli anni futuri di contrastare il padrone degli strumenti di programmazione.
Senz’altro Visual Studio è l’IDE di riferimento per lo sviluppo sotto piattaforma Windows. Tuttavia, scegliere Mono-Develop per Ubuntu mi pare una scelta un po’ impietosa, vista la giovinezza del progetto
); supporta plugin di diverso tipo e vi segnalo:
Personalmente, sviluppando principalmente in C, Java e Python, la mia scelta per l’IDE ricorre sull’IDE di SUN, recentemente rilasciato sotto GPL, Netbeans.
Dalla versione 6, Netbeans ha incluso il sistema di progettazione GUI Metisse, che permette di -disegnare- finestre Swing in maniera disarmante (ragazzi, cinque minuti per una GUI, mica noccioline
- sviluppo per C/C++
- il debugger
- profile (individuazione dei colli di bottiglia di memoria in Java)
- interfaccia ai sistemi di controllo delle versioni (CVS, SVN, Mercurial, Bazaar e GIT)
- Editor visuale per JSP
- Supporto allo sviluppo AJAX e per Ruby On Rais
- Diagrammi UML con exporter in codice Java
Mi fermo qui, ma me ne vengono in mente un’altra trentina
E per installarli, basta mettere una spunta all’elenco di quelli disponibili.
)
Un bel prodotto davvero, se volete, vi -commenterò- qualche altro dettaglio (sempre se Gilean è d’accordo
Ma i commenti vengono postati? Il mio di ieri non è ancora venuto fuori
Penso che scegliere Mono-Develop per Ubuntu sia stata una scelta un po’ impietosa, vista la giovinezza del progetto
La mia scelta per l’IDE è caduta da un po’ Netbeans che, dalla versione 6, ha incluso il sistema di progettazione GUI Metisse, per -disegnare- finestre Swing (ragazzi, cinque minuti per una GUI, mica noccioline
). Tra i plugin segnalo:
- sviluppo per C/C++
- il debugger
- profile (individuazione dei colli di bottiglia di memoria in Java)
- interfaccia ai sistemi di controllo delle versioni (CVS, SVN, Mercurial, Bazaar e GIT)
- Editor visuale per JSP
- Supporto allo sviluppo AJAX e per Ruby On Rais
- Diagrammi UML con exporter in codice Java
Mi fermo qui, ma me ne vengono in mente un’altra trentina
E per installarli basta mettere una spunta all’elenco di quelli disponibili.
)
Un bel prodotto davvero, se volete, vi -commenterò- qualche altro dettaglio (sempre se Gilean è d’accordo
Direi di piu’, se vuoi puoi aiutarci nella stesura degli articoli del blog, sei molto competente e daresti un grande aiuto
Gilean, molto volentieri
Però avrei bisogno di sapere quali argomenti volete approfondire. I tuoi post su -Vistabuntu- sono davvero un bello spunto
Contattami al mio indirizzo di hotmail
gilean1@hotmail.it e ne parliamo con calma
Un appunto: l’errato posizionamento delle GUI che hai riscontrato con mono-develop non è che sia perché, diversamente da Winforms, le GTK+ posizionano i widget su una tabella?
Ricordo un intervento di Miguel de Icaza che parlava di questa differenza come uno dei problemi per scrivere applicazioni portabili .NET-Mono