Visual Studio 2022 e C# – Il mio prossimo progetto editoriale

Dopo aver pubblicato il mio libro “Visual Basic 2019 – Guida alla programmazione” (ved. http://books.bell1.net) è tempo di dedicarmi a C# e in particolare alla prossima versione che sarà distribuita con Visual Studio 2022, presumibilmente verso fine 2021 o all’inizio del 2022.

Non so se sto delirando Surprised smile ma c’è talmente tanto materiale da sviscerare che ho quasi in mente l’idea di farne più libri, non uno solo, anche perché ho un limite di circa 700 pagine con Youcanprint.it e sono troppo poche per quello che ci voglio mettere dentro: tutte le informazioni “base”, argomenti avanzati, la gestione di fonti di dati e le strutture/algoritmi (tuple, record, stack, queue ecc.). Ho idea che serviranno almeno due o tre libri per tutto, quindi ci vorrà un po’ di tempo.

Allora ho pensato di pubblicare qui qualche “pezzo”, qualche “tips & tricks”, tratti dai testi che man mano termino di scrivere. Non sarà ovviamente una pubblicazione completa: per averla completa dovrete acquistare i libri, ma saranno comunque spunti su cui studiare e approfondire.

Dato che ho appena terminato il 1° capitolo introduttivo su Visual Studio 2022, ecco qui qualche assaggio.

========== ========== ========== ========== ========== ========== ========== ========== ========== ==========

Gli ambienti di sviluppo integrati (IDE) sono una categoria molto particolare di programmi applicativi: sono programmi che servono a costruire altri programmi. Tra i tanti ambienti di sviluppo esistenti, uno ha avuto forse più successo di tutti: Visual Studio, prodotto da Microsoft e ormai giunto alla versione 2022. Internamente è classificato come versione “17”.

NOTA – L’acronimo IDE significa Integrated Development Environment, cioè ambiente di sviluppo integrato.

———-

Ciclo di vita di qualsiasi tipo di applicazione:

· progettazione e creazione di prototipi;

· creazione dell’interfaccia utente, anche con i designer di interfacce grafiche e con gli emulatori di dispositivi mobili;

· scrittura del codice con l’editor di codice;

· gestione e interazione con le fonti di dati: progettazione, modellazione, visione/modifica;

· gestione della documentazione;

· test (per mezzo degli unit test);

· debug, con molti strumenti di analisi del codice e del programma in esecuzione;

· creazione del pacchetto di installazione;

· rilascio e distribuzione dell’applicazione.

———-

Nelle versioni più recenti la parità delle funzionalità dei due linguaggi si è persa, dato che mentre C# ha continuato a essere esteso con nuove funzionalità (spesso prese anche dal paradigma funzionale adottato dal linguaggio F#), Visual Basic è rimasto al palo, salvo pochi aggiustamenti che sono serviti per correggere alcuni errori. La motivazione data dal team di sviluppo sul mancato sviluppo di Visual Basic è la necessità di dare stabilità al linguaggio.

NOTA – La nostra opinione è che portare ancora avanti il linguaggio Visual Basic è ormai economicamente insostenibile per Microsoft, dato che commercialmente si tratta di un “doppione” di C# (facevano le stesse cose). Ciò non toglie che Visual Basic resterà nel mondo reale ancora per decenni come è successo per VB 6.0, dato che esistono ormai decine o centinaia di migliaia di applicazioni scritte in Visual Basic. La conversione a C# prima o poi avverrà, ma molto gradualmente e solo quando sarà necessario estendere il campo delle applicazioni ad altre piattaforme o a funzionalità che non sono disponibili in Visual Basic.

———-

Alcuni linguaggi, come C#, aderiscono a più di un paradigma di programmazione. Se prendiamo qualsiasi programma C#, scopriremo che aderisce all’importantissimo paradigma della programmazione orientata agli oggetti, perché in C# “tutto” è un oggetto, perfino l’utente. In C# troviamo anche il paradigma della programmazione orientata agli eventi, in particolare per la definizione dei comportamenti delle interfacce grafiche, e possiamo utilizzare anche le tecniche della programmazione strutturata. Naturalmente possiamo facilmente individuare anche i paradigmi della programmazione imperativa (le istruzioni sono “comandi”), della programmazione dichiarativa (per esempio nell’ambito delle interfacce grafiche definite nelle applicazioni WPF, con il codice XAML) e della programmazione funzionale (istruzioni della libreria LINQ e altre tecniche funzionali spesso derivate da F#).

———-

Visto che la programmazione orientata agli oggetti, spesso chiamata con l’acronimo OOP che significa Object Oriented Programming, è così importante in C# e negli altri linguaggi .NET, iniziamo ad approfondire i tre concetti fondamentali che costituiscono i pilastri su cui si basa questo paradigma: ereditarietà, incapsulamento e polimorfismo.

È programmazione orientata agli oggetti vera e propria se sono applicati tutti e tre questi concetti, altrimenti si tratta tutt’al più di programmazione basata sugli oggetti.

———-

Per denominare in modo sintetico le classi derivate, in tutto il loro percorso, si può usare una notazione con il punto (.), come nel seguente esempio:

RegnoAnimale.Cordati.Mammiferi.Felini.Gatto

NOTA – Abbiamo introdotto la notazione del punto (.). Il punto tra due elementi (due classi o una classe e il suo metodo o attributo) significa semplicemente che l’elemento posto a destra del punto “appartiene” all’elemento posto a sinistra.

La stessa cosa si può fare quando ci si deve riferire a un metodo di una classe. Per esempio, per indicare il colore di un gatto possiamo riferirci alla corrispondente proprietà:

Gatto.Colore = “Nero”

———-

L’incapsulamento rende una classe molto simile a una “scatola nera”: l’interazione con la scatola nera (classe) è limitata ai metodi che possono essere richiamati. Non è possibile in alcun modo modificare lo stato interno della scatola nera se non in modo fortemente controllato attraverso i metodi.

In questo scenario c’è un vantaggio collaterale: se dall’esterno non è possibile vedere alcuna modifica dei “punti di accesso” (metodi) alla scatola nera, possiamo modificare anche pesantemente il codice interno alla classe senza dover cambiare anche di una sola riga di codice in tutto il resto dell’applicazione. Tecnicamente, in questo caso si parla di alto grado di isolamento tra l’interno e l’esterno della classe.

———-

Per polimorfismo si intende la possibilità di interagire con due o più classi, dotate di un insieme di metodi e di proprietà comuni, senza dover identificare esattamente il tipo di oggetto con il quale si sta lavorando.

———-

Esempio CS_01_02


image

———-

Esempio CS_01_03


image

———-

Volete fare qualcosa di ancora più veloce, cioè provare una istruzione o più istruzioni “al volo”, senza creare appositamente un programma? Allora dovete provare la finestra “C# Interactive”: cliccate sul menu View > Other Windows > C# Interactive.

Si aprirà una finestra come quella che potete vedere nella Figura 1.2:

Figura 1.2 – La finestra C# Interactive.

clip_image002

Inizio a scrivere un libro su C# 10.0 (per Visual Studio 2022)

In questi giorni sto riordinando il materiale per scrivere un libro su C# 10.0 (per Visual Studio 2022) e quindi ho iniziato a scrivere il 1° capitolo.

Immancabile il confronto con Visual Basic che ormai è diventato impietoso, dato che Microsoft ha deciso di non sviluppare più questo linguaggio.

Ecco un brano che tratta proprio sul confronto tra i due linguaggi e l’epilogo di Visual Basic:


La discussione su quale linguaggio sia il migliore è tradizionalmente ancora viva tra gli sviluppatori C# e quelli Visual Basic, senza contare chi sviluppa in Python o in C++. Fino alla versione 2010 la scelta tra i linguaggi VB e C# era dettata quasi unicamente dalle preferenze personali e dall’ampiezza delle conoscenze dello sviluppatore: infatti i due linguaggi avevano le stesse potenzialità, perché entrambi basati sulla programmazione orientata agli oggetti (OOP), mentre ovviamente differiscono nella sintassi, cioè la “grammatica” e la grafia con cui vengono scritte le istruzioni.

Nelle versioni più recenti la parità delle funzionalità dei due linguaggi si è persa, dato che mentre C# ha continuato a essere esteso con nuove funzionalità (spesso prese anche dal paradigma funzionale adottato dal linguaggio F#), Visual Basic è rimasto al palo, salvo pochi aggiustamenti che sono serviti per correggere alcuni errori. La motivazione data dal team di sviluppo sul mancato sviluppo di Visual Basic è la necessità di dare stabilità al linguaggio.

NOTA – La nostra opinione è che portare ancora avanti il linguaggio Visual Basic è ormai economicamente insostenibile per Microsoft, dato che commercialmente si tratta di un “doppione” di C# (facevano le stesse cose). Ciò non toglie che Visual Basic resterà nel mondo reale ancora per decenni come è successo per VB 6.0, dato che esistono ormai decine o centinaia di migliaia di applicazioni scritte in Visual Basic. La conversione a C# prima o poi avverrà, ma molto gradualmente e solo quando sarà necessario estendere il campo delle applicazioni ad altre piattaforme o a funzionalità che non sono disponibili in Visual Basic.


Probabilmente qui finisce un’era. Peccato. Sad smile

Visual Studio 2022 "Preview 1" disponibile al download!

Finalmente è arrivato Visual Studio 2022: la “Preview 1” è disponibile per il download gratuito QUI.

Attenzione al fatto che si tratta di una versione preliminare e quindi:

  • possono esserci funzionalità incomplete
  • possono manifestarsi errori in qualsiasi parte del prodotto
  • NON dispone di licenza commerciale e quindi si possono solo fare test e prototipi, non si possono distribuire prodotti finiti realizzati con questa versione

image

IL LINGUAGGIO F#: LA NUOVA/VECCHIA FRONTIERA DELLO SVILUPPO DI SOFTWARE

Tra le mie nomine a Microsoft MVP che ho avuto tra il 2008 e il 2019 c’è stata anche quella sul linguaggio F#, durata un solo anno, perché poi Microsoft ha riunito tutte le nomine relative ai linguaggi di programmazione nell’unica nomina dal titolo “Visual Studio and Development Technologies”.

Pur essendo da decenni uno sviluppatore Visual Basic e avendo programmato anche in vari altri linguaggi (tutte le versioni Basic dal Commodore VIC-20, al Gw-Basic, al Visual Basic 1.0 per MS-DOS e quasi tutte le versioni Visual Basic, ma anche C# e JAVA, oltre che il linguaggio Clipper, dBIII e dBIV), devo dire che fin da subito, quando questo linguaggio è stato rilasciato da Microsoft, il linguaggio F# mi ha colpito e impressionato più di tutti. Mi ha colpito la sua essenzialità e la sua potenza immersa in una concisione dei costrutti veramente incredibile.

F# For Dynamics CE - Why and How | Formus Professional Software

Quello che mi ha colpito più di tutto è il fatto che l’obiettivo principale che caratterizza questo linguaggio è il miglioramento della qualità del codice: questo è ottenuto attraverso l’immutabilità delle variabili, l’eliminazione del concetto di Null, la possibilità di nidificare le varie parti di codice, cioè le funzioni, una dentro l’altra, come in una espressione matematica.

In qualche modo questo mi ricorda molto il linguaggio SQL, soprattutto tenendo presente i costrutti dell’algebra relazionale: proiezione, selezione, ridenominazione e prodotto cartesiano. Quattro operazioni che possono essere inglobate una nell’altra fino ad ottenere il risultato desiderato.

La stessa cosa per quanto riguarda LINQ: la libreria introdotta con .NET Framework 3.5 e in Visual Studio 2005. Anche in questo caso abbiamo una struttura del linguaggio che ha un approccio molto matematico.

Be’, ho citato le funzioni nidificate una nell’altra e in effetti F# è un “linguaggio funzionale”, cioè basato su funzioni che possono essere concatenate una all’altra fino a raggiungere l’obiettivo prefissato dal nostro programma.

Ora, forse non è chiaro perché nel titolo ho scritto che F# costituisce la “nuova/vecchia frontiera” dello sviluppo del software. In effetti, il paradigma della programmazione funzionale non è una novità di questi due ultimi decenni, con l’uscita di F# dai laboratori di Microsoft Research: infatti è un paradigma che esiste da molti più decenni e in qualche modo è rimasto un po’ confinato nell’ambito accademico o altamente specialistico, con linguaggi come Haskel (1978), Eiffel (1985), ma anche Erlang (utilizzato da Whatsup).

I linguaggi funzionali hanno così avuto un po’ la fama di linguaggi adatti agli scienziati o a studiosi chiusi nelle loro Università. In alcuni casi sono stati utilizzati per ambiti dove era necessaria una altissima velocità e precisione come nelle applicazioni bancarie.

Oggi abbiamo questa nuova frontiera data dalla ri-scoperta dei linguaggi funzionali, dato che Microsoft per prima, ma anche molti sviluppatori poi, si sono resi conto che questo linguaggio permette di realizzare quello che per Deming è l’obiettivo principe di qualsiasi attività produttiva: il miglioramento continuo della qualità.

Il fatto che non esistano i valori nulli, che le variabili non abbiano dei cambiamenti occulti (magari per qualche thread parallelo che li modifica) e che i costrutti sono di radice matematica e quindi deterministici, rendono questo linguaggio l’ideale per produrre codice praticamente esente da errori e dai cosiddetti “effetti collaterali”.

Il vantaggio che F# fornisce rispetto ai suoi colleghi funzionali più anziani, però, è dato dal fatto che è perfettamente integrato con .NET Framework e quindi nello stesso programma F# possiamo integrare parti di codice funzionale, parti di codice orientato agli oggetti e parte di codice secondo il paradigma imperativo. Ovviamente tutto deve essere ben calibrato in modo da non introdurre quei piccoli mostri che sono gli effetti collaterali di un codice non deterministico.

Un progetto scritto in F# può essere aggiunto senza problemi a una Soluzione di Visual Studio, insieme a progetti scritti in C# e in Visual Basic. Inoltre lavora bene anche con la piattaforma Azure. Meglio di così: cosa volete di più?

Dopo questo articolo introduttivo, pian piano porterò altre informazioni su F#, così vediamo se riuscirò a stimolare il vostro interesse.

Completato il 3° libro della mia nuova "collana"

Il mio progetto editoriale continua a progredire: ora ho pubblicato anche il 3° libro dedicato a Word 2019 (“WORD 2019 – Guida per iniziare”).

Potete trovare questi libri in formato cartaceo e in formato PDF nella piattaforma di Youcanprint.it. Le versioni cartacee saranno a breve disponibili anche sui maggiori store online come Amazon, IBS, Feltrinelli ecc. Inoltre sono disponibili (solo in PDF) anche in https://gumroad.com/mdeghetto.

image