Quest’anno ho avuto la possibilità di partecipare alla NDC2010, una delle migliori conferenze a cui abbia mai partecipato sia per la qualità delle sessioni che degli speaker presenti.
Ho seguito alcune sessioni (e discussioni) su Ruby/IronRuby di Scott Bellware e Shay Friedman che mi hanno portato ad alcune riflessioni sulle quali sto ancora ragionando e che vorrei condividere.
C# è senza dubbio un bellissimo linguaggio, appena ho iniziato a lavorarci (parliamo del 2001) ho amato il suo rigore la sua sinteticità e la sua eleganza. Ho sempre amato il fatto che i metodi non sono virtuali per default che posso dichiarare una classe sealed cosi che nessuno possa ereditarla e gli altri costrutti che in qualche modo proteggono il mio codice da un uso improprio.
Poi ho scoperto Ruby, beh a dire il vero l’ho scoperto qualche anno fa, ma solo negli ultimi mesi ho iniziato seriamente a provarlo e a farci qualcosa di concreto.
Ruby è un linguaggio semplice, senza vincoli la sua natura dinamica permette di fare cose fuori dal controllo di un programmatore inesperto.
Imparare Ruby mi sta facendo cambiare alcune opinioni su C# che in confronto è molto più “cerimonioso” e ingessato di Ruby.
Inoltre, quei costrutti citati prima, che da un lato sembrano aiutarci a rendere le nostre classi più solide in realtà rendono molto problematico il testing della classe stessa (a tal proposito consiglio la visione della sessione di Michael Feather sul tema della testabilità di C#).
Molti ritengono che C# sia più protettivo rispetto a Ruby (o ad altri linguaggi dinamici) perchè il compilatore, il type system, l’intellisense, ecc... aiutano a commettere meno errori, ma, visto che siamo professionisti, ne abbiamo davvero bisogno? Non li vedete come dei limiti alla vostra creatività e produttività?
Pensate che piloti di formula 1 usino l’ABS?
Anche C# versione dopo versione va nella direzione dei linguaggi dinamici, ma forse le sue radici non lo renderanno mai libero come altri linguaggi. E’ giunta l’ora di ricominciare a guardarsi in giro?
Per ora sono solo pensieri sparsi, idee, dubbi, s#$£e mentali, sui quali però mi piacerebbe discuterne….magari in una delle prossime conf.