Come promesso, in un mio precedente post, sono finalmente a spiegare i motivi per cui personalmente ho eletto C# a mio linguaggio di riferimento. Badate, questo non significa che io mi rifiuti di sviluppare in altri linguaggi, ma semplicemente che potendo scegliere, a ragion veduta abbraccio C#.

Il primo motivo è di carattere puramente affettivo. Le mie prime esperienze di programmazione seria le ho fatte in Ansi "C", e poi in C++ e C# ha il pregio di ricordarmelo. Certo, non è la stessa cosa in fatto di sintesi ma talvolta mi piace scrivere la chiamata ad un metodo, e il test del risultato sulla stessa riga come era abitudine indimenticata del buon vecchio C.

Il secondo motivo è di carattere più politico. Non sopporto l'arroganza, e tantomeno i moralisti. Perciò Java non fa per me. Già tempo fa ho avuto l'occasione di scrivere sul mio rapporto con certi programmatori Java, e trovo che sia ampiamente corretto quello che ha detto Lorenzo in risposta ad un mio post: E' troppo facile per il coniglio considerarsi vincitore quando gareggia con la tartaruga, ma pensare di poter considerare questa facile vittoria motivo di orgoglio e nobiltà è davvero troppo. Ho la pretesa di voler scrivere buon codice e ritengo di poterlo fare almeno tanto bene in C# quanto in Java. Se non di più. Inoltre considero C# anticonformista. E questo per me è addirittura una bandiera da portare. Anticonformista, nel senso che non si conforma alle morali dettate dai benpensanti. In che senso? Per quale motivo devo essere obbligato a fare try e catch di tutto quello che si muove? Questo è un conformismo. Voglio sentirmi libero di decidere io come, dove e quando trappare. Punto.

Terzo. In questi giorni ho scritto un articolo, che se tutto va bene uscirà a novembre, che mi ha dato l'occasione di approfondire alcuni dettagli implementativi dei compilatori C#2.0 e Java 1.5 (o 5.0 che dir si voglia). Il risultato di questo paragone mi ha fatto comprendere meglio perchè C# è meglio di Java, e non mi riferisco a feature del framework, ma solo esclusivamente al compilatore. Avrete già letto, quello che accadrà ai generics in ambito Java, e se ho ben chiaro cosa ha mosso i progettisti di C#, non ho altrettanto chiaro le finalità di quelli Java.

Quarto ed ultimo. Il mito della portabilità. Mi è sempre andato stretto, il dovermi confrontare con questa caratteristica che confesso mi lascia spesso interdetto. Ma più e più volte mi sono chiesto: ma vale veramente la pena costringere il mio cliente a spendere il 10-20% in più sull'hardware per poter far girare una applicazione talmente generica da poter funzionare ugualmente su Windows che su Linux o Mac? La risposta a questa domanda non la so. Ma certamente se metto assieme il risparmio in termini di risorse macchina, e la maggiore produttività del linguaggio, la bilancia per me pende di certo su C#.

Questi sono i miei perchè.

Buonanotte.