In questo paragrafo vi voglio parlare di una vera chicca di Microsoft
che ha implementato nel suo .Net Framework, e in questo caso Microsoft è stata geniale. Come o sostenuto dal primo
paragrafo la programmazione C\C++ (in Windows), per colpa di alcune incoerenze di Windows e molto complessa.
Diciamo che con la Creazione del .Net Framework Microsoft è riuscita a Creare un
Ambiente di Programmazione chiamato CLI, che riesce ad unificare la Programmazione Assistita e la Programmazione
Nativa.
Per chi ancora non l’ha compreso, la Programmazione Nativa è quella effettuata in C\C++, che dona il Potere di
Gestire l’Hardware in modo diretto e le istruzioni del linguaggio vengono Convertite da un Compilatore C\C++ in
Puro Binario.
Mentre la Programmazione Assistita è più sicura perché controlla che non vengano fatti gravi danni all’Hardware
e che le Applicazioni, per colpa di alcune dimenticanze dei Programmatori, non mandino in tilt il Sistema;
ciò avviene perché uno Spazzino Virtuale Automatizzato, che è implementato nella macchina virtuale che effettua
la Compilazione Dinamica, pulisce la Memoria non più utilizzata liberando risorse, cosa che dovrebbero fare
i programmatori, ma che ogni tanto sfugge, quindi programmando in ambiente Nativo questo rischio è reale.
CLI in un certo senso è un estensione del C\C++, ed anche un Linguaggio riconosciuto da Enti Certificati che
si Occupano dello Standard Internazionale dei Linguaggi.
CLI permette di scrivere in un Applicazione Codice .Net e Amalgamarlo con codice Nativo (C\C++). Il Compilatore
CLI Riuscirà con Abilità a Distinguere i Linguaggi, producendo Codice Intermedio (chiamato IL) per il Codice
CLI/.Net e Codice Nativo (in Puro Binario) per il Codice Scritto in C\C++. A sua volta la Macchina Virtuale
controlla le istruzioni e distingue i due Ambienti e Compila Dinamicamente in Binario, tramite apposito compilatore,
solo le Istruzioni IL, mentre le Istruzioni Binarie verranno eseguite direttamente
dall’Hardware. Sinceramente ciò mi fa rabbrividire, è questa chicca, forse poco conosciuta, mi sta facendo salire
la voglia di costruire, assieme a questo Tutorial su Java, una struttura didattica, ben pianificata,
sull’informatica in generale. Anche se sono solo a fare tutto questo e dovrò trovare il tempo per curare anche dei
Tutorial per altri Linguaggi.
CLI è l’Ambiente dei Mie Sogni? Diciamo che si avvicina abbastanza, solo che non condivido alcuni meccanismi
a mio avviso ostici, che potevano donare più fluidità all’intero complesso.
La controparte Java, come già spiegato in altri paragrafi offre supporto anche per il C\C++ nell’ambiente Java,
tramite dll (librerie a collegamento dinamico), ma utilizzare CLI per questi Linguaggi e molto meglio, perché CLI
amalgama tutto come se si trattasse di un solo Linguaggio.
Vorrei aggiungere, dopo aver riflettuto molto su questo, una nota su Swing; forse non mi credete, ma dal 1996
ad oggi ho utilizzato pochissimo Java, diciamo in modo intensivo solo pochi mesi (forse un paio, un po’ di tempo fa)
e sono riuscito in pochissimo tempo a modificare la logica di Implementazione di Swing, ma non tutti riesco a farlo.
Si da un lato è molto bello perché è necessario un abilità al di fuori del comune per ottenere simili risultati,
ma il punto è che probabilmente non dovrebbe funzionare cosi. Mi sembra strano perché constatando, dopo aver
letto varie cose scritte da altri Programmatori, che capita a tutti di ritrovarsi con una applicazione con
tonnellate di codice Swing; ciò mi lascia perplesso; sono in pochi quelli che come me sono riusciti a
modificare la logica di implementazione di Swing per snellire massicciamente il codice, qui sono un attimino
dubbioso.
Grazie ad un notevole Ingegno la Logica d’Implementazione di Swing può essere gestita in vari modi, ma quello che
voglio comprendere bene è se veramente necessario un uno sforzo progettuale immane per arrivarci o esistono
tecniche che in questo momento mi sfuggono, perché se riscontrerò che è comunque necessaria una grande abilità
per snellire le istruzioni Swing, ciò mi insospettisce, anche se da un lato è stupendo perchè è necessaria
un Ingegneria di Implementazione Elevata per dominare Swing. Comunque proseguendo con la
stesura di questo Tutorial credo di riuscire ad avere risposte più significative.
Tornando a CLI ci sarebbe da aggiungere che se noi stiamo vivendo quest’epoca di sviluppo basata su Framework,
tipo Java o .Net, è grazie al C\C++; perché la storia ci insegna che si è partiti dallo strato più basso (il C)
per arrivare nel tempo nel punto in cui siamo.
Se si vuole ricostruire la ruota da soli, è necessario studiarsi bene il C\C++; e la via migliore per imparalo
sarebbe CLI, perché utilizzare la grafica in C\C++ tramite Windows diventa una situazione frustrante.
In questo modo, tramite C\C++ CLI, si potrebbe riorganizzare un ambiente grafico personale,
per definire un Nuovo Linguaggio Ibrido, che riesce a sfruttare la Potenza Grafica 2D, come è stato fatto con
Swing, ma magari con una Logica di Implementazione molto più fluida e semplice. In questo caso gli sforzi Progettuali
ricadrebbero sulla stesura del Nuovo Linguaggio, anziché ricostruire una logica di implementazione come accade
in Swing, per non ritrovarsi con una applicazione Swing con Tonnellate di Codice.
Poi si potrebbe anche optare ad un eventuale implementazione di WPF (per gli Acceleratori Grafici) nel nuovo
Linguaggio. Fermo restando che ciò è utile solo a livello didatico/personale, altrimenti si potrebbe tranquillamente
scegliere di realizzare un Progetto WPF/C# che è potente, flessibile e veloce.
Per chiudere questo paragrafo dal menu in fondo alla pagina, se lo desiderate, potete verificare se ho trovato
il tempo di cominciare a scrivere nuovi Tutorial.
Paragrafo Scritto e Pubblicato il 24 Agosto 2026
Aggiornato il 30.08.2026
|