lunedì 16 marzo 2009

Java vs. .NET

Qualche sera fa ho incontrato in treno uno studente dell'università che aveva seguito anche i miei corsi Java, e che ora lavora esclusivamente usando .NET.
Ebbene si parlava un po' delle differenze fra Java e :NET, tutte cose abbastanza banali, ma la cosa che mi ha stupito è come si stia diffondendo l'idea che Java sia antico, sia ormai superato.
Non voglio assolutamente aprire una guerra religiosa o un flame, a mio avviso Java ha dato molto ed ha ancora molto da dare. Certamente .NET, essendo un linguaggio maturato anche dall'esperienza fatta con Java, si propone come linguaggio più moderno e privo di alcune lacune di cui Java ancora soffre. Ma questo è naturale, rappresenta una semplice evoluzione dell'idea di un linguaggio ad oggetti fortemente tipizzato e portabile.
Noto però con rammarico come l'uso di questi linguaggio moderni stia facendo disimparare la vera programmazione ad oggetti. Mi ritengo molto fortunato ad aver imparato Java dalla versione 1.0, quando effettivamente c'era poco e ci si doveva arrangiare per forza con un buon design ad oggetti, perché non c'erano altri modi per procedere. Questo mi ha insegnato a distinguere fra le cose che realmente servono nella programmazione, almeno ha contribuito a creare un mio stile di programmazione solido e coerente.
Un esempio per tutti: io non uso mai argomenti di default per i metodi. Perchè? Perché sono abituato a fare un sovraccarico dei metodi, che ritengo essere più chiaro anche se più prolisso, e perché sono ottuso!
E poi a cosa serve avere un linguaggio moderno che reintroduce concetti abbandonati, quali l'overload degli operatori, se poi questi sono scarsamenti usati? Il mio studente mi ha infatti confermato che queste carattestiche sono scarsamente utilizzate nei loro progetti. Ora, inutile fare di tutta l'erba un fascio, ma questo rappresenta comunque un'indicazione delle caratteristiche non usate....
Infine ho provato un grande rammico quando ho appreso che molte aziende ancora usano .NET senza sapere realmente perché, o meglio, solo perché è una buona piattaforma per lo sviluppo in Microsoft Windows. Possibile che nessuno si sia mai posto il problema della portabilità Linux/Unix con Mono?

Nessun commento: