Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Programmazione EXTRA 2026, Panieri di Programmazione Avanzata

FUORI PANIERE ESAME Programmazione L-31

Tipologia: Panieri

2025/2026

In vendita dal 23/02/2026

LauShane
LauShane 🇮🇹

4.7

(78)

584 documenti

1 / 22

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Programmazione (INF/01)
Piano Di Studi - Indirizzo Digital Transformation & Cybersecurity
Laurea in Informatica per le Aziende Digitali L-31
Definizioni ESAME 2026 + EXTRA PANIERE
COS’È UN PROGRAMMA?!
UNA SEQUENZA FINITA DI ISTRUZIONI ESEGUIBILI CHE TRASFORMANO DATI IN
RISULTATI SECONDO UN ALGORITMO."
COS’È UN ALGORITMO?!
UNA PROCEDURA FINITA, NON AMBIGUA E DETERMINISTICA CHE RISOLVE UN
PROBLEMA."
DIFFERENZA TRA ALGORITMO E PROGRAMMA.!
L’ALGORITMO È ASTRATTO, IL PROGRAMMA È LA SUA IMPLEMENTAZIONE IN UN
LINGUAGGIO."
COS’È UN LINGUAGGIO DI PROGRAMMAZIONE?!
UN LINGUAGGIO FORMALE PER ESPRIMERE ALGORITMI IN MODO ESEGUIBILE DA
UNA MACCHINA."
DIFFERENZA TRA LINGUAGGIO COMPILATO E INTERPRETATO.!
IL COMPILATO VIENE TRADOTTO PRIMA DELL’ESECUZIONE, L’INTERPRETATO
DURANTE L’ESECUZIONE."
COS’È UNA VARIABILE?!
UN’AREA DI MEMORIA IDENTIFICATA DA UN NOME E ASSOCIATA A UN TIPO."
COS’È UN TIPO DI DATO?!
L’INSIEME DEI VALORI AMMISSIBILI E DELLE OPERAZIONI DEFINITE SU DI ESSI."
DIFFERENZA TRA TIPI PRIMITIVI E TIPI COMPOSTI.!
I PRIMITIVI RAPPRESENTANO VALORI ELEMENTARI, I COMPOSTI AGGREGANO PIÙ
VALORI."
COS’È L’ASSEGNAZIONE?!
OPERAZIONE CHE MEMORIZZA UN VALORE IN UNA VARIABILE."
DIFFERENZA TRA ASSEGNAZIONE E UGUAGLIANZA.!
L’ASSEGNAZIONE MODIFICA LO STATO, L’UGUAGLIANZA CONFRONTA VALORI."
COS’È UN’ESPRESSIONE?!
COMBINAZIONE DI VALORI, VARIABILI E OPERATORI CHE PRODUCE UN RISULTATO."
COS’È UN’ISTRUZIONE?!
UNITÀ ELEMENTARE DI ESECUZIONE CHE MODIFICA LO STATO DEL PROGRAMMA."
COS’È IL FLUSSO DI CONTROLLO?!
L’ORDINE CON CUI LE ISTRUZIONI VENGONO ESEGUITE."
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16

Anteprima parziale del testo

Scarica Programmazione EXTRA 2026 e più Panieri in PDF di Programmazione Avanzata solo su Docsity!

Programmazione (INF/01)

Piano Di Studi - Indirizzo Digital Transformation & Cybersecurity

Laurea in Informatica per le Aziende Digitali L-

Definizioni ESAME 2026 + EXTRA PANIERE

COS’È UN PROGRAMMA?

UNA SEQUENZA FINITA DI ISTRUZIONI ESEGUIBILI CHE TRASFORMANO DATI IN

RISULTATI SECONDO UN ALGORITMO.

COS’È UN ALGORITMO?

UNA PROCEDURA FINITA, NON AMBIGUA E DETERMINISTICA CHE RISOLVE UN

PROBLEMA.

DIFFERENZA TRA ALGORITMO E PROGRAMMA.

L’ALGORITMO È ASTRATTO, IL PROGRAMMA È LA SUA IMPLEMENTAZIONE IN UN

LINGUAGGIO.

COS’È UN LINGUAGGIO DI PROGRAMMAZIONE?

UN LINGUAGGIO FORMALE PER ESPRIMERE ALGORITMI IN MODO ESEGUIBILE DA

UNA MACCHINA.

DIFFERENZA TRA LINGUAGGIO COMPILATO E INTERPRETATO.

IL COMPILATO VIENE TRADOTTO PRIMA DELL’ESECUZIONE, L’INTERPRETATO

DURANTE L’ESECUZIONE.

COS’È UNA VARIABILE?

UN’AREA DI MEMORIA IDENTIFICATA DA UN NOME E ASSOCIATA A UN TIPO.

COS’È UN TIPO DI DATO?

L’INSIEME DEI VALORI AMMISSIBILI E DELLE OPERAZIONI DEFINITE SU DI ESSI.

DIFFERENZA TRA TIPI PRIMITIVI E TIPI COMPOSTI.

I PRIMITIVI RAPPRESENTANO VALORI ELEMENTARI, I COMPOSTI AGGREGANO PIÙ

VALORI.

COS’È L’ASSEGNAZIONE?

OPERAZIONE CHE MEMORIZZA UN VALORE IN UNA VARIABILE.

DIFFERENZA TRA ASSEGNAZIONE E UGUAGLIANZA.

L’ASSEGNAZIONE MODIFICA LO STATO, L’UGUAGLIANZA CONFRONTA VALORI.

COS’È UN’ESPRESSIONE?

COMBINAZIONE DI VALORI, VARIABILI E OPERATORI CHE PRODUCE UN RISULTATO.

COS’È UN’ISTRUZIONE?

UNITÀ ELEMENTARE DI ESECUZIONE CHE MODIFICA LO STATO DEL PROGRAMMA.

COS’È IL FLUSSO DI CONTROLLO?

L’ORDINE CON CUI LE ISTRUZIONI VENGONO ESEGUITE.

COS’È UNA STRUTTURA DI SELEZIONE?

COSTRUTTO CHE SCEGLIE TRA ALTERNATIVE IN BASE A UNA CONDIZIONE.

COS’È UNA STRUTTURA ITERATIVA?

COSTRUTTO CHE RIPETE UN BLOCCO DI ISTRUZIONI FINCHÉ UNA CONDIZIONE È

SODDISFATTA.

DIFFERENZA TRA CICLO DETERMINATO E INDETERMINATO.

NEL DETERMINATO IL NUMERO DI ITERAZIONI È NOTO, NELL’INDETERMINATO

DIPENDE DA UNA CONDIZIONE.

COS’È UNA FUNZIONE (O PROCEDURA)?

BLOCCO DI CODICE RIUTILIZZABILE CHE INCAPSULA UN’OPERAZIONE.

DIFFERENZA TRA FUNZIONE E PROCEDURA.

LA FUNZIONE RESTITUISCE UN VALORE, LA PROCEDURA NO.

COS’È UN PARAMETRO FORMALE?

VARIABILE DEFINITA NELLA FUNZIONE PER RICEVERE DATI.

COS’È UN PARAMETRO ATTUALE?

VALORE PASSATO ALLA FUNZIONE AL MOMENTO DELLA CHIAMATA.

PASSAGGIO PER VALORE: SIGNIFICATO.

LA FUNZIONE RICEVE UNA COPIA DEL DATO.

PASSAGGIO PER RIFERIMENTO: SIGNIFICATO.

LA FUNZIONE PUÒ MODIFICARE IL DATO ORIGINALE.

COS’È LO SCOPE DI UNA VARIABILE?

LA PORZIONE DI PROGRAMMA IN CUI LA VARIABILE È VISIBILE.

DIFFERENZA TRA SCOPE LOCALE E GLOBALE.

LOCALE: LIMITATO A UN BLOCCO; GLOBALE: VISIBILE OVUNQUE.

COS’È LO STACK DI CHIAMATA?

STRUTTURA CHE GESTISCE LE CHIAMATE ALLE FUNZIONI E LE VARIABILI LOCALI.

COS’È LA RICORSIONE?

TECNICA IN CUI UNA FUNZIONE CHIAMA SÉ STESSA.

CONDIZIONI PER UNA RICORSIONE CORRETTA.

CASO BASE E PASSO RICORSIVO CHE CONVERGE.

RICORSIONE VS ITERAZIONE.

LA RICORSIONE USA LO STACK, L’ITERAZIONE NO.

COS’È UN ARRAY?

STRUTTURA DATI CHE MEMORIZZA ELEMENTI OMOGENEI IN POSIZIONI CONTIGUE.

ACCESSO A UN ARRAY: COSTO COMPUTAZIONALE.

TEMPO COSTANTE O(1)O(1).

DIFFERENZA TRA CASO MIGLIORE, MEDIO E PEGGIORE.

DIPENDONO DALLA DISTRIBUZIONE DEGLI INPUT.

COS’È LA COMPLESSITÀ SPAZIALE?

QUANTITÀ DI MEMORIA USATA DA UN ALGORITMO.

COS’È UN ERRORE DI RUNTIME?

ERRORE CHE AVVIENE DURANTE L’ESECUZIONE.

COS’È UN ERRORE DI COMPILAZIONE?

ERRORE SINTATTICO O DI TIPO RILEVATO PRIMA DELL’ESECUZIONE.

COS’È UN BUG LOGICO?

ERRORE NEL COMPORTAMENTO DEL PROGRAMMA SENZA CRASH.

COS’È IL DEBUGGING?

PROCESSO DI INDIVIDUAZIONE E CORREZIONE DEI BUG.

COS’È UN TEST?

ESECUZIONE CONTROLLATA PER VERIFICARE IL COMPORTAMENTO DEL CODICE.

DIFFERENZA TRA TEST UNITARIO E TEST DI INTEGRAZIONE.

IL PRIMO TESTA COMPONENTI SINGOLE, IL SECONDO L’INTERAZIONE.

COS’È LA MODULARITÀ?

PROGETTAZIONE DEL SOFTWARE IN COMPONENTI INDIPENDENTI.

COS’È L’ASTRAZIONE?

NASCONDERE I DETTAGLI IMPLEMENTATIVI MOSTRANDO SOLO L’INTERFACCIA.

COS’È L’INCAPSULAMENTO?

PROTEZIONE DEI DATI TRAMITE ACCESSO CONTROLLATO.

COS’È LA PROGRAMMAZIONE STRUTTURATA?

PARADIGMA BASATO SU SEQUENZA, SELEZIONE E ITERAZIONE.

COS’È LA PROGRAMMAZIONE ORIENTATA AGLI OGGETTI (IDEA BASE)?

PARADIGMA CHE ORGANIZZA IL SOFTWARE IN OGGETTI CHE COMBINANO DATI E

COMPORTAMENTI.

COSA DISTINGUE UNA BUONA RISPOSTA ALL’ORALE DI PROGRAMMAZIONE?

USO CORRETTO DEI TERMINI, ESEMPI MINIMI E CHIAREZZA SUI COSTI

COMPUTAZIONALI.

COS’È UNA PRECONDIZIONE?

CONDIZIONE CHE DEVE ESSERE VERA PRIMA DELL’ESECUZIONE DI UNA FUNZIONE.

COS’È UNA POSTCONDIZIONE?

CONDIZIONE CHE DEVE ESSERE VERA DOPO L’ESECUZIONE DELLA FUNZIONE.

COS’È UN INVARIANTE DI CICLO?

PROPRIETÀ CHE RIMANE VERA A OGNI ITERAZIONE DEL CICLO.

PERCHÉ GLI INVARIANTI SONO IMPORTANTI?

SERVONO PER DIMOSTRARE CORRETTEZZA DEGLI ALGORITMI.

COS’È LA CORRETTEZZA DI UN ALGORITMO?

CAPACITÀ DI PRODURRE IL RISULTATO CORRETTO PER OGNI INPUT VALIDO.

DIFFERENZA TRA CORRETTEZZA PARZIALE E TOTALE.

LA TOTALE INCLUDE ANCHE LA TERMINAZIONE.

COS’È LA TERMINAZIONE?

LA GARANZIA CHE L’ALGORITMO FINISCA DOPO UN NUMERO FINITO DI PASSI.

COS’È UN CICLO INFINITO?

CICLO CHE NON SODDISFA MAI LA CONDIZIONE DI USCITA.

COS’È UNA CONDIZIONE BOOLEANA?

ESPRESSIONE CHE VALUTA VERO O FALSO.

SHORT-CIRCUIT EVALUATION: COS’È?

VALUTAZIONE CHE INTERROMPE L’ESPRESSIONE BOOLEANA APPENA IL RISULTATO

È DETERMINATO.

COS’È IL CASTING?

CONVERSIONE ESPLICITA DI UN TIPO IN UN ALTRO.

DIFFERENZA TRA CASTING IMPLICITO ED ESPLICITO.

IL PRIMO È AUTOMATICO, IL SECONDO RICHIESTO DAL PROGRAMMATORE.

COS’È L’OVERFLOW?

SUPERAMENTO DEL LIMITE RAPPRESENTABILE DA UN TIPO NUMERICO.

COS’È L’UNDERFLOW?

PERDITA DI PRECISIONE VERSO LO ZERO.

COS’È LA PRECISIONE NUMERICA?

NUMERO DI CIFRE SIGNIFICATIVE RAPPRESENTABILI.

COS’È L’ARITMETICA IN VIRGOLA MOBILE?

RAPPRESENTAZIONE APPROSSIMATA DEI NUMERI REALI.

PERCHÉ I CONFRONTI TRA FLOATING POINT SONO PROBLEMATICI?

PER ERRORI DI APPROSSIMAZIONE.

COS’È UNA COSTANTE SIMBOLICA?

VALORE IMMUTABILE IDENTIFICATO DA UN NOME.

PERCHÉ USARE COSTANTI INVECE DI VALORI LETTERALI?

MIGLIORA LEGGIBILITÀ E MANUTENZIONE.

COS’È UNA ENUMERAZIONE (ENUM)?

TIPO CON UN INSIEME FINITO DI VALORI SIMBOLICI.

COS’È LA COMPLESSITÀ AMMORTIZZATA?

COSTO MEDIO PER OPERAZIONE SU UNA SEQUENZA.

ESEMPIO CLASSICO DI COMPLESSITÀ AMMORTIZZATA.

INSERIMENTI IN ARRAY DINAMICO.

COS’È UNA TABELLA HASH?

STRUTTURA CHE ASSOCIA CHIAVI A VALORI TRAMITE FUNZIONE HASH.

COLLISIONE HASH: COS’È?

DUE CHIAVI MAPPATE ALLA STESSA POSIZIONE.

TECNICHE DI RISOLUZIONE DELLE COLLISIONI.

CHAINING, INDIRIZZAMENTO APERTO.

COS’È UNA FUNZIONE HASH BUONA?

DISTRIBUISCE UNIFORMEMENTE LE CHIAVI.

COS’È LA MUTABILITÀ?

POSSIBILITÀ DI MODIFICARE LO STATO DI UN OGGETTO.

DIFFERENZA TRA OGGETTI MUTABILI E IMMUTABILI.

I PRIMI CAMBIANO STATO, I SECONDI NO.

PERCHÉ PREFERIRE OGGETTI IMMUTABILI?

RIDUCE BUG E PROBLEMI DI CONCORRENZA.

COS’È LA CONCORRENZA?

ESECUZIONE SOVRAPPOSTA DI PIÙ FLUSSI DI CONTROLLO.

DIFFERENZA TRA CONCORRENZA E PARALLELISMO.

LA CONCORRENZA È LOGICA, IL PARALLELISMO È FISICO.

COS’È UNA RACE CONDITION?

DIPENDENZA DAL TIMING TRA OPERAZIONI CONCORRENTI.

COS’È UNA SEZIONE CRITICA?

PORZIONE DI CODICE CHE ACCEDE A RISORSE CONDIVISE.

COS’È UN LOCK?

MECCANISMO DI MUTUA ESCLUSIONE.

DEADLOCK: COS’È?

BLOCCO RECIPROCO TRA PROCESSI CHE ATTENDONO RISORSE.

STARVATION: COS’È?

PROCESSO CHE NON OTTIENE MAI RISORSE.

COS’È UN PARADIGMA DI PROGRAMMAZIONE?

STILE CONCETTUALE DI COSTRUZIONE DEL SOFTWARE.

ESEMPI DI PARADIGMI.

PROCEDURALE, ORIENTATO AGLI OGGETTI, FUNZIONALE.

COS’È UN’ASTRAZIONE PROCEDURALE?

SEPARARE IL COSA FA UNA FUNZIONE DAL COME LO FA.

COS’È UN’ASTRAZIONE DEI DATI?

DEFINIRE UN TIPO TRAMITE OPERAZIONI, NASCONDENDO LA RAPPRESENTAZIONE.

DIFFERENZA TRA INTERFACCIA E IMPLEMENTAZIONE.

L’INTERFACCIA ESPONE I SERVIZI, L’IMPLEMENTAZIONE LI REALIZZA.

COS’È UN ADT (ABSTRACT DATA TYPE)?

TIPO DI DATO DEFINITO DAL COMPORTAMENTO, NON DALLA STRUTTURA INTERNA.

PERCHÉ GLI ADT SONO IMPORTANTI?

PERMETTONO MODIFICHE SENZA IMPATTI SUL CODICE CLIENTE.

COS’È IL COUPLING?

GRADO DI DIPENDENZA TRA MODULI.

COS’È LA COESIONE?

QUANTO UN MODULO È FOCALIZZATO SU UN SINGOLO COMPITO.

QUAL È L’OBIETTIVO PROGETTUALE CORRETTO?

BASSO COUPLING E ALTA COESIONE.

COS’È UNA DIPENDENZA CICLICA?

DIPENDENZA CIRCOLARE TRA MODULI.

PERCHÉ LE DIPENDENZE CICLICHE SONO DANNOSE?

COMPLICANO MANUTENZIONE E TEST.

COS’È UNA VARIABILE SENTINELLA?

VALORE SPECIALE CHE SEGNALA LA FINE DI UN INPUT O CICLO.

COS’È UNA VARIABILE ACCUMULATORE?

VARIABILE CHE AGGREGA RISULTATI PROGRESSIVAMENTE.

COS’È UNA VARIABILE CONTATORE?

VARIABILE CHE CONTA ITERAZIONI O EVENTI.

COS’È UN FLAG?

VARIABILE BOOLEANA CHE SEGNALA UNO STATO.

COS’È UN LOOP ANNIDATO?

CICLO CONTENUTO ALL’INTERNO DI UN ALTRO CICLO.

COSTO COMPUTAZIONALE DI DUE CICLI ANNIDATI SU N.

TIPICAMENTE O(N2) O(N2).

VANTAGGIO DELLA TAIL RECURSION.

PUÒ ESSERE OTTIMIZZATA COME ITERAZIONE.

COS’È UN SIDE EFFECT?

MODIFICA DELLO STATO ESTERNO A UNA FUNZIONE.

PERCHÉ LIMITARE I SIDE EFFECT?

