Perchè usare C#?

Quali sono i motivi che mi hanno spinto ad imparare C#

Scritto da Roberto Rossi il 15-09-2019

Nel mondo del CAD, nel mio mondo, i linguaggi di programmazione che si possono utilizzare sono tanti, forse troppi.

Si parte dal classico C/C++ passando per C#, Visual Basic, Python, Delphi, senza dimenticare Lisp (estremamente utile in AutoCAD e in CAD simili) Javascript, Ruby, Java e diversi altri.

Oggi non ho nessuna intenzione di fare un confronto tra linguaggi, anche perchè ognuno ha i suoi pro e i suoi contro. Oggi voglio raccontare i motivi per i quali preferisco C#!

Linguaggio di programmazione

Cos'è un linguaggio di programmazione?

Vorrei iniziare questo articolo con un chiarimento. E vorrei chiarire cos'è, per me, un linguaggio di programmazione.

Non voglio parlare di quello che, a livello accademico, viene definito linguaggio di programmazione.

Per quanto mi riguarda un linguaggio di programmazione è un insieme di strumenti software che consentono la creazione di programmi.

Quindi abbiamo:

  • Il linguaggio vero e proprio.
  • Le librerie e/o i framework standard.
  • L'ambiente di sviluppo standard.
  • La documentazione.
  • La comunità che utilizza questo insieme di strumenti.

Ultimo dettaglio, il mio sistema operativo di riferimento è Windows.

Le caratteristiche

Quali sono le caratteristiche di C# che mi hanno colpito maggiormente?

Vediamo di riassumerle. C# è:

  • Un linguaggio moderno.
  • Elegante.
  • Abbastanza semplice da imparare.
  • Sicuro.
  • Versatile e multi-ruolo.
  • Veloce.
  • Completo.
  • Multi-piattaforma.
  • Sempre in evoluzione.
  • Dotato del miglior ambiente di sviluppo oggi disponibile.
  • Una grande comunità.
  • In buona parte Open Source.

I vantaggi di C#

Moderno

Cos'è un linguaggio di programmazione moderno?

Per me un linguaggio di programmazione moderno permette lo sviluppo attraverso più paradigmi di programmazione, dispone di un framework ampio ed è dotato della maggior parte delle funzionalità necessarie a chi sviluppa software.

Un linguaggio ben documentato, sufficientemente chiaro da non farti venire mal di testa, con una curva di apprendimento favorevole.

C# è tutto questo e un po di più. E' orientato agli oggetti anche se è possibile piegarlo a paradigmi diversi, cosi come è un linguaggio fortemente tipizzato anche se è possibile usarlo in modo creativo ignorando, almeno un pò, questa sua caratteristica.

C# può, nativamente, essere usato come linguaggio ad oggetti ma, all'occorrenza, può essere utilizzato come linguaggio di programmazione funzionale e si può adattare alla programmazione dinamica.

Come se non bastasse con C# si può usare sia la programmazione imperativa che dichiarativa, oppure un mix delle due.

Tutto senza aggiungere nulla più di quello che viene fornito con il linguaggio stesso.

Semplice da imparare

C# è un linguaggio sofisticato e come tale richiede un certo impegno e una significativa quantità di tempo. Nonostante ciò, grazie anche alla sua sintassi simile ad altri linguaggi, risulta rapido da imparare.

Anche le sue librerie(framework) standard risultano chiare nel funzionamento e nell'organizzazione, cosa che agevola molto l'apprendimento.

A questo si aggiunge una considerevole quantità di documentazione sia teorica che pratica che, di fatto, copre tutto il linguaggio. Una documentazione sempre aggiornata e di ottima fattura.

Sicuro

C# gestisce automaticamente la memoria. Quindi non sarà necessario preoccuparsi di dettagli come l'uso della ram o di essersi dimenticati la deallocazione di qualche struttura.

Nonostante ciò C# permette l'uso di costrutti avanzati in grado di risolvere qualsiasi problema legato ad un eventuale uso eccessivo di risorse e riesce ad essere efficace in qualsiasi situazione nella quale le prestazioni vengono prima di tutto.

A questo va aggiunto il fatto che è dotato di una libreria/framework standard affidabile e molto completa.

Versatile

Con C# si possono sviluppare software indipendenti con una propria interfaccia utente cosi come possono essere sviluppate applicazioni web e applicazioni mobili.

Si hanno a disposizione librerie e framework per lo sviluppo di qualsiasi software. Si va dai software client con o senza interfacce grafiche alle applicazioni web o a quelle per i dispositivi mobili con Android e/o iOS. Personalmente non mi sono ancora imbattuto in un ambito precluso a C#.

