C#… e la Divina commedia!!!

C#… e la Divina commedia!!!

Dante - Inferno
Dante – Inferno

“Nel mezzo del cammin di nostra vita
mi ritrovai per una selva di oscura
ché la diritta via era smarrita.”

Una selva di linguaggi di programmazione!!!

Così come Dante nella Divina Commedia, dall’inferno al paradiso: i miei vent’anni di sviluppo software.

Quando iniziai per la prima volta nella vita a scrivere qualche riga di codice, parliamo di quasi vent’anni fa ormai,  destreggiarsi tra ambienti di sviluppo, linguaggi di programmazione e varie architetture era un lavoro azzarderei dire impossibile per piccoli team o singoli sviluppatori software. Era un inferno di linguaggi e lo “Spaghetti Code” regnava sovrano! Tuttavia il mercato del lavoro non era poi così esigente come lo è ora e ci si poteva permettere il lusso di definirsi sviluppatori per Windows desktop, piuttosto che per il web o, raramente, per il mobile. Ci si poteva permettere il lusso di studiare in modo approfondito un proprio linguaggio per un contesto ben delineato.

Col tempo il livello di flessibilità richiesto ad ogni sviluppatore dalle aziende, specie in questi ultimi anni, è aumentato a dismisura.
Non solo iniziarono ad essere necessarie approfondite conoscenze delle tre piattaforme principali su cui far girare le applicazioni: Desktop, Web, e Mobile, ma iniziarono ad essere richieste anche conoscenze di sviluppo per tutti i sistemi operativi maggiorente utilizzati dalle stesse: Windows, IOS e Linux.

Tra una vastità di ambienti di sviluppo (Visual Studio, Eclipse, LabView, Android Studio….) ed un’enorme vastità di linguaggi/markups/frameworks (C#, C++, ANSI C, Visual Basic, Java, Javascript, HTML, CSS, BOOTSTRAP, AngularJS, Jquery…) quali sarebbero stati quelli giusti? su quali concentrare maggiormente i propri sforzi?

Negli anni si furono tentate diverse strade, ricordo ad esempio Flash e Silverlight (seppur molto potenti e validi)… ma ognuna di esse in qualche misura non raggiunse pienamente i più importanti obiettivi per uno sviluppatore software cross-platform:

  1. Dover studiare a fondo un solo linguaggio di programmazione, potente e versatile;
  2. Avere a disposizione un unico ambiente di sviluppo con il quale sviluppare ogni tipologia di progetto.

La risposta di Microsoft a questa necessità è stata ambiziosa, e per quanto sofferta (doveroso definirla dantescamente parlando un purgatorio) oggi è già una realtà: un solo linguaggio di programmazione (C#.NET) ed un solo ambiente di sviluppo (Visual Studio).

Ed è proprio così! ad oggi posso ritenere di aver scelto la giusta strada di diventare uno sviluppatore Microsoft C#, strada che mi ha portato ad avere gli orizzonti spianati per lo sviluppo su ogni piattaforma e su ogni sistema operativo avvalendomi sempre di un unico e potentissimo ambiente di sviluppo: Microsoft Visual Studio, con il quale creare progetti destinati ad ogni piattaforma (desktop, web o mobile) e ad ogni sistema operativo (Windows, Linox o IOS). Progetti per loro natura strutturalmente diversi, ma sempre basati su un unico linguaggio di programmazione: C#.NET!

A conferma di questa scelta Microsoft negli ultimi anni ha drasticamente cambiato la propria politica finanziaria, basando i propri introiti non più sul software proprietario ma bensì sui servizi offerti come ad esempio Azure. A dimostrazione di questo Microsoft ha reso pubblico quasi tutto il codice sorgente del .NET Framework come di molto altro software e chiunque può consultarlo a questo link:

https://referencesource.microsoft.com/

Microsoft ha cambiato a tal punto il proprio business da definirsi ad oggi non più concorrente di aziende come Google, Apple e Samsung ma bensì collaboratrice! E’ entrata a far parte persino di Linux Foundation collaborandone per gli sviluppi futuri.

Insomma chi più di Microsoft, ad oggi, con le sue risorse ed il suo bagaglio di sviluppatori ed aziende collaboratrici potrebbe proporre una soluzione più affidabile per un contesto multi piattaforma e cross-platform?

Agli amici che mi chiedono come diventare sviluppatori software e da dove cominciare do solo una risposta: iniziate da C#.NET, ovviamente sfruttando le potenzialità di un ambiente potente e gratuito come Visual Studio Community Edition.