Che cos’è un modello linguistico di grandi dimensioni? Come funzionano i LLM, spiegato senza esagerazioni

  1. Home
  2. Blog
  3. Intelligenza artificiale

Intelligenza artificiale

Che cos’è un modello linguistico di grandi dimensioni? Come funzionano gli LLM, spiegato senza esagerazioni

Comprendi cosa sta realmente accadendo quando un’intelligenza artificiale scrive un testo. Scopri i token, gli incorporamenti e l’attenzione in un linguaggio semplice, esegui un piccolo predittore della parola successiva e scopri perché questi modelli possono essere brillanti e sbagliati allo stesso tempo.

9 min di lettura
Cos’è un modello linguistico ampio? Come funzionano i LLM, spiegato senza esagerazioni

Punti chiave

  • Un modello linguistico di grandi dimensioni è una rete neurale addestrata su enormi quantità di testo per prevedere ciò che verrà dopo.
  • Funziona su token e utilizza attenzione per valutare quali token precedenti contano di più.
  • Genera una risposta un token alla volta, scegliendo da un insieme di probabilità.
  • Può sembrare sicuro pur essendo sbagliato, quindi i risultati importanti devono essere controllati.

Gli strumenti che chattano, riassumono e scrivono codice sembrano quasi magici, finché non vedi il meccanismo sottostante. Un modello linguistico di grandi dimensioni, o LLM, è fondamentalmente un sistema molto sofisticato per prevedere la parte di testo successiva. Quest’unica idea spiega sia cosa fanno bene questi strumenti sia perché falliscono nel modo in cui lo fanno.

Questa guida spiega i concetti principali senza calcoli matematici, quindi crea un piccolo predittore della parola successiva per rendere l’idea concreta. Abbiamo eseguito quel codice su Python 3.13 e l’output proviene da quell’esecuzione. È un semplice giocattolo di conteggio piuttosto che una rete neurale e i veri LLM sono molto più capaci. Evitiamo inoltre di citare i dati relativi a modelli specifici, perché cambiano rapidamente.

Cos’è un modello linguistico ampio?

Un LLM è un tipo di intelligenza artificiale addestrata a comprendere e generare il linguaggio umano. Prendiamo il nome una parola alla volta:

  • Grande: ha un numero enorme di valori interni regolabili, chiamati parametri, e impara da un’enorme quantità di testo.
  • Lingua: funziona con il testo, inclusi linguaggio naturale e codice.
  • Modello: è un sistema matematico che cattura modelli dai dati e li utilizza per fare previsioni.

I modelli sono il motore e prodotti come gli assistenti di chat sono l’auto costruita attorno ad essi. Un prodotto spesso aggiunge un’interfaccia utente, sistemi di sicurezza, ricerca e altri strumenti.

L’idea centrale: prevedere cosa verrà dopo

Fallo tu stesso. Se leggi “la capitale della Francia è”, la tua mente propone subito “Parigi”. Un LLM fa qualcosa di paragonabile, ma su scala molto più ampia. Dato del testo, calcola la probabilità di ogni possibile token successivo, ne sceglie uno, lo aggiunge al testo e lo ripete.

Non esiste un database di risposte archiviate da cercare. Il modello contiene i modelli appresi durante l’addestramento, sotto forma di numeri. Quando questi schemi sono in linea con la verità, ottieni una risposta corretta. In caso contrario, puoi comunque ottenere una risposta fluida, e questa è un’importante differenza rispetto a un motore di ricerca.

Una piccola demo funzionante

Per vedere la previsione del token successivo nella sua forma più semplice, questo script conta quale parola segue quale in un testo minuscolo. Quindi genera un nuovo testo da tali conteggi. Gli statistici lo chiamano modello bigramma.

import random
from collections import Counter, defaultdict

TEXT = """the cat sat on the mat . the dog sat on the rug .
the cat saw the dog . the dog saw the cat ."""

tokens = TEXT.split()

follows = defaultdict(Counter)
for current, following in zip(tokens, tokens[1:]):
    follows[current][following] += 1

def probabilities(word):
    counts = follows[word]
    total = sum(counts.values())
    return {w: round(n / total, 2) for w, n in counts.most_common()}

print(probabilities("the"))
print(probabilities("sat"))

# {'cat': 0.38, 'dog': 0.38, 'mat': 0.12, 'rug': 0.12}
# {'on': 1.0}

Tale risultato è una distribuzione di probabilità. Dopo “il”, il modello considera molto probabilmente “gatto” e “cane”. Ora generiamo il testo campionando ripetutamente da quelle probabilità:

def generate(start, length, seed):
    rng = random.Random(seed)
    words = [start]
    for _ in range(length):
        counts = follows[words[-1]]
        words.append(rng.choices(list(counts), weights=counts.values())[0])
    return " ".join(words)

print(generate("the", 6, seed=1))
print(generate("the", 6, seed=2))
print(generate("the", 6, seed=3))

# the cat . the cat saw the
# the rug . the cat . the
# the cat saw the dog . the

Nota tre cose. Lo stesso inizio può produrre testi diversi, perché la scelta è casuale. L’output somiglia ai dati di addestramento, anche per le sequenze che non sono mai apparse al suo interno. E non ha alcuna comprensione, motivo per cui “il tappeto… il gatto” sembra una sciocchezza.

Chiedigli una parola che non ha mai visto e non avrà nulla da offrirti: follows["elephant"] è vuoto. Il nostro giocattolo guarda solo una parola precedente. L’enorme salto nei LLM reali deriva dalla considerazione di lunghi tratti di contesto e dall’apprendimento da molti più dati, utilizzando una rete neurale anziché un semplice conteggio.

Token: come legge un modello

Gli LLM non leggono parole intere come facciamo noi. Il testo viene prima suddiviso in token, che possono essere una parola, parte di una parola o segni di punteggiatura. Ogni token corrisponde a un numero e il modello funziona interamente con i numeri.

I token contano in pratica per due ragioni. L’utilizzo dei modelli ospitati è generalmente valutato in token e ogni modello ha un limite al numero che può gestirne contemporaneamente. La tokenizzazione spiega anche alcuni famosi comportamenti strani. Poiché i modelli vedono pezzi anziché lettere, compiti come contare le lettere in una parola sono stati tradizionalmente sorprendentemente difficili per loro.

Incorporamenti: significato come numeri

Ogni token viene trasformato in un embedding, una lunga lista di numeri che lo colloca in una sorta di spazio di significato. I concetti correlati finiscono vicini, quindi “gatto” e “gattino” hanno posizioni vicine, mentre “gatto” e “fattura” no.

La stessa idea alimenta la ricerca semantica, in cui trovi i documenti in base al significato piuttosto che alle parole esatte. La nostra guida al database vettoriale copre questo utilizzo.

Attenzione e il trasformatore

La maggior parte dei LLM moderni si basano sull’architettura transformer, introdotta dai ricercatori di Google nel documento del 2017 “L’attenzione è tutto ciò di cui hai bisogno”. Il suo meccanismo chiave è l’autoattenzione.

Considera questa frase: “Il trofeo non entrava nella valigia perché era troppo grande”. A cosa si riferisce “esso”? Sai che significa il trofeo. L’attenzione consente a un modello di pesare ogni token precedente durante l’elaborazione di quello nuovo, in modo da poter collegare “esso” alle parole più rilevanti, anche quando sono distanti.

Gli approcci precedenti elaboravano il testo passo dopo passo e tendevano a perdere traccia delle parole distanti. I trasformatori esaminano insieme il contesto e possono eseguire gran parte di questo lavoro in parallelo su hardware specializzato, il che ha reso pratica la formazione su quantità di testo così grandi.

Come viene formato un LLM

Palcoscenico Cosa succede
Raccolta dati Grandi quantità di testo vengono raccolte e pulite
Pre-allenamento Il modello prevede ripetutamente il token successivo e i suoi parametri vengono modificati ogni volta che è sbagliato
Messa a punto Impara da esempi di risposte utili, con il feedback umano spesso utilizzato per classificare le risposte
Valutazione I team lo testano per casi di qualità, sicurezza e fallimento

La formazione preliminare fornisce al modello un’ampia capacità linguistica, ma potrebbe semplicemente continuare il testo anziché rispondere. Le fasi successive lo trasformano in un utile assistente. L’addestramento di modelli di grandi dimensioni richiede una notevole potenza di calcolo ed è costoso. L’utilizzo di un modello finito, noto come inferenza, è molto più economico per richiesta.