Veloce

Nonostante C# generi dei file binari pseudo-compilati, quindi non direttamente in codice macchina, non si avvertono particolari cali di velocità o efficienza.

Sicuramente c'è un degrado delle prestazioni, ma questo non è cosi significativo come si potrebbe pensare.

Confrontando C# con, ad esempio, un linguaggio veramente compilato come C++ i risultati sono decisamente interessanti.

Ci sono casi in cui C++ risulta decisamente più prestante ma, allo stesso modo, in alcuni casi C# è alla pari se non più rapido.

Nei Riferimenti ho inserito alcuni link a riguardo.

I vantaggi di C#

Completo

Cosa vuol dire, per me, linguaggio completo?

Quando un linguaggio dispone di tutto ciò che mi permette di sviluppare il software che ho in mente, allora è un linguaggio completo.

Quando tutte le funzionalità che mi servono sono facilmente accessibili, allora è un linguaggio completo.

Quando trovo, già pronte, tutte le strutture dati necessarie e le funzioni che mi servono per gestirle, allora è un linguaggio completo.

Quando leggo la documentazione e... si capisce come funziona e come applicare i concetti letti, allora è un linguaggio completo.

Quando scopro che c'è una funzione che non mi aspettavo ci fosse, e questa è particolarmente semplice da usare, allora è un linguaggio completo.

Tutto questo è un linguaggio completo.

Multi-piattaforma

C# nasce in Windows. Ma non è rimasto li.

C# si è evoluto ed è andato oltre.

Cosi oggi lo possiamo usare in Windows, con Linux, in MacOS, lo possiamo utilizzare per sviluppare in Android oppure con iOS.

Anche grazie al fatto che C# è uno standard ECMA oggi è possibile sviluppare applicazioni anche per i sistemi più inaspettati. Vogliamo sviluppare in C# per Raspberry Pi? Si può.

In evoluzione

C# non è un linguaggio fermo. Non passano anni tra una versione e la successiva. C# è un linguaggio vivo e in continuo sviluppo.

Non solo C# viene costantemente potenziato ma è ampiamente supportato, direttamente da Microsoft.

E ogni versione porta con se interessanti novità rispetto a quella precedente. E le novità non si limitano al linguaggio ma coinvolgono l'intero ambiente di sviluppo formato da linguaggio C#, librerie/frameworks per finire con l'IDE per la gestione del codice sorgente.

L'ambiente di sviluppo

Voglio spendere poche parole per l'IDE principale di C#.

Microsoft Visual Studio è l'ambiente di sviluppo più completo e potente che io abbia mai utilizzato. Nonostante ci siano altri software, altri IDE, non ne ho mai trovato uno con la stessa qualità.

Perfino la versione gratuita Community non ha rivali.

Quando è possibile la scelta di Visual Studio è d'obbligo. Va utilizzato se si vogliono avere tutti gli strumenti necessari per realizzare qualsiasi tipo di applicazione.

In mancanza di Visual Studio, per lo sviluppo con C#, esistono altre soluzioni. Soluzione di qualità e potenza inferiori che, comunque, consentono uno sviluppo confortevole. Un esempio è Visual Studio Code.

Per approfondimenti vedere la sezione Riferimenti.

Comunità

Grande! La comunità di sviluppatori che si è formata attorno a C# è enorme. Allo stesso modo il sopporto dato a questo linguaggio è estremamente ampio.

Non solo grazie alla bontà del linguaggio C# in se, ma anche grazie al framework .NET, questo sistema di sviluppo è diventato uno dei più rilevanti.

Open Source

C# è open source. Si. Non ho altro da dire.

Disponibile su Github.

Per approfondimenti vedere la sezione Riferimenti.

I vantaggi di C#

Due parole per concludere

C# è perfetto? No. Nessun linguaggio di programmazione lo è.

Ci sono situazioni particolari nelle quali C# è assolutamente inadeguato, ma anche questo vale per qualsiasi linguaggio.

Personalmente considero C# un ottimo sistema di sviluppo software. Adeguato ai tempi nei quali viviamo e in grado di soddisfare quasi qualsiasi necessità.

Riferimenti

Ecco alcuni articoli che trattano C# e i motivi per utilizzarlo.

Il linguaggio C#:

C# multi-piattaforma e ambienti di sviluppo:

Documentazione:

Benchmarks:

Machine Learning:

Open Source:

Licenza articolo

Licenza Creative Commons
Quest'opera è distribuita con Licenza Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale.