Pellegrino Principe lavora come Computer Scientist e Software Engineer presso il VII Reparto Innovazione e Tecnologia del Comando Generale della Guardia di Finanza di Roma. Ha pubblicato Programmare in Java, edito da Apogeo nel 2024. Per questo e per tanto altro valeva la pena invitarlo a rispondere ad alcune domande sul suo lavoro, quindi buona lettura a tutti!
Ciao Pellegrino, ci racconti i tuoi attuali focus lavorativi?
Ciao Francesco, mi occupo principalmente di sviluppo software, nello specifico della progettazione e realizzazione di applicazioni web nell’ambito della pubblica amministrazione.
Sviluppo però anche software più “tradizionali”, diciamo di tipo desktop, che coprono particolari esigenze applicative e che richiedono perciò un dialogo più a basso livello con le risorse hardware e con il sistema operativo target (Windows, GNU/Linux, ecc.)
Come hai strutturato il tuo “Programmare in Java” e a chi si rivolge?
Il mio libro è strutturato in modo molto tradizionale e preciso, suddiviso cioè in macro aree che partono dall’illustrazione dei concetti e costrutti fondamentali di Java, quali variabili, array, strutture di controllo, ecc., e terminano con la disamina dei tipi e delle librerie essenziali del linguaggio. Nel mezzo, chiaramente, ampio spazio è dato alle aree della programmazione basata e orientata agli oggetti,
così come alla programmazione generica e funzionale. Sono inoltre trattati argomenti più specfici ed avanzati come le annotazioni, i package e i moduli.
Infine tutto il libro è pieno zeppo di listati e snippet di codice con commenti ulteriori da studiare e approfondire.
Direi che non manca proprio nulla, d’altronde il libro si attesta sulle 832 pagine!
Per quanto riguarda il lettore “tipo” diciamo che mi rivolgo a tutti coloro che desiderano imparare un linguaggio di programmazione in modo serio e con pazienza; che non si spaventano di leggere un tomo scritto con un modo espositivo rigoroso, laddove necessario piuttosto formale, e con molta attenzione al corretto uso della terminologia propria di Java.
Insomma, il mio libro non è un classico libro del tipo “Impariamo Java in 24 ore” oppure “Java for Dummies”…
Quali sono i campi di applicazione pratici della programmazione Java? Insomma, cosa ci si fa?
Java è uno dei linguaggi di programmazione più versatili, flessibili e utilizzati al mondo e con applicazioni pratiche nei più disparati settori: è usato per sviluppare applicazioni web e mobile (si pensi solo all’ecosistema Android) ma anche software di livello enterprise e gestionali così come applicazioni finanziarie e bancarie. L’elenco potrebbe continuare citando videogiochi, IA, cloud computing ecc.
Nella sostanza con Java si può fare davvero tutto, a 360°.
Quali sono le disattenzioni più frequenti per chi si approccia allo studio della programmazione Java?
Spesso le disattenzioni più frequenti provengono dal fatto di non avere studiato Java con il rigore giusto,
soprattutto la sua sintassi di base, e questo comporta spesso la scrittura di software pieno di bug oppure di errori logici difficili da individuare.
Alcuni esempi tipici di queste disattenzioni includono:
- l’uso errato dell’operatore == invece del metodo equals(), e viceversa;
- la mancata inizializzazione di una variabile locale prima dell’uso;
- il tentativo di utilizzare metodi di istanza all’interno di metodi statici;
- la mancanza di un controllo su possibili valori null nelle variabili;
- l’accesso a un indice di un array o di una lista al di fuori dei limiti consentiti.
Ci si approccia inoltre alla programmazione orientata agli oggetti con molta superficialità avendo studiato solo la programmazione basatasugli oggetti, non comprendendo a fondo il significato di ereditarietà e polimorfismo e questo porta a progettare gerarchie di classi in modo errato o confusionario.
Su questo punto, paradossalmente, hanno più difficoltà di utilizzo di Java i programmatori che provengono dal un linguaggio “senza” classi, come per esempio il C, nel quale la programmazione si concentra prima sulle funzioni e poi sui dati che esse manipolano.
Direi, dunque, che a prescindere dalla disattenzione commessa, essa è sempre frutto di uno studio superficiale e scarsamente attento del linguaggio: mi spiace sottolineare ancora questo punto, ma, per esperienza maturata anche facendo il formatore di persone che già conoscevano Java o altro linguaggio di programmazione, gli errori commessi o i dubbi manifestati erano sempre frutto dell’approccio allo studio adottato; per l’appunto, non consono a un linguaggio mainstream come è Java.
I programmatori devono preoccuparsi dello sviluppo delle tecnologie Ai o esserne felici?
Questa è una domanda molto interessante e al tempo stesso complessa, fonte di accesi dibattiti nella comunità scientifica e tecnologica più in generale. Proviamo comunque a dare qualche risposta.
Sicuramente la preocupazione maggiore è legata all’automazione del lavoro di programmazione ovvero a quella capacità di un sistema di AI di scrivere codice, correggere bug e persino di generare interi programmi.
Tale automazione, che diventa sempre più efficace, potrebbe portare a una riduzione, anche importante, della domanda di programmatori soprattutto in alcuni settori più generalisti e specialmente per compiti ripetitivi o meno complessi. Tuttavia, quest’automazione potrebbe anche avere qualche risvolto positivo legato a un possibile aumento della produttività consentendo di evitare task noiosi e ripetitivi e permettendo così ai programmatori di concentrarsi su problemi più complessi e creativi.
In ogni caso è bene sempre rammentare che, allo stato attuale, anche se l’AI può scrivere codice, serve comunque un programmatore esperto per definire i requisiti, interpretare i risultati e gestire il software: la capacità di scrivere codice in modo chiaro e ottimizzato sarà ancora fondamentale.
Le AI non possono sostituire la creatività, il pensiero critico e la capacità di innovare propri di un essere umano. In conclusione, possiamo cercare un equilibrio tra le due posizioni estreme sull’AI: da un lato chi la considera un semplice “generatore stocastico di stupidaggini”, dall’altro chi la vede come una futura super-intelligenza, la “singolarità” in grado di rivoluzionare tutto.
Adottare una posizione intermedia significa né preoccuparsi eccessivamente, né entusiasmarsi in modo ingenuo. Piuttosto, possiamo affrontare l’AI con una sana curiosità e un giusto spirito critico, valutando caso per caso se e in che modo essa apporta reali benefici al nostro lavoro quotidiano.
In ultimo, puoi lasciarci qualche link per restare aggiornati sull’argomento?
Certo, te ne elenco qualcuno:
- sito ufficiale di Oracle per la documentazione di Java: https://docs.oracle.com/en/java/
- tutorial ufficiali di Oracle per imparare Java passo dopo passo: https://docs.oracle.com/javase/tutorial/
- per trovare soluzioni a problemi di programmazione in Java: https://stackoverflow.com/questions/tagged/java
- community per discutere di Java, novità e best practices: https://www.reddit.com/r/java/
- forum dedicato a Java, con sezioni per principianti ed esperti: https://coderanch.com/f/33/java