Perimetro della materia
La materia "Linguaggi di programmazione" del concorso INPS 499 posti comprende 485 quesiti a risposta multipla, di taglio nozionistico: non si scrive codice, ma si riconoscono sintassi, parole chiave e concetti. Compaiono sia tecnologie attuali (Python, Java) sia versioni datate (Visual Basic 6.0, J2ME, WAP/WML), con peso medio-alto rispetto alle altre materie del bando.
Mappa degli argomenti
| Area | Temi ricorrenti | Nota |
|---|---|---|
| Fondamenti e paradigmi | Compilato vs interpretato, tipologia di linguaggi (procedurale, OO, script), ciclo di vita di un programma | Domande di confronto tra concetti |
| Java | Struttura di una classe, keyword extends, pacchetti java.swing, compilazione ed esecuzione di .class | Include anche riferimenti a J2ME |
| Python | Dichiarazione variabili, tipi built-in (list, dict, tuple), funzioni round(), import *, slicing | Versione 3.x è quella di riferimento |
| Visual Basic 6.0 / VBA | IDE, Watch Window, proprietà TabIndex, eventi di focus, registrazione COM, modalità Stand-alone vs Network | Domande su ambienti legacy |
| Web e markup (HTML/XML/CGI/WAP) | Tag HTML base, struttura XML, linguaggio WML, CGI methods, editor WYSIWYG, differenza tra HTML e CSS | Spesso accoppiato a quesiti su sicurezza e CAD |
Fondamenti e paradigmi
- Distinguere un linguaggio compilato (es. Java, C) da uno interpretato (es. Python, VBScript) e riconoscere le fasi di compilazione, linking e runtime.
- Conoscere i principali paradigmi di programmazione: procedurale, orientato agli oggetti, funzionale; capire quale paradigma predomina in Java e Python.
- Sapere che il ciclo di vita di un programma comprende scrittura, compilazione/interpreta, linking (se necessario), esecuzione e gestione degli errori.
Java
- La dichiarazione di classe utilizza la keyword class e l'ereditarietà si ottiene con extends; implements è riservato alle interfacce.
- I componenti grafici Swing risiedono nel package javax.swing; ad esempio JButton, JFrame.
- Per eseguire un file compilato occorre il comando java NomeClasse dopo aver creato il .class con javac.
- J2ME (Java 2 Micro Edition) è la piattaforma destinata a dispositivi mobili; le API più note sono CLDC e MIDP.
- Il modello dei Windows Services è gestito dal Service Control Manager; l'equivalente concettuale in Java si realizza con java.lang.Runnable.
Python
- Una variabile si dichiara semplicemente assegnandole un valore: numero = 10; il tipo è determinato a runtime.
- Le liste si creano con mylist = [1, 2, 3]; il metodo pop() rimuove e restituisce l'ultimo elemento.
- Per arrotondare un numero a intero più vicino si usa round(valore); per arrotondare verso il basso o l'alto esistono math.floor() e math.ceil().
- La formattazione di stringhe in Python 3 avviene con f-string (f"{var}") o con str.format().
- L'importazione di tutti i nomi di un modulo si effettua con from modulo import *; è sconsigliata perché può creare conflitti di namespace.
Visual Basic 6.0 / VBA
- La Watch Window permette di monitorare il valore di variabili durante il debug; la voce falsa è spesso quella che afferma che mostra anche il contenuto di oggetti complessi senza espandere le proprietà.
- Il focus degli oggetti è controllato dalla proprietà TabIndex; l'ordine di tabulazione segue il valore numerico crescente.
- La registrazione di un componente COM avviene con regsvr32.exe al momento della compilazione o dell'installazione dell'eseguibile.
- Le applicazioni Stand-alone in VB6 usano la libreria ADO per connettersi a SQL Server; la modalità Network richiede una configurazione dedicata.
- Il ciclo di vita di un controllo passa per gli eventi Load e Terminate; confondere Unload con Terminate è un errore frequente.
Web e markup (HTML/XML/CGI/WAP)
- HTML definisce la struttura di una pagina; il linguaggio di stile è CSS. Il contenuto dinamico spesso si realizza con JavaScript.
- XML è un linguaggio di markup flessibile; la nidificazione degli elementi deve rispettare la correttezza ben formata e, se presente, la validazione DTD o XSD.
- WAP (Wireless Application Protocol) utilizza il linguaggio WML; è ormai obsoleto ma compare nei quiz per verificare la conoscenza storica.
- Il Common Gateway Interface (CGI) supporta i metodi HTTP GET e POST; la risposta è un flusso di testo (HTML o altro).
Collegamenti con le altre materie
Le conoscenze sui linguaggi di programmazione si intrecciano con:
- Database relazionali: la normalizzazione, i concetti di tablespace, undo/rollback e checkpoint sono spesso oggetto di domande che richiedono di associare il linguaggio (SQL in Python o Java) al funzionamento interno di Oracle.
- Sistemi operativi Linux/Windows: la compilazione di file .class o l'esecuzione di script Python avviene tipicamente da riga di comando; su Linux il kernel interagisce con l'hardware tramite driver e moduli.
- Sicurezza informatica, GDPR e Codice dell'amministrazione digitale: la generazione di firme digitali può avvenire tramite librerie Java (java.security) o Python (hashlib); il formato XML resta il mezzo principale per lo scambio di documenti elettronici nella PA (es. FatturaPA), con validazione e trasformazione XSLT.
Errori tipici e trappole d'esame
- Confondere extends (ereditarietà di classe) con implements (implementazione di interfaccia) in Java.
- Attribuire a Python la sintassi int x = 5; tipica di Java/C; in Python non esistono dichiarazioni di tipo.
- Ritenere che Watch Window mostri i valori di tutti gli oggetti senza espandere; in realtà è necessario aggiungere espressioni specifiche.
- Assumere che tutti i file .class siano eseguibili direttamente; occorre il metodo java NomeClasse e la presenza del metodo main.
- Scambiare le funzioni floor() e ceil() in Python; una è per arrotondare verso il basso, l'altra verso l'alto.
Checklist di ripasso
- Identifica se un linguaggio è compilato o interpretato e le relative fasi di esecuzione.
- Ricorda le keyword di ereditarietà in Java: extends per classi, implements per interfacce.
- Conosci la sintassi di base per dichiarare variabili, liste e dizionari in Python.
- Sapere come avviare un file .class da riga di comando e quali opzioni di compilazione usa javac.
- Riconosci le funzioni di arrotondamento in Python: round(), math.floor(), math.ceil().
- Memorizza i package principali di Swing (javax.swing) e le classi più usate.
- Capisci la differenza tra GET e POST nei CGI e quando si usano.