MIGLIORA TESTABILITÀ E PREVEDIBILITÀ.

COS’È UNA FUNZIONE PURA?

FUNZIONE SENZA SIDE EFFECT E CON OUTPUT DETERMINISTICO.

COS’È L’IDEMPOTENZA?

OPERAZIONE CHE RIPETUTA NON CAMBIA IL RISULTATO.

ESEMPIO DI OPERAZIONE IDEMPOTENTE.

ASSEGNARE LO STESSO VALORE A UNA VARIABILE.

COS’È UN INPUT VALIDO?

INPUT CHE SODDISFA LE PRECONDIZIONI.

COS’È LA VALIDAZIONE DELL’INPUT?

CONTROLLO DELLA CORRETTEZZA DEI DATI IN INGRESSO.

COS’È LA PROGRAMMAZIONE DIFENSIVA?

SCRIVERE CODICE CHE ANTICIPA ERRORI.

COS’È UN ASSERTION?

CONTROLLO INTERNO DI UNA CONDIZIONE CHE DEVE VALERE.

DIFFERENZA TRA ASSERTION ED ECCEZIONE.

ASSERTION: ERRORE DEL PROGRAMMATORE; ECCEZIONE: ERRORE DI

ESECUZIONE.

COS’È UNA PIPELINE DI DATI?

SEQUENZA DI TRASFORMAZIONI SU DATI.

COS’È UNA CALLBACK?

FUNZIONE PASSATA COME ARGOMENTO A UN’ALTRA FUNZIONE.

COS’È UN EVENTO?

SEGNALE CHE NOTIFICA UN CAMBIAMENTO O AZIONE.

COS’È LA PROGRAMMAZIONE EVENT-DRIVEN?

PARADIGMA BASATO SULLA GESTIONE DI EVENTI.

COS’È UNA MACCHINA A STATI FINITI?

MODELLO CON STATI, TRANSIZIONI E INPUT.

PERCHÉ LE FSM SONO UTILI IN PROGRAMMAZIONE?

PER MODELLARE COMPORTAMENTI COMPLESSI E CONTROLLATI.

COS’È UNA RAPPRESENTAZIONE ITERATIVA DI UNA FSM?

USO DI CICLI E SWITCH SUGLI STATI.

COS’È UNA RAPPRESENTAZIONE TABELLARE?

USO DI TABELLE PER DESCRIVERE TRANSIZIONI.

COS’È LA SERIALIZZAZIONE SICURA?

SERIALIZZAZIONE CHE EVITA ESECUZIONE DI CODICE MALEVOLO.

COS’È UN MEMORY LEAK?

MEMORIA ALLOCATA MA MAI LIBERATA.

PERCHÉ I GARBAGE COLLECTOR NON ELIMINANO TUTTI I LEAK?

PERCHÉ I RIFERIMENTI RESTANO RAGGIUNGIBILI.

COS’È UNA WEAK REFERENCE?

RIFERIMENTO CHE NON IMPEDISCE LA DEALLOCAZIONE.

COS’È IL PROFILING?

ANALISI DELLE PRESTAZIONI DI UN PROGRAMMA.

COS’È LA SEMANTICA DI UN LINGUAGGIO DI PROGRAMMAZIONE?

IL SIGNIFICATO FORMALE DELLE ISTRUZIONI E DELLE ESPRESSIONI.

DIFFERENZA TRA SEMANTICA OPERAZIONALE E DENOTAZIONALE.

LA PRIMA DESCRIVE L’ESECUZIONE PASSO–PASSO, LA SECONDA IL SIGNIFICATO

MATEMATICO.

COS’È LA SINTASSI DI UN LINGUAGGIO?

L’INSIEME DELLE REGOLE FORMALI CHE DEFINISCONO PROGRAMMI BEN FORMATI.

ERRORE SINTATTICO VS SEMANTICO.

IL SINTATTICO VIOLA LA GRAMMATICA, IL SEMANTICO IL SIGNIFICATO.

COS’È UNA GRAMMATICA FORMALE?

SISTEMA DI REGOLE CHE GENERA LE STRINGHE VALIDE DI UN LINGUAGGIO.

COS’È UNA GRAMMATICA LIBERA DAL CONTESTO?

GRAMMATICA IN CUI OGNI PRODUZIONE HA UN SOLO SIMBOLO A SINISTRA.

PERCHÉ LE GRAMMATICHE LIBERE DAL CONTESTO SONO IMPORTANTI?

DESCRIVONO LA STRUTTURA DEI LINGUAGGI DI PROGRAMMAZIONE.

COS’È IL PARSING?

ANALISI SINTATTICA DI UN PROGRAMMA SECONDO UNA GRAMMATICA.

COS’È UN ALBERO DI SINTASSI ASTRATTA (AST)?

RAPPRESENTAZIONE GERARCHICA DELLA STRUTTURA DEL PROGRAMMA.

DIFFERENZA TRA AST E ALBERO SINTATTICO CONCRETO.

