Dal Dial-up al Cloud: 30 Anni di Codice nella Mia Vita

Questo articolo riflette un punto di vista personale, maturato in ambito professionale ma espresso a titolo individuale. Non rappresenta in alcun modo aziende, enti o organizzazioni con cui collaboro. Scopo informativo e divulgativo, non consulenziale.

🤖 Scritto con Agente Copilot Studio Ricerca e draft con Claude + GPT-5.6 Verificato manualmente da Luca
Come funziona l’assistente editoriale di Argos New Dreams – Argo’s New Dreams

Un viaggio personale attraverso le rivoluzioni della programmazione: dal MicroVAX ai sistemi che si auto-programmano


Questo articolo ripercorre trent’anni di evoluzione della programmazione attraverso l’esperienza diretta dell’autore, dal primo programma COBOL su MicroVAX 2 della Digital nel 1986 alle moderne architetture cloud. L’evoluzione dei linguaggi di programmazione ha seguito un percorso che va dal codice macchina al FORTRAN (1955), COBOL, LISP e ALGOL, con quasi ogni linguaggio moderno che deriva da questi quattro pionieri. Attraverso progetti reali – dalla digitalizzazione di una segreteria scolastica su sistemi Digital, al traumatico incontro con RPG su S36 IBM per un’associazione agricola, fino al RM/COBOL su PC per la gestione di allevamenti suini – l’articolo esplora come ogni transizione tecnologica abbia rappresentato non solo un cambio di sintassi, ma una trasformazione nel modo di pensare i problemi. La transizione dal paradigma procedurale a quello object-oriented ha introdotto concetti rivoluzionari come incapsulamento, ereditarietà, polimorfismo e astrazione, permettendo lo sviluppo di sistemi software più robusti, flessibili e riutilizzabili. L’analisi si conclude con una riflessione sul cloud computing e le promesse del low-code, evidenziando come ogni “fine” sia stata in realtà un nuovo inizio.


Introduzione: Monitor Fosfori Verdi e il MicroVAX 2

Era il 1986. Il laboratorio della scuola aveva da poco ricevuto un MicroVAX 2 della Digital, una macchina che sembrava arrivata dal futuro. Monitor a fosfori verdi che dopo ore di programmazione ti facevano vedere tutto rosa quando distoglievi lo sguardo. Niente carta millimetrata romantica, niente schede perforate eroiche – solo tu, il cursore lampeggiante verde su sfondo nero, e la sfida di digitalizzare la segreteria dell’istituto tecnico.

       IDENTIFICATION DIVISION.

       PROGRAM-ID. GESTIONE-STUDENTI.

       AUTHOR. LUCA-BORIO.

       INSTALLATION. ISTITUTO-TECNICO.

       DATE-WRITTEN. 1986.

       ENVIRONMENT DIVISION.

       CONFIGURATION SECTION.

       SOURCE-COMPUTER. MICROVAX-2.

       OBJECT-COMPUTER. MICROVAX-2.

Ricordo ancora l’effetto ipnotico di quei caratteri verdi, la sensazione di potere assoluto quando il programma compilava senza errori, e quel particolare mal di testa che solo chi ha passato 8 ore davanti a un monitor CRT può capire. Gli occhi bruciavano, il mondo assumeva una sfumatura rosata quando finalmente alzavi lo sguardo, ma c’era una magia in quelle sessioni interminabili che nessun IDE moderno è mai riuscito a replicare.


Background e Stato dell’Arte: L’Era dei Minicomputer

La storia dei linguaggi di programmazione è la storia dell’ingegno umano che trasforma la logica in linguaggio – un viaggio continuo dal calcolo meccanico all’intelligenza artificiale. Ogni era del computing ha visto emergere nuovi linguaggi per risolvere i limiti della generazione precedente.

I sistemi Digital Equipment Corporation (DEC) come il MicroVAX rappresentavano il ponte tra i mainframe inaccessibili e i personal computer ancora troppo limitati. Erano macchine serie, per lavori seri, con sistemi operativi come VMS che facevano sentire Windows 3.1 un giocattolo.

Ma il vero trauma doveva ancora arrivare.


Analisi Scientifica: Dal COBOL all’RPG e Ritorno

Il Trauma RPG: Quando IBM Parlava un’Altra Lingua

Dopo la scuola, il primo lavoro “vero” fu per un’associazione agricola. Sistema IBM S36, linguaggio RPG (Report Program Generator). Se il COBOL sembrava verboso, l’RPG era… qualcos’altro.

     FFILECONT  IF   E           K DISK

     C     *ENTRY        PLIST

     C                   PARM                    CODCLI

     C     CODCLI        CHAIN     FILECONT

     C                   IF        %FOUND

     C                   EVAL      TOTALE = TOTALE + IMPORTO

     C                   ENDIF