Come genera il testo

  1. Il tuo prompt viene suddiviso in token e convertito in incorporamenti.
  2. La rete li elabora, utilizzando l’attenzione per metterli in relazione tra loro.
  3. Genera una probabilità per ogni possibile token successivo.
  4. Un token viene selezionato e aggiunto al contesto.
  5. I passaggi da 2 a 4 si ripetono fino a raggiungere una condizione di arresto.

Questo è il motivo per cui le risposte in genere vengono visualizzate parola per parola durante lo streaming. Il testo viene letteralmente prodotto in sequenza. La Temperatura controlla quanto avventuroso sia il passaggio 4: valori bassi favoriscono i token più probabili, mentre valori più alti consentono una maggiore varietà.

Suggerimento: Per l’estrazione, la classificazione e altre attività ripetibili, utilizzare una temperatura bassa laddove l’impostazione è disponibile. Per il brainstorming può essere utile un’impostazione più alta. Anche così, un valore basso non garantisce sempre risposte identiche.

Termini che incontrerai

Termine Significato
Richiedi L’input fornito al modello
Finestra di contesto Il numero massimo di token che può considerare contemporaneamente
Parametri I valori interni appresi durante la formazione
Inferenza Esecuzione di un modello addestrato per ottenere l’output
Allucinazione Output sicuro che è falso
Taglio della conoscenza Il punto dopo il quale terminano i dati di training
RAG Recupero di documenti per fornire un contesto aggiuntivo al modello
Modello a peso aperto Un modello i cui parametri puoi scaricare ed eseguire tu stesso

Limitazioni che dovresti conoscere

  • Allucinazioni. Un modello può inventare fatti, citazioni o funzioni di codice. Poiché produce un testo verosimile, le affermazioni false possono sembrare completamente plausibili.
  • Limite di conoscenza. A meno che un prodotto non lo colleghi alla ricerca o ad altri strumenti, potrebbe non essere a conoscenza degli eventi recenti.
  • Contesto limitato. Se una conversazione supera la finestra di contesto, i dettagli precedenti potrebbero essere eliminati o riepilogati. Inoltre, i modelli non ricordano automaticamente le chat passate, a meno che un prodotto non aggiunga tale funzionalità.
  • Pregiudizi. I dati di addestramento riflettono i pregiudizi umani e questi possono apparire nell’output.
  • Incoerenza. La stessa domanda può produrre risposte diverse, il che è importante quando si crea software su una di esse.
  • Rischi per la sicurezza. Le istruzioni nascoste nel testo possono manipolare un modello, un problema noto come prompt injection.

Usare bene i LLM

Tratta un LLM come un assistente veloce e capace il cui lavoro necessita di revisione. Alcune abitudini fanno una grande differenza:

  • Sii specifico. Istruzioni chiare, contesto ed esempi danno risultati migliori. La nostra guida al prompt engineering mostra come.
  • Fornisci i fatti. Quando le risposte devono provenire dai tuoi documenti, usa RAG invece di fare affidamento sulla memoria.
  • Verifica ciò che conta. Controlla dati, citazioni e affermazioni legali o mediche rispetto a fonti affidabili.
  • Test del codice generato. Eseguilo e scrivi i test, come faresti per quello di un collega. La nostra guida sugli Strumenti di revisione del codice AI fornisce assistenza.
  • Proteggi i dati sensibili. Controlla le regole della tua organizzazione prima di condividere informazioni riservate con uno strumento ospitato.

Se stai decidendo come personalizzare un modello per il tuo lavoro, il nostro confronto tra RAG, messa a punto e ingegneria rapida ti aiuterà a scegliere.

Considerazioni finali

Un LLM è un predittore del token successivo addestrato su scala straordinaria ed è più utile e più fallibile di quanto suggerisca tale descrizione. Tenere a mente il meccanismo ti aiuta a usarlo bene: è forte nel linguaggio e nei modelli e richiede la tua supervisione sui fatti. Per renderlo concreto, esegui il piccolo script qui sopra con il tuo testo, quindi prova più volte lo stesso suggerimento in un vero assistente e confronta le risposte.

Domande frequenti

Che cos’è un grande modello linguistico in termini semplici?

Si tratta di un sistema di intelligenza artificiale addestrato su enormi quantità di testo per prevedere cosa accadrà dopo. Ripetendo quella previsione, può rispondere a domande, scrivere e riassumere.

Qual è la differenza tra AI e un LLM?

