
Programmazione Generale
Abstraction
Il principio della programmazione orientata agli oggetti che consiste nell'esporre solo gli aspetti essenziali di un oggetto nascondendone i dettagli implementativi.
Algoritmo
Una serie finita di istruzioni logiche e ben definite che, eseguite in sequenza, permettono di risolvere un problema o svolgere un'attività. Gli algoritmi sono alla base di ogni programma informatico.
AOP
Aspect-Oriented Programming, un paradigma di programmazione che consente di separare la logica di interesse trasversale dalla logica di business principale.
API
Acronimo di Application Programming Interface: un insieme di regole e protocolli che permette a diverse applicazioni software di comunicare tra loro, facilitando l'integrazione di funzionalità esterne nei programmi.
Array
Una struttura dati che consente di memorizzare una raccolta ordinata di elementi dello stesso tipo, accessibili tramite un indice numerico. Gli array sono fondamentali per organizzare e gestire insiemi di dati.
Asynchronous
Un modello di esecuzione in cui le operazioni non bloccano l'avanzamento del programma e possono essere completate in un momento successivo. Utilizzato per migliorare la reattività delle applicazioni.
Atomic Operation
Un'operazione indivisibile che viene completata senza possibilità di interferenze da parte di altre operazioni concorrenti.
Bash
Un interprete di comandi per sistemi Unix e Linux che consente di eseguire comandi, script e automazioni tramite interfaccia testuale. Utile per gestire processi di sistema e sviluppare script.
Big O Notation
Una notazione matematica utilizzata per descrivere il comportamento asintotico di un algoritmo in termini di tempo di esecuzione o utilizzo di memoria al crescere dei dati in input.
Bug
Un errore o difetto nel codice sorgente di un programma che causa un comportamento imprevisto o indesiderato. Può compromettere il funzionamento corretto di un'applicazione.
Bytecode
Una rappresentazione intermedia di un programma sorgente, progettata per essere eseguita da una macchina virtuale piuttosto che direttamente dall'hardware.
Callback
Una funzione passata come argomento a un'altra funzione e invocata successivamente per completare un'operazione. Molto comune nella programmazione asincrona.
CI/CD Pipeline
Una serie di fasi automatizzate per integrare, testare e distribuire modifiche al codice, riducendo il rischio di errori e velocizzando il rilascio del software.
Ciclo
Un costrutto che consente di ripetere automaticamente un blocco di istruzioni finché viene soddisfatta una condizione logica. I cicli permettono di eseguire operazioni ripetitive con efficienza.
Classe
Un modello di riferimento nella programmazione orientata agli oggetti, che definisce proprietà (attributi) e comportamenti (metodi) condivisi da tutti gli oggetti creati sulla base di essa.
Closure
Una funzione che conserva l'accesso alle variabili del contesto in cui è stata creata, anche dopo che quel contesto ha terminato l'esecuzione.
Closure Scope
Lo spazio in cui una funzione mantiene accesso alle variabili dichiarate nell'ambiente esterno anche dopo che quell'ambiente ha terminato l'esecuzione.
Compilatore
Un programma che traduce il codice sorgente scritto in un linguaggio di alto livello in un linguaggio macchina eseguibile dal computer. È fondamentale per trasformare istruzioni leggibili dagli sviluppatori in istruzioni eseguibili dai dispositivi.
Compilazione
Il processo attraverso il quale il codice sorgente viene tradotto da un linguaggio di alto livello a un linguaggio macchina eseguibile dal computer.
Compiler Optimization
Tecniche applicate dal compilatore per migliorare le prestazioni e l'efficienza del codice generato, riducendo il consumo di risorse o il tempo di esecuzione.
Costruttore
Un metodo speciale di una classe che viene eseguito automaticamente all'atto della creazione di un nuovo oggetto. Serve a inizializzare lo stato dell'oggetto appena creato.
Crittografia
La disciplina che studia le tecniche per proteggere le informazioni trasformandole in un formato illeggibile senza una chiave di decifrazione.
Curryfication
Una tecnica funzionale che trasforma una funzione con più argomenti in una sequenza di funzioni ognuna con un solo argomento.
Database
Un sistema organizzato per l'archiviazione, la gestione e il recupero di dati in modo efficiente. Utilizzato in una vasta gamma di applicazioni, dai siti web ai sistemi aziendali complessi.
Deadlock
Una situazione in cui due o più processi si bloccano reciprocamente, rimanendo in attesa indefinita di risorse occupate dagli altri, impedendo la prosecuzione dell'esecuzione.
Dependency Injection
Un pattern di progettazione che consente di fornire a un oggetto le sue dipendenze dall'esterno anziché crearle internamente, favorendo modularità e testabilità.
Deserialization
Il processo di ricostruzione di un oggetto o struttura dati a partire da una sequenza di byte precedentemente serializzata.
Destruttore
Un metodo speciale di una classe che viene invocato automaticamente per liberare risorse o eseguire operazioni di chiusura quando un oggetto non è più necessario.
DOM
Document Object Model, una rappresentazione ad albero dei documenti HTML e XML che consente ai linguaggi di programmazione di accedere, modificare e aggiornare dinamicamente la struttura e il contenuto.
Encapsulation
Un principio della programmazione orientata agli oggetti che consiste nel nascondere i dettagli interni di un oggetto, esponendo solo ciò che è strettamente necessario all'esterno. Aiuta a mantenere l'integrità dei dati.
Ereditarietà
Un principio della programmazione orientata agli oggetti che permette a una classe di acquisire attributi e metodi da un'altra classe. Favorisce il riutilizzo e l'estensione del codice.
Event Bubbling
Un meccanismo in cui un evento generato su un elemento si propaga verso l'alto attraverso la gerarchia DOM, consentendo la gestione a diversi livelli.
Event Capturing
Un processo in cui l'evento viene intercettato e gestito prima che raggiunga l'elemento target, partendo dalla radice del DOM verso l'elemento specifico.
Event Loop
Un costrutto di programmazione che gestisce la coda di eventi di un'applicazione, consentendo l'esecuzione non bloccante di operazioni asincrone.
Fibonacci Sequence
Una sequenza numerica in cui ogni numero è la somma dei due precedenti, ampiamente utilizzata in informatica per esercizi di ricorsione e analisi algoritmica.
Fork
In ambito informatico, un'operazione che crea un nuovo processo duplicando un processo esistente, consentendo l'esecuzione concorrente di più flussi di lavoro.
Functional Programming
Un paradigma di programmazione che tratta le funzioni come entità di prima classe, ponendo enfasi sulla creazione di programmi mediante funzioni pure e composizione funzionale.
Funzione
Un blocco riutilizzabile di codice che esegue una specifica operazione o calcolo, e può essere richiamato in diverse parti del programma. Favorisce modularità e chiarezza.
Garbage Collection
Il processo automatico di gestione della memoria che libera spazio eliminando oggetti non più raggiungibili o utilizzati da un programma. Migliora l'efficienza dell'uso delle risorse.
Git
Un sistema di controllo di versione distribuito utilizzato per tracciare modifiche nel codice sorgente durante lo sviluppo software, favorendo la collaborazione e la gestione delle versioni.
Hash
Una funzione che converte un input di dimensione arbitraria in un output a lunghezza fissa, tipicamente usata per identificare rapidamente dati o proteggere informazioni sensibili.
Heap
Una struttura dati composta da nodi collegati, in cui ogni nodo contiene un dato e un riferimento al nodo successivo, consentendo una gestione dinamica della memoria.
Higher-Order Function
Una funzione che può ricevere altre funzioni come parametri o restituirle come risultato, favorendo una programmazione più modulare e astratta.
Hoisting
Un comportamento di JavaScript in cui dichiarazioni di variabili e funzioni vengono spostate all'inizio del contesto di esecuzione prima dell'esecuzione effettiva del codice.
IDE
Acronimo di Integrated Development Environment: un ambiente di sviluppo che integra strumenti come editor di codice, debugger e compilatore per facilitare il lavoro degli sviluppatori.
Immutable
Un oggetto o valore che, una volta creato, non può essere modificato. I dati immutabili sono fondamentali per evitare effetti collaterali.
Interprete
Un programma che esegue direttamente le istruzioni del codice sorgente senza tradurlo preventivamente in linguaggio macchina. Utilizzato per l'esecuzione immediata di script e programmi.
Interpreter
Un programma che esegue direttamente il codice sorgente istruzione per istruzione, senza la necessità di una fase preliminare di compilazione.
JSON
Formato di scambio dati leggero, utilizzato principalmente per strutturare dati in modo leggibile per l'uomo e il computer.
Lambda
Una funzione anonima, spesso breve, definita senza nome esplicito. Utilizzata per creare funzioni rapide e compatte, in particolare nei linguaggi funzionali o moderni.
Lazy Evaluation
Una strategia di valutazione in cui l'esecuzione di espressioni avviene solo quando il loro valore è effettivamente richiesto, migliorando l'efficienza e risparmiando risorse.
Linked List
Una struttura dati composta da nodi collegati, in cui ogni nodo contiene un dato e un riferimento al nodo successivo, consentendo una gestione dinamica della memoria.
Map
Una struttura dati che associa chiavi uniche a valori, permettendo l'accesso rapido ai dati tramite le rispettive chiavi.
Memoization
Una tecnica di ottimizzazione che consiste nel memorizzare i risultati di funzioni costose in termini di calcolo per riutilizzarli quando si ripresentano gli stessi input.
Microtask
Un'operazione leggera e ad alta priorità eseguita immediatamente dopo il completamento del codice in esecuzione, ma prima di altre attività in coda.
Middleware
Un software intermedio che gestisce la comunicazione tra applicazioni, sistemi operativi o servizi diversi, facilitando l'integrazione e il coordinamento dei dati.
Monads
Un concetto della programmazione funzionale che incapsula valori e comportamenti sequenziali, facilitando la gestione di effetti collaterali in modo strutturato.
Multithreading
Una tecnica di programmazione che consente l'esecuzione simultanea di più thread all'interno di un singolo processo, migliorando la reattività e l'efficienza.
Mutability
La proprietà di un oggetto o struttura dati che permette di modificare il suo stato o contenuto dopo la creazione.
Namespace
Un meccanismo che consente di organizzare simboli, nomi o variabili in contesti separati per evitare conflitti di denominazione all'interno di un programma.
NaN
Acronimo di 'Not a Number', rappresenta un valore speciale utilizzato nei linguaggi di programmazione per indicare il risultato di un'operazione che non restituisce un numero valido.
Object-Oriented Programming
Un paradigma di programmazione basato sull'organizzazione del software in oggetti, che combinano dati (attributi) e comportamenti (metodi) per modellare entità reali o concettuali.
Operatore Ternatrio
Un operatore condizionale che valuta un'espressione e restituisce uno tra due valori in base all'esito della valutazione.
ORM
Object-Relational Mapping, una tecnica che consente di interagire con un database relazionale utilizzando oggetti e classi anziché query SQL, semplificando l'accesso ai dati.
Overloading
La possibilità di definire più funzioni o metodi con lo stesso nome ma parametri differenti, permettendo una maggiore flessibilità nell'utilizzo.
Package Manager
Un sistema che automatizza il processo di installazione, aggiornamento, configurazione e rimozione di pacchetti software, gestendo dipendenze e versioni.
Polimorfismo
Un concetto chiave della programmazione orientata agli oggetti che consente a entità diverse di rispondere allo stesso comando in modi differenti. In pratica, più oggetti possono condividere il nome di un metodo, ma ognuno di essi può implementarlo con un comportamento specifico. Questo favorisce flessibilità e riutilizzo del codice, facilitando la gestione di sistemi complessi.\nEsempio: sia un oggetto 'Cane' che un oggetto 'Gatto' possono avere un metodo 'emettiSuono()', ma il primo risponderà abbaiando mentre il secondo miagolando.
Polyfill
Un frammento di codice che implementa funzionalità moderne in ambienti legacy, consentendo la compatibilità con browser o ambienti meno recenti.
Promise
Un oggetto utilizzato nella programmazione asincrona che rappresenta il completamento o il fallimento futuro di un'operazione, consentendo di gestire risultati non immediatamente disponibili.
Promises Chaining
Una tecnica che collega più operazioni asincrone in sequenza, sfruttando le promesse per gestire il flusso di esecuzione in modo più leggibile.
Puntatore
Una variabile che memorizza l'indirizzo di memoria di un'altra variabile, consentendo un accesso diretto e flessibile ai dati.
Pure Function
Una funzione che, dato un input, restituisce sempre lo stesso output senza modificare dati esterni o causare effetti collaterali.
Race Condition
Un errore di concorrenza che si verifica quando il risultato di un'operazione dipende dall'ordine non controllato di esecuzione di processi o thread.
Recursion
Una tecnica di programmazione in cui una funzione si richiama direttamente o indirettamente, fino al raggiungimento di una condizione di terminazione.
Recursion Depth
ll numero massimo di livelli di chiamata annidata raggiunti durante una ricorsione, oltre il quale può verificarsi uno stack overflow.
Refactoring
Il processo di ristrutturazione del codice sorgente di un programma senza alterarne il comportamento esterno, migliorandone leggibilità, struttura e manutenibilità.
Reflect API
Una API in JavaScript che fornisce metodi statici per interagire dinamicamente con oggetti, semplificando operazioni come property lookup, assignment e function invocation.
Reflection
La capacità di un programma di ispezionare ed eventualmente modificare la propria struttura, tipicamente tramite metaprogrammazione.
Regex
Un'espressione regolare, uno strumento potente per cercare, riconoscere e manipolare stringhe di testo secondo schemi specifici.
Repository
Un archivio centralizzato in cui vengono conservati codice sorgente, documentazione e risorse correlate a un progetto software, supportando la gestione delle versioni.
Rest
Un'architettura software che definisce un insieme di vincoli per creare servizi web scalabili e facilmente manutenibili, basata su operazioni standard come GET, POST, PUT e DELETE.
RESTful API
Un'interfaccia di programmazione che aderisce ai principi REST, consentendo la comunicazione tra client e server tramite protocolli standard come HTTP.
Scope
L'area di validità in cui una variabile è accessibile all'interno di un programma, determinando la visibilità e la durata della variabile stessa.
Serialization
Il processo di trasformazione di un oggetto o struttura dati in un formato che può essere facilmente salvato o trasmesso, ad esempio una sequenza di byte.
Set
Una struttura dati che memorizza valori unici e non ordinati, impedendo la presenza di elementi duplicati.
Short-Circuit Evaluation
Una modalità di valutazione logica in cui l'espressione viene interrotta non appena il risultato finale è determinato, migliorando l'efficienza.
Singleton
Un pattern di progettazione che garantisce che una classe abbia una sola istanza disponibile durante l'intera esecuzione del programma.
Source Map
Un file che associa il codice minimizzato distribuito alle rispettive fonti originali, facilitando il debug nei browser di sviluppo.
Spread Operator
Un operatore in JavaScript che consente di espandere un array, oggetto o stringa in singoli elementi, semplificando la copia e la combinazione di dati.
Stack
Una struttura dati che segue la logica Last In, First Out (LIFO), in cui l'ultimo elemento inserito è il primo a essere rimosso. Utilizzato per gestire esecuzioni, funzioni e dati temporanei.
Stream
Una sequenza di dati in input o output che viene gestita in modo continuo.
Strict Mode
Una modalità che impone regole più restrittive nella scrittura del codice, aiutando a prevenire errori comuni.
Symbol
Un tipo di dato primitivo in JavaScript che genera identificatori unici e immutabili, utile per creare proprietà non in conflitto sugli oggetti.
Tail Recursion
Una forma di ricorsione ottimizzata in cui l'ultima istruzione della funzione è la chiamata ricorsiva stessa, consentendo risparmi di memoria.
Thread
L'unità di esecuzione più piccola di un processo, che consente di svolgere operazioni concorrenti all'interno dello stesso programma, migliorando l'efficienza e la reattività.
Token
Un'unità fondamentale di dati che rappresenta una componente minima e significativa in un linguaggio di programmazione o un'informazione di sicurezza in un sistema di autenticazione.
Tokenization
Il processo di suddividere una sequenza di testo in unità minime chiamate token, utile nell'analisi del linguaggio naturale e nella compilazione.
Type Inference
La capacità di un linguaggio di programmazione di dedurre automaticamente il tipo di una variabile in base al valore assegnato, riducendo la necessità di annotazioni esplicite.
UML
Unified Modeling Language, un linguaggio standardizzato per modellare, visualizzare e documentare sistemi software complessi attraverso diagrammi strutturali e comportamentali.
UML
Unified Modeling Language, un linguaggio standardizzato di modellazione che consente di visualizzare, specificare e documentare sistemi software complessi tramite diagrammi.
Variabile
Un contenitore che memorizza un valore modificabile durante l'esecuzione di un programma, identificato da un nome univoco.
Virtual Machine
Un software che emula un sistema hardware completo, consentendo l'esecuzione di sistemi operativi o applicazioni isolati dall'ambiente fisico sottostante.
WeakMap
Una collezione di coppie chiave/valore in JavaScript dove le chiavi sono oggetti debolmente referenziati, permettendo al garbage collector di liberare memoria non più necessaria.
WeakSet
Una struttura dati simile a Set, contenente oggetti debolmente referenziati, ideale per collezioni temporanee senza impedire il garbage collection.
Webpack
Un tool di build per applicazioni web che consente di combinare moduli JavaScript, fogli di stile e risorse multimediali in bundle ottimizzati per la distribuzione.
WebSocket
Un protocollo di comunicazione che consente una connessione bidirezionale persistente tra client e server, ideale per applicazioni in tempo reale.
XML
eXtensible Markup Language, un linguaggio di markup che definisce regole per codificare documenti in formato leggibile sia dall'uomo che dalle macchine.
YAML
AML Ain't Markup Language, un formato di serializzazione dati leggibile dall'uomo, spesso utilizzato per file di configurazione e scambio di dati tra applicazioni.
Zero-Day
Una vulnerabilità di sicurezza presente in un software e non ancora nota al produttore o non ancora corretta, sfruttata da attaccanti prima che venga rilasciata una soluzione.