L’AST ELIMINA DETTAGLI SINTATTICI NON RILEVANTI.

COS’È IL CURRYING?

TRASFORMAZIONE DI UNA FUNZIONE MULTI-ARGOMENTO IN FUNZIONI UNARIE.

COS’È LA LAZY EVALUATION?

VALUTAZIONE DELLE ESPRESSIONI SOLO QUANDO NECESSARIE.

VANTAGGI DELLA LAZY EVALUATION.

EFFICIENZA E GESTIONE DI STRUTTURE INFINITE.

COS’È UNA STRUTTURA DATI PERSISTENTE?

STRUTTURA IMMUTABILE CHE CONSERVA VERSIONI PRECEDENTI.

COS’È LA PROGRAMMAZIONE DICHIARATIVA?

SI DESCRIVE COSA FARE, NON COME.

DIFFERENZA TRA DICHIARATIVO E IMPERATIVO.

IMPERATIVO CONTROLLA IL FLUSSO, DICHIARATIVO IL RISULTATO.

COS’È UNA DSL?

LINGUAGGIO SPECIFICO PER UN DOMINIO RISTRETTO.

COS’È UNA MACRO?

COSTRUTTO CHE GENERA CODICE A TEMPO DI COMPILAZIONE.

RISCHIO PRINCIPALE DELLE MACRO.

PERDITA DI CHIAREZZA E SICUREZZA SEMANTICA.

COS’È UNA SANDBOX?

AMBIENTE ISOLATO PER ESEGUIRE CODICE IN SICUREZZA.

COS’È L’INPUT NON FIDATO?

DATI PROVENIENTI DA FONTI ESTERNE NON CONTROLLATE.

COS’È UNA VULNERABILITÀ SOFTWARE?

DEBOLEZZA SFRUTTABILE DA INPUT MALEVOLO.

ESEMPIO CLASSICO DI VULNERABILITÀ.

BUFFER OVERFLOW.

PERCHÉ IL BUFFER OVERFLOW È PERICOLOSO?

PUÒ PERMETTERE ESECUZIONE DI CODICE ARBITRARIO.

COS’È UNA API SICURA?

API CHE VALIDA INPUT E GESTISCE ERRORI CORRETTAMENTE.

COS’È LA BACKWARD COMPATIBILITY?

COMPATIBILITÀ CON VERSIONI PRECEDENTI.

PERCHÉ ROMPERE LA BACKWARD COMPATIBILITY È GRAVE?

INTRODUCE ERRORI NEI SISTEMI ESISTENTI.

COS’È UNA DIPENDENZA TRANSITORIA?

DIPENDENZA INTRODOTTA INDIRETTAMENTE.

COS’È IL DEPENDENCY HELL?

CONFLITTI TRA VERSIONI DI DIPENDENZE.

COS’È IL REFACTORING?

RIORGANIZZAZIONE DEL CODICE SENZA CAMBIARNE IL COMPORTAMENTO.

PERCHÉ IL REFACTORING È PARTE DELLA PROGRAMMAZIONE?

MANTIENE IL CODICE LEGGIBILE E SOSTENIBILE.

COS’È UNA CODE SMELL?

INDICATORE DI CATTIVA PROGETTAZIONE.

ESEMPIO DI CODE SMELL.

FUNZIONE TROPPO LUNGA.

COS’È IL PRINCIPIO KISS?

KEEP IT SIMPLE, STUPID: EVITARE COMPLESSITÀ INUTILI.

COS’È IL PRINCIPIO DRY?

DON’T REPEAT YOURSELF: EVITARE DUPLICAZIONI.

COS’È IL PRINCIPIO YAGNI?

YOU AREN’T GONNA NEED IT: NON ANTICIPARE FUNZIONALITÀ.

COS’È IL MODELLO DI ESECUZIONE DI UN PROGRAMMA?

LA DESCRIZIONE FORMALE DI COME ISTRUZIONI E DATI EVOLVONO DURANTE

L’ESECUZIONE.

COS’È LO STATO DI UN PROGRAMMA?

L’INSIEME DEI VALORI CORRENTI DI TUTTE LE VARIABILI E RISORSE.

COS’È UNA TRANSIZIONE DI STATO?

IL PASSAGGIO DA UNO STATO ALL’ALTRO CAUSATO DA UN’ISTRUZIONE.

COS’È L’EFFETTO COLLATERALE DI UN’ISTRUZIONE?

QUALSIASI MODIFICA ALLO STATO OLTRE AL VALORE DI RITORNO.

COS’È LA DETERMINAZIONE DEL FLUSSO DI CONTROLLO?

LA SCELTA DEL PROSSIMO PUNTO DI ESECUZIONE.

COS’È UN LINGUAGGIO IMPERATIVO?

LINGUAGGIO CHE DESCRIVE COME MODIFICARE LO STATO PASSO DOPO PASSO.