L’intelligenza artificiale è l’ampio campo della costruzione di sistemi intelligenti. Un LLM è un tipo specifico di modello di intelligenza artificiale, focalizzato sull’elaborazione e sulla generazione del linguaggio.

Gli LLM capiscono quello che dicono?

Questo è dibattuto. Catturano ricchi modelli di significato e possono ragionare su molti problemi, ma non sperimentano il mondo e possono fallire in modi in cui una persona non farebbe.

Perché i LLM inventano le cose?

Generano testo probabile anziché recuperare fatti verificati. Quando i modelli puntano verso una risposta plausibile ma falsa, il modello può affermarla con apparente sicurezza.

Cos’è un token in un LLM?

Un token è una porzione di testo elaborata dal modello, ad esempio una parola, parte di una parola o un segno di punteggiatura. I limiti e i prezzi sono spesso misurati in token.

Continua a imparare

Lavora con Stack Quora

Hai bisogno di aiuto con test, WordPress o SEO?

Aiutiamo i team a fornire software migliore e a far crescere i loro siti. Raccontaci a cosa stai lavorando e ti suggeriremo chiaramente il prossimo passo.

Continua a leggere

Altre guide su test, intelligenza artificiale e sviluppo moderno

Ti è piaciuto questo articolo? Scegli un argomento e passa direttamente ai nostri tutorial più recenti.

Intelligenza artificiale

Spiegazione delle allucinazioni dell'intelligenza artificiale: perché i modelli linguistici inventano le cose e come ridurle

Spiegazione delle allucinazioni dell'intelligenza artificiale: cosa sono, perché i modelli linguistici le producono, tipi comuni, come ridurle con b…

Leggi l'articolo →
DevOps

Spiegazione delle variabili d'ambiente: file .env, segreti e configurazione eseguiti correttamente

Variabili d'ambiente spiegate con esempi Python che abbiamo eseguito: lettura e impostazione, perché ogni valore è una stringa, file .env, ereditari…

Leggi l'articolo →
Sviluppo software

Spiegazione della limitazione della velocità API: algoritmi, intestazioni e gestione degli errori 429

La limitazione della velocità dell'API spiegata con una simulazione che abbiamo eseguito: bucket di token, finestra fissa, finestra scorrevole, risp…

Leggi l'articolo →
Automazione dei test

Derisione in Python: unittest.mock, patch e gli errori che fanno mentire i test

Mocking in Python con unittest.mock, testato: Mock e return_value, side_effect, patch dove viene utilizzato un nome, specifiche e autospec, date moc…

Leggi l'articolo →
Test del software

Spiegazione della copertura del codice: copertura di linea o di filiale e cosa significa realmente il 100%.

Copertura del codice spiegata con una vera esecuzione di cover.py: copertura di linea, ramo e condizione, lettura di un rapporto, perché la copertur…

Leggi l'articolo →
Database e SQL

DELETE vs TRUNCATE vs DROP in SQL: differenze, rollback e quando utilizzarli

DELETE vs TRUNCATE vs DROP spiegato con SQL testato: cosa rimuove, rollback, trigger, reimpostazione dell'identità, velocità e come differiscono Pos…

Leggi l'articolo →
Database e SQL

Spiegazione delle visualizzazioni SQL: crea, utilizza ed evita le insidie, con esempi

Viste SQL spiegate con le query che abbiamo eseguito: creazione di una vista, risultati in tempo reale, nascondere colonne, prestazioni, viste aggio…

Leggi l'articolo →
Sviluppo software

Interfaccia TypeScript e tipo: differenze reali, testate con il compilatore

Interfaccia TypeScript vs tipo, verificata con il vero compilatore: cosa possono fare entrambi, cosa può fare solo uno, fusione delle dichiarazioni,…

Leggi l'articolo →
Sviluppo software

Spiegazione di Python *args e **kwargs: funzioni flessibili con esempi chiari

Python *args e **kwargs spiegati con il codice che abbiamo eseguito: compressione e decompressione, ordine dei parametri, argomenti solo per parole …

Leggi l'articolo →
Sviluppo software

Funzioni Lambda Python: sintassi, usi reali e quando non usarli

Funzioni lambda Python spiegate con il codice che abbiamo eseguito: sintassi, ordinamento con chiave, mappa e filtro, chiusure, trap dell'associazio…

Leggi l'articolo →
Intelligenza artificiale

Cosa sono gli agenti AI? Come funzionano, con un semplice ciclo di agenti che puoi eseguire

