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😀 ).

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.