COS’È UN LINGUAGGIO DICHIARATIVO?

LINGUAGGIO CHE DESCRIVE IL RISULTATO DESIDERATO SENZA SPECIFICARE IL

FLUSSO.

PERCHÉ I LAMBDA MIGLIORANO IL CODICE?

RIDUZIONE DEL BOILERPLATE E MAGGIORE ESPRESSIVITÀ.

COS’È UNA PIPELINE FUNZIONALE?

COMPOSIZIONE SEQUENZIALE DI TRASFORMAZIONI.

COS’È UNA VALUTAZIONE EAGER?

VALUTAZIONE IMMEDIATA DELLE ESPRESSIONI.

COS’È UNA THUNK?

RAPPRESENTAZIONE RITARDATA DI UN’ESPRESSIONE.

COS’È UNA COROUTINE?

ROUTINE CHE PUÒ SOSPENDERSI E RIPRENDERE.

DIFFERENZA TRA COROUTINE E THREAD.

LE COROUTINE COOPERANO, I THREAD SONO PREEMPTIVE.

COS’È UN THREAD-SAFE CODE?

CODICE CORRETTO ANCHE IN ESECUZIONE CONCORRENTE.

COS’È UN DATA RACE?

ACCESSO CONCORRENTE NON SINCRONIZZATO A DATI CONDIVISI.

COME SI EVITA UNA DATA RACE?

SINCRONIZZAZIONE O IMMUTABILITÀ.

COS’È UN ATOMIC OPERATION?

OPERAZIONE INDIVISIBILE RISPETTO ALLA CONCORRENZA.

COS’È IL MEMORY MODEL?

REGOLE SU VISIBILITÀ E ORDINE DELLE OPERAZIONI IN MEMORIA.

PERCHÉ IL MEMORY MODEL È CRUCIALE?

PER COMPRENDERE COMPORTAMENTI CONCORRENTI CORRETTI.

COS’È UNA BARRIERA DI MEMORIA?

VINCOLO SULL’ORDINE DELLE OPERAZIONI DI MEMORIA.

COS’È UNA STRUTTURA LOCK-FREE?

STRUTTURA CHE GARANTISCE PROGRESSO SENZA LOCK.

COS’È UNA STRUTTURA WAIT-FREE?

STRUTTURA CHE GARANTISCE PROGRESSO PER OGNI THREAD.

COS’È UNA CODA CONCORRENTE?

CODA UTILIZZABILE CORRETTAMENTE DA PIÙ THREAD.

COS’È IL BACKPRESSURE?

CONTROLLO DEL FLUSSO QUANDO IL CONSUMATORE È PIÙ LENTO.

COS’È UN EVENT LOOP?

CICLO CHE GESTISCE EVENTI ASINCRONI.

COS’È LA PROGRAMMAZIONE ASINCRONA?

PROGRAMMAZIONE NON BLOCCANTE BASATA SU EVENTI O FUTURE.

COS’È UNA FUTURE/PROMISE?

RAPPRESENTAZIONE DI UN RISULTATO DISPONIBILE IN FUTURO.

COS’È IL POLLING?

CONTROLLO RIPETUTO DELLO STATO DI UNA RISORSA.

PERCHÉ IL POLLING È INEFFICIENTE?

CONSUMA RISORSE INUTILMENTE.

COS’È UNA CALLBACK HELL?

ANNIDAMENTO ECCESSIVO DI CALLBACK.

COME SI EVITA LA CALLBACK HELL?

PROMESSE, ASYNC/AWAIT, COMPOSIZIONE.

COS’È L’IDEMPOTENZA NEI SISTEMI SOFTWARE?

OPERAZIONI RIPETIBILI SENZA EFFETTI AGGIUNTIVI.

PERCHÉ L’IDEMPOTENZA È CRUCIALE NEI SISTEMI DISTRIBUITI?

PER GESTIRE RETRY SENZA EFFETTI COLLATERALI.

COS’È UN SISTEMA FAULT-TOLERANT?

SISTEMA CHE CONTINUA A FUNZIONARE NONOSTANTE ERRORI.

COS’È UN GRACEFUL DEGRADATION?

RIDUZIONE CONTROLLATA DELLE FUNZIONALITÀ.

COS’È IL FAIL-FAST?

FALLIRE IMMEDIATAMENTE IN PRESENZA DI ERRORI.

QUANDO PREFERIRE FAIL-FAST?

DURANTE SVILUPPO E DEBUG.

COS’È UNA SPECIFICA FORMALE?

DESCRIZIONE MATEMATICA DEL COMPORTAMENTO ATTESO.

PERCHÉ LE SPECIFICHE FORMALI SONO RARE MA POTENTI?

COSTOSE, MA ELIMINANO AMBIGUITÀ.

COS’È UNA PROVA DI CORRETTEZZA?

DIMOSTRAZIONE CHE IL PROGRAMMA SODDISFA LA SPECIFICA.

COS’È IL TESTING PROPERTY-BASED?

TEST BASATI SU PROPRIETÀ GENERALI, NON CASI SINGOLI.

PERCHÉ LE DIPENDENZE HARD-CODED SONO UN PROBLEMA?

RIDUCONO RIUSABILITÀ E TESTABILITÀ.

COS’È L’INJECTION DELLE DIPENDENZE?

FORNIRE LE DIPENDENZE DALL’ESTERNO.

VANTAGGIO PRINCIPALE DELLA DEPENDENCY INJECTION.

DISACCOPPIAMENTO DEI COMPONENTI.

COS’È UN MOCK?

OGGETTO SIMULATO PER TEST.

COS’È UNO STUB?

IMPLEMENTAZIONE MINIMALE USATA NEI TEST.

DIFFERENZA TRA MOCK E STUB.

IL MOCK VERIFICA INTERAZIONI, LO STUB FORNISCE RISPOSTE.

COS’È IL TEST BLACK-BOX?

TEST BASATO SOLO SULL’OUTPUT OSSERVABILE.

COS’È IL TEST WHITE-BOX?

TEST BASATO SULLA STRUTTURA INTERNA DEL CODICE.

COS’È IL CODE COVERAGE?

PERCENTUALE DI CODICE ESEGUITO DAI TEST.

PERCHÉ IL COVERAGE NON BASTA?

COPRE LINEE, NON COMPORTAMENTI CORRETTI.

COS’È UN EDGE CASE?

CASO LIMITE CHE SPESSO CAUSA ERRORI.

ESEMPIO CLASSICO DI EDGE CASE.

INPUT VUOTO O VALORE MASSIMO.

COS’È UNA CONDIZIONE DI USCITA CORRETTA DI UN CICLO?

CONDIZIONE CHE GARANTISCE TERMINAZIONE E CORRETTEZZA.

COS’È UN OFF-BY-ONE ERROR?

ERRORE DI INDICE DI UNA UNITÀ.

PERCHÉ È UNO DEI BUG PIÙ COMUNI?

PER CONFUSIONE TRA LIMITI INCLUSIVI ED ESCLUSIVI.

COS’È UNA SENTENZA DETERMINISTICA?

ISTRUZIONE CHE PRODUCE SEMPRE LO STESSO RISULTATO A PARITÀ DI INPUT.

COS’È UNA FUNZIONE NON DETERMINISTICA?

FUNZIONE CON RISULTATI DIPENDENTI DA FATTORI ESTERNI.

ESEMPI DI NON DETERMINISMO.

THREAD SCHEDULING, INPUT CASUALE.

COS’È LA RIPRODUCIBILITÀ DI UN BUG?

POSSIBILITÀ DI RICREARLO SISTEMATICAMENTE.

PERCHÉ I BUG CONCORRENTI SONO DIFFICILI?

PERCHÉ SPESSO NON RIPRODUCIBILI.

COS’È UNA RACE BENIGNA?

RACE CONDITION SENZA EFFETTI VISIBILI.

PERCHÉ LE RACE BENIGNE SONO COMUNQUE PERICOLOSE?

POSSONO DIVENTARE DANNOSE CON PICCOLE MODIFICHE.

COS’È UNA SEZIONE ATOMICA LOGICA?

BLOCCO CHE DEVE APPARIRE INDIVISIBILE.

COS’È UNA VIOLAZIONE DI ATOMICITÀ?

INTERFERENZA CONCORRENTE SU OPERAZIONI CORRELATE.

COS’È IL LIVELOCK?

PROCESSI ATTIVI CHE NON PROGREDISCONO.

DIFFERENZA TRA DEADLOCK E LIVELOCK.

NEL DEADLOCK SI BLOCCA, NEL LIVELOCK SI “GIRA A VUOTO”.

COS’È UNA STARVATION EVITABILE?

STARVATION PREVENIBILE CON POLITICHE CORRETTE.

COS’È UNA POLITICA DI SCHEDULING?

REGOLA DI ASSEGNAZIONE DEL TEMPO DI ESECUZIONE.

COS’È IL FAIRNESS?

GARANZIA CHE TUTTI I PROCESSI PROGREDISCANO.

COS’È UN TIMEOUT?

LIMITE TEMPORALE PER UN’OPERAZIONE.

PERCHÉ I TIMEOUT SONO DELICATI?

TROPPO BREVI FALLISCONO, TROPPO LUNGHI BLOCCANO.

COS’È UN RETRY?

RIPETIZIONE DI UN’OPERAZIONE FALLITA.

RETRY VS IDEMPOTENZA.

IL RETRY È SICURO SOLO SE L’OPERAZIONE È IDEMPOTENTE.

COS’È UN SISTEMA DETERMINISTICO SOTTO RETRY?

SISTEMA CHE PRODUCE STESSO STATO FINALE DOPO RETRY.