Cosa sono gli agenti IA? Una semplice guida al ciclo dell'agente, agli strumenti, alla memoria e ai guardrail, con un piccolo ciclo Python che abbia…

Leggi l'articolo →
DevOps

Monitoraggio vs osservabilità: la vera differenza, con log, metriche e tracce

Spiegazione del monitoraggio e dell'osservabilità: errori noti e sconosciuti, log, metriche e tracce, una procedura dettagliata sugli incidenti di p…

Leggi l'articolo →
DevOps

Volumi Docker e montaggi di associazione: mantenere i dati del contenitore nel modo giusto

Volumi Docker e montaggi di collegamento spiegati: perché i dati del contenitore scompaiono, volumi denominati, montaggi di collegamento, tmpfs, ese…

Leggi l'articolo →
Automazione dei test

TDD vs BDD: differenze chiave, una caratteristica costruita in entrambi i modi e quando utilizzarli ciascuno

TDD vs BDD spiegato con una funzione di sconto costruita in entrambi i modi: refactoring rosso-verde con il codice che abbiamo eseguito, scenari "Da…

Leggi l'articolo →
Test del software

Test di accettazione da parte dell'utente (UAT): processo, lista di controllo ed esempi reali

Spiegazione del test di accettazione dell'utente: chi lo esegue, in cosa differisce dal QA, un processo in sette fasi, un modello di test case UAT, …

Leggi l'articolo →
Database e SQL

Spiegazione dei valori SQL NULL: IS NULL, COALESCE, NULLIF e le trappole da evitare

Valori SQL NULL spiegati con le query che abbiamo eseguito: logica a tre valori, IS NULL, COALESCE, NULLIF, come aggregazioni, join e ordinamento tr…

Leggi l'articolo →
Database e SQL

Istruzione SQL CASE WHEN: sintassi, esempi reali ed errori comuni

SQL CASE WHEN spiegato con le query che abbiamo eseguito: moduli semplici e cercati, ordine delle condizioni, pivot con SUM, trucchi COUNT, ordiname…

Leggi l'articolo →
Sviluppo software

Cos'è il JWT? Token Web JSON spiegati con un esempio funzionante

Cos'è il JWT? Spiegazione dei token Web JSON: le tre parti, un token creato e manomesso nel codice che abbiamo eseguito, JWT e sessioni, archiviazio…

Leggi l'articolo →
Sviluppo software

Spiegazione del loop di eventi JavaScript: stack di chiamate, microtask e timer con esempi

Il ciclo di eventi JavaScript spiegato con il codice che abbiamo eseguito: stack di chiamate, code di attività e microtask, perché setTimeout 0 non …

Leggi l'articolo →
Sviluppo software

Spiegazione dei generatori Python e del rendimento: risparmia memoria con esempi reali

Generatori Python e rendimento spiegati con il codice che abbiamo eseguito: come vengono messi in pausa e ripresi, misurato il risparmio di memoria,…

Leggi l'articolo →
Intelligenza artificiale

Cosa sono gli incorporamenti? I vettori e la somiglianza del coseno spiegati semplicemente

Cosa sono gli incorporamenti? Una guida in linguaggio semplice ai vettori, alla similarità del coseno e alla ricerca semantica, con un piccolo esemp…

Leggi l'articolo →
DevOps

Distribuzione blu-verde rispetto a quella canaria: differenze, compromessi e come scegliere

Spiegazione della distribuzione blu-verde e canary: come funziona ciascuna, costi, rischi e rollback, bucket utente stabile che abbiamo testato, mig…

Leggi l'articolo →
Automazione dei test

Test instabili: quali sono le cause e come risolverli definitivamente

Test instabili spiegati con demo che abbiamo eseguito: le cause principali, come confermarne e diagnosticarne uno, soluzioni adeguate per tempistich…

Leggi l'articolo →
Test del software

Test di carico e test di stress: differenze, metriche ed esempi k6

Spiegazione del test di carico e dello stress test: cosa dimostra ciascuno, test di picco e di assorbimento, le metriche che contano, perché le medi…

Leggi l'articolo →
Test del software

Caso di test e scenario di test: differenze chiave, esempi e quando utilizzarli

Spiegazione del caso di test e dello scenario di test: definizioni chiare, una tabella affiancata, una funzione di reimpostazione della password pre…

Leggi l'articolo →
Database e SQL

