Ieri sera ero in pizzeria con un amico che ha iniziato a programmare molto prima che io decidessi di dedicarmi a questa attività . Tra i vari argomenti di cui abbiamo dibattuto quello affrontato più frequentemente riguardava l'utilizzo di editor testuali per lo sviluppo di codice oppure l'utilizzo di IDE.
La discussione è nata dopo la lettura degli articoli di DEV che preannunciavano le feature della nuova versione di Visual Studio che, a quanto pare, integrerà in un'unica suite una serie di strumenti necessari a coprire in modo più o meno completo l'intero processo di sviluppo di un software. Secondo gli ingegneri Microsoft (cosa con cui mi trovo parzialmente d'accordo) il software attualmente non si può più permettere lunghi periodi di sviluppo, altrimenti rischia di essere obsoleto al momento del rilascio. Per questo motivo, a loro parere, un IDE dovrebbe integrare una serie di strumenti che facilitino l'organizzazione e la produzione e, di conseguenza, diminuiscano i tempi di ricerca e sviluppo.
Nulla da togliere al fantastico IDE di Microsoft, ma quello su cui si dibatteva ieri era una leggera sfumatura di questa argomentazione: lo strumento che dovrebbe aiutarci a diminuire i tempi di sviluppo dovrebbe essere l'ambiente che utilizziamo oppure gli strumenti (linguaggio di programmazione e correlati) stessi che abbiamo deciso di usare ? Dovrebbe essere i C# della situazione ad essere un linguaggio capace di diminuire i tempi di sviluppo oppure l'IDE che ci permette di utilizzarlo ? A mio parere (molti di voi non saranno d'accordo e mi interessa particolamente l'altrui opinione in questo caso) è il linguaggio stesso che deve velocizzare i tempi di sviluppo. Non è molto utile uno strumento potente se poi non si è in grado di utilizzarlo per raggiungere completamente i propri obiettivi.
Sinceramente non so quali siano le reali differenze a livello di tempi di sviluppo tra tutti i linguaggi esistenti, ma, se posso fare un esempio specifico, utilizzo Python e PHP da molto tempo e devo dire che con loro i tempi di sviluppo sono relativamente brevi. Certo, PHP avrà delle lacune dal punto di vista delle funzionalità , sarà più prono agli errori, ma è indubbio che un'applicazione web venga sviluppata più celermente con PHP che con altri linguaggi suoi concorrenti. Per non parlare di Python: i tempi di sviluppo non sono neppure paragonabili a quelli necessari per effettuare applicazioni simili in Java o C++. Ovviamente non è sono solo i tempi di sviluppo che contano nella produzione di software, ma ormai sono i più importanti. E' vero che i linguaggi che facilitano i RAD (Rapid Application Development) spesso mancano di alcune funzionalità che potrebbro essere utili (vedi il type checking in fase di compilazione per esempio), ma non sono indispensabili e spesso possono essere emulate senza grandi difficoltà . La libertà è di movimento all'interno del linguaggio è quella che diminuisce i tempi di sviluppo: un sistema completo di Code Coverage in Python può essere scritto con pochissime righe di codice. Non so quanto ci voglia a fare lo stesso in C++, ma penso tempi nettamente più lunghi.
Tornando al discorso iniziale, nel momento in cui è il linguaggio stesso a fornirci strumenti sintattici che ne facilitano la stesura, diventano parzialmente inutili gli IDE troppo complessi o ricchi di funzionalità . Personalmente utilizzo per lo sviluppo web Notepad++, e per lo sviluppo desktop rispettivamente IDLE per Python e DEV-CPP per C/C++. Di questi il più avanzato è sicuramente l'ultimo, anche se il 70% delle funzionalità mi sono del tutto estranee perchè non le utilizzo. Ritengo veramente utile solo la colorazione della sintassi, ed in rari casi il class browser. Il resto è puro condimento, che può essere reso quasi totalmente utile se si utilizzano gli strumenti giusti e con il gisto approccio. Se uniamo all'editor pure e semplice una libreria per lo Unit Test siamo a cavallo. Non pretendo che le mie parole siano oro colato, e mi interesserebbe sentire il parere di qualcun'altro sull'argomento. A risentirci ...