Non l’ho mai digerito. RPG era pensato per generare report (da cui il nome), ma veniva usato per tutto. La logica a colonne fisse, le indicazioni numeriche invece di costrutti if-then-else leggibili… Era come programmare con le mani legate dietro la schiena. Il Paradigma Procedurale segue un approccio top-down, passo-passo, focalizzato su funzioni e flusso di controllo esplicito, ma RPG portava questo all’estremo, sacrificando la leggibilità per l’efficienza su hardware limitato.

La Rinascita con RM/COBOL: Il PC Diventa Serio

La svolta arrivò con RM/COBOL (Ryan-McFarland COBOL) su PC. Finalmente potevo lavorare su un computer “normale”, senza la necessità di un centro di calcolo. Il progetto era ambizioso: un sistema completo per un allevatore di maiali – gestione del ciclo di vita degli animali, genealogie, alimentazione, vaccinazioni, vendite.

       IDENTIFICATION DIVISION.

       PROGRAM-ID. GESTIONE-SUINI.

       DATA DIVISION.

       FILE SECTION.

       FD  SUINI-FILE.

       01  SUINO-RECORD.

           05  CODICE-SUINO      PIC 9(8).

           05  DATA-NASCITA      PIC 9(8).

           05  CODICE-MADRE      PIC 9(8).

           05  CODICE-PADRE      PIC 9(8).

           05  PESO-NASCITA      PIC 9(3)V99.

           05  BOX-ATTUALE       PIC X(10).

       PROCEDURE DIVISION.

       CALCOLA-RAZIONE-GIORNALIERA.

           COMPUTE RAZIONE = PESO-ATTUALE * 0.03

           IF ETA-GIORNI < 60

              MULTIPLY RAZIONE BY 1.5 GIVING RAZIONE

           END-IF.

Era il 1989, e mentre i miei coetanei giocavano con i primi PC, io gestivo database di migliaia di suini, calcolando razioni alimentari, tracciando genealogie per evitare consanguineità, ottimizzando i tempi di macellazione. Il sistema girava su un PC con hard disk da 20MB e sembrava fantascienza.

La Rivoluzione C++ e le MFC: Quando le Finestre Diventarono un Incubo

Il salto al C++ con le Microsoft Foundation Classes fu come passare dalla guida di un trattore a quella di una Formula 1. Ero tra i primi in Italia a sviluppare un gestionale completo con interfaccia grafica Windows.

class CGestionaleApp : public CWinApp

{

public:

    virtual BOOL InitInstance();

};

class CMainFrame : public CFrameWnd

{

protected:

    DECLARE_MESSAGE_MAP()

public:

    afx_msg void OnFileNew();

    afx_msg void OnPaint();

    // Ore infinite per far funzionare un menu contestuale

};

La programmazione object-oriented emerse come soluzione alle sfide del paradigma procedurale, introducendo concetti rivoluzionari che permettevano lo sviluppo di sistemi software più robusti. Ma MFC era brutale. Ogni finestra richiedeva centinaia di righe di codice boilerplate, la gestione dei messaggi Windows era arcana, e il debugging era un’arte oscura.

C#: La Terra Promessa

Con C# tutto cambiò. Il progetto più ambizioso fu un gestionale completo per la produzione industriale. Finalmente un linguaggio che univa la potenza dell’OOP con la produttività che avevo conosciuto nel COBOL.

public class OrdineProduzione : ISchedulable

{

    public DateTime DataConsegna { get; set; }

    public List<FaseLavorazione> Fasi { get; set; }

    public async Task<bool> PianificaProduzione()

    {

        var risorse = await _resourceManager.GetDisponibili();

        var scheduler = new ProduzionePlanner(risorse);

        return scheduler.Ottimizza(this);

    }

}

Il Cerchio si Chiude: R&D nel CAD/CAM

Quando assunsi la direzione del reparto R&D nel settore CAD/CAM, fu come un ritorno alle origini con nuova consapevolezza. C per i driver, C++ per gli algoritmi geometrici, C# per l’interfaccia. Ogni linguaggio al suo posto, ogni strumento per il suo scopo.

// Kernel geometrico in C – velocità pura

double calculate_bezier_point(double t, double control_points) {

    double u = 1.0 – t;

    return uuucontrol_points[0] +

           3uutcontrol_points[1] +

           3uttcontrol_points[2] +

           ttt*control_points[3];

}

Cloud e Low-Code: Le Promesse Parzialmente Mantenute

Il cloud computing è diventato una pietra angolare dell’infrastruttura IT moderna, trasformando la delivery dei servizi attraverso l’accesso on-demand alle risorse computazionali.

Il passaggio al cloud è stato meno traumatico del previsto – forse perché dopo RPG su S36, tutto sembra semplice. Azure, AWS, containerizzazione, microservizi: concetti nuovi ma pattern familiari.

Il low-code? Il CEO di GitHub ha menzionato che il futuro del coding è non codificare affatto. Tante promesse, qualche delusione, molti progetti portati a termine. Power Platform, Logic Apps, Flow – strumenti potenti per problemi specifici, ma ancora lontani dal sostituire la programmazione “vera”.


Implicazioni Pratiche: Lezioni dal Campo di Battaglia

La Persistenza del Legacy

Il sistema per l’allevatore? Parti di quel codice RM/COBOL sono migrate attraverso tre generazioni di sistemi e probabilmente girano ancora oggi, tradotte e ritradotte ma concettualmente identiche. Studi recenti mostrano che la modernizzazione AI-driven del codice COBOL legacy in Java può raggiungere il 93% di accuratezza, con una riduzione della complessità del 35%.

L’Importanza dell’Hardware nell’Esperienza

Quei monitor a fosfori verdi non erano solo nostalgia. L’interazione fisica con la macchina – il ronzio del MicroVAX, il calore del CRT, persino il mal di testa – creava un legame viscerale con il codice che oggi, con i nostri schermi 4K e IDE intelligenti, abbiamo perso.

Ogni Linguaggio Lascia il Segno

  • COBOL mi ha insegnato la disciplina e la struttura
  • RPG mi ha insegnato cosa NON fare in un linguaggio
  • C++ mi ha insegnato il rigore e la gestione delle risorse
  • C# mi ha insegnato l’equilibrio tra potenza e produttività
  • Il Cloud mi ha insegnato a pensare in scala

Conclusioni e Riflessioni: I Monitor Verdi nella Memoria

A volte chiudo gli occhi e rivedo ancora quei caratteri verdi fosforescenti del MicroVAX. Era un’epoca in cui programmare significava combattere con la macchina, domarla, comprenderla fino al livello più basso. Oggi scriviamo codice che genera codice che orchestra servizi che non sappiamo nemmeno dove fisicamente risiedano.

La sistematica review della ricerca pubblicata tra 2015 e 2024 sintetizza risultati su performance, scalabilità, sicurezza e integrazione con i principali cloud provider, mostrando un’evoluzione continua che non accenna a fermarsi.

Eppure, i problemi fondamentali rimangono gli stessi: come rappresentare la complessità del mondo reale in strutture che una macchina possa processare? Come bilanciare performance e manutenibilità? Come garantire che il codice sopravviva ai suoi creatori?

La vera lezione di questi trent’anni non è nel progresso tecnologico, ma nella costante umana: ogni generazione di programmatori reinventa la ruota, convinta di aver trovato la soluzione definitiva. E forse è giusto così. Perché è in questa continua reinvenzione che troviamo l’innovazione.

Il prossimo articolo esplorerà proprio una di queste “reinvenzioni”: la promessa del low-code di democratizzare la programmazione. Spoiler: non è andata esattamente come previsto.


Riferimenti

  1. Armbrust, M., et al. (2010). “A View of Cloud Computing”. Communications of the ACM.
  2. Chowdhary, K.R. (2020). “On the Evolution of Programming Languages”. arXiv preprint arXiv:2007.02699.
  3. Bandarupalli, G. (2025). “Code Reborn: AI-Driven Legacy Systems Modernization from COBOL to Java”. arXiv:2504.11335.
  4. Damodharan, S.V. (2025). “Exploring the Evolution and Impact of Cloud Computing Technologies on Modern IT Infrastructure”. ResearchGate Publications.
  5. Harvard D³ Institute (2024). “Generative AI and the Nature of Work”. Digital Data Design Institute at Harvard.
  6. IJCST (2024). “Evolution of Cloud Computing: Trends, Issues, and Future Directions: A Systematic Literature Review”. Volume 12, Issue 3.
  7. Jahagirdar, A. (2025). “Evolution of Programming Languages: From Procedural to Object-Oriented Paradigms”. International Journal of Science and Research, Volume 14, Issue 1.
  8. Khan, M.A., et al. (2025). “A Comparative Study of Object-Oriented, Procedural, and Functional Programming Paradigms in Microservice Architecture”. VFAST Transactions on Software Engineering.
  9. Melo, I., Polónia, D., Teixeira, L. (2025). “Human–AI Collaboration in the Modernization of COBOL-Based Legacy Systems”. Computers, 14(7), 244.
  10. Sufi, F. (2023). “Algorithms in Low-Code-No-Code for Research Applications: A Practical Review”. Algorithms, 16(2), 108.

[Il prossimo articolo della serie: “La Promessa del Low-Code: Quando Pensavamo che Tutti Avrebbero Programmato” – in uscita la prossima settimana su Argos New Dreams]



Scopri di più da Argo's New Dreams

Abbonati per ricevere gli ultimi articoli inviati alla tua e-mail.

Posted in

Rispondi

Scopri di più da Argo's New Dreams

Abbonati ora per continuare a leggere e avere accesso all'archivio completo.

Continua a leggere

Scopri di più da Argo's New Dreams

Abbonati ora per continuare a leggere e avere accesso all'archivio completo.

Continua a leggere