Ottimizzazione delle query SQL: leggi i piani di esecuzione e correggi query lente, con tempistiche

Ottimizzazione delle query SQL testata su un milione di righe: leggi i piani di esecuzione, aggiungi gli indici corretti, correggi filtri non aggior…

Leggi l'articolo →
Database e SQL

SQL UNION vs UNION ALL: differenze, esempi e prestazioni testate

SQL UNION vs UNION ALL spiegati con le query che abbiamo eseguito: duplicati, regole seguite da entrambi, un vero bug di dati, prestazioni misurate,…

Leggi l'articolo →
Sviluppo software

Tutorial sull'API di recupero JavaScript: GET, POST, gestione degli errori e timeout

Un tutorial sull'API JavaScript Fetch testato su un server locale: GET e POST, perché 404 non genera eccezioni, un helper riutilizzabile, stringhe d…

Leggi l'articolo →
Sviluppo software

Gestione dei file Python: lettura, scrittura, CSV, JSON e pathlib con esempi

Gestione dei file Python spiegata con il codice che abbiamo eseguito: modalità aperte, con, lettura di file di grandi dimensioni, CSV, JSON, pathlib…

Leggi l'articolo →
Sviluppo software

Classi e oggetti Python: tutorial OOP con esempi reali

Classi e oggetti Python spiegati con il codice che abbiamo eseguito: __init__, metodi, attributi di classe e istanza, ereditarietà, proprietà, metod…

Leggi l'articolo →
Intelligenza artificiale

Che cos'è un modello linguistico di grandi dimensioni? Come funzionano i LLM, spiegato senza esagerazioni

Cos’è un modello linguistico ampio? LLM spiegati in un linguaggio semplice: token, incorporamenti, attenzione, formazione, finestre di temperatura e…

Leggi l'articolo →
DevOps

Comandi Linux per principianti: la guida essenziale del terminale con esempi

Comandi Linux per principianti, raggruppati per attività: navigazione, file, visualizzazione log, grep, pipe, permessi, processi e archivi, con un e…

Leggi l'articolo →
Automazione dei test

Selenio vs drammaturgo: differenze chiave, codice a confronto e quale scegliere

Selenium vs Playwright a confronto: architettura, attesa, supporto per browser e linguaggio, debug, lo stesso test in entrambi gli strumenti, consig…

Leggi l'articolo →
Test del software

Partizionamento di equivalenza: tecnica di progettazione dei test spiegata con esempi pratici

Spiegazione del partizionamento di equivalenza: come trovare partizioni valide e non valide, esempi funzionanti per età, password e coupon, test che…

Leggi l'articolo →
Test del software

Gravità vs priorità nel test del software: differenze, matrice ed esempi reali

Spiegazione della gravità e della priorità nei test del software: definizioni chiare, una matrice a quattro vie con esempi, scale di livello, chi im…

Leggi l'articolo →
Database e SQL

Esercitazione sulle sottoquery SQL: tipi, sottoquery correlate ed EXISTS con esempi

Un tutorial sulle sottoquery SQL con le query che abbiamo eseguito: sottoquery scalari, IN, FROM e SELECT, sottoquery correlate, EXISTS, trap NOT IN…

Leggi l'articolo →
Database e SQL

Spiegazione di transazioni SQL e ACID: COMMIT, ROLLBACK e livelli di isolamento

Transazioni SQL e ACID spiegate con un bonifico bancario eseguito: COMMIT, ROLLBACK, punti di salvataggio, blocchi, livelli di isolamento, letture s…

Leggi l'articolo →
Sviluppo software

Git merge vs rebase: differenze, esempi e quando usare ciascuno

Git merge vs rebase spiegato con output reale del log, una tabella di confronto, la regola d'oro del rebase e un flusso di lavoro sicuro per i team.

Leggi l'articolo →
Sviluppo software

List comprehension in Python: sintassi, esempi e quando evitarla

List comprehension in Python spiegata: sintassi, filtri, if-else, cicli annidati, tempi misurati e i casi in cui un normale ciclo for è meglio.

Leggi l'articolo →
Database e SQL

SQL JOIN spiegati con esempi (Inner, Left, Right, Full)

Capisci i JOIN SQL passo dopo passo con tabelle e query di esempio: INNER, LEFT, RIGHT, FULL, CROSS e SELF, con errori comuni e consigli sulle prest…

Leggi l'articolo →