https://www.youtube.com/watch?v=sMl3V0vjvjE Published: 2026-03-18 · Duration: 10:46 · 22,400 views
[0:01] Allora, di solito in questo canale si prova a parlare di idee, di algoritmi,
[0:08] di programmazione. Anche quando si parla di intelligenza artificiale tendo a parlare perlopiù
[0:15] di questioni concettuali senza andare troppo a soffermarmi sui prodotti, che poi sono quelli che
[0:23] noi acquistiamo e utilizziamo per programmare con l'intelligenza artificiale. Però a questo
[0:30] punto l'elefante nella stanza è così grande che devo per forza parlare di questa cosa qua,
[0:38] ovvero di quanto Codex sia superiore a Claude Code, ormai in maniera schiacciante. E però
[0:48] tutta l'industria è orientata verso l'utilizzo di Claude Code. Di questa cosa ne parlerò facendovi
[0:56] l'esempio di ieri, ma io non mi permetterei di fare questo video se non fosse capitata la
[1:02] stessa storia una ventina di volte negli ultimi due mesi, una volta dopo l'altra.
[1:12] Ma parleremo pure delle questioni, diciamo, di tipo psicologico che ci sono dietro Claude Code.
[1:17] Allora, tanto per iniziare, bisogna fare una precisazione importante che contestualizza tutto
[1:24] il video. Sia Claude Code che Codex sono i due strumenti in questo momento che funzionano meglio,
[1:33] quindi sono lo stato dell'arte. Quando io dico che Codex funziona meglio di Claude Code, vuol
[1:41] dire che per problemi molto difficili, GPT 5.4 in modalità X high — quindi tutti i miei test con
[1:54] Opus alla massima profondità di pensiero, diciamo, chiamiamola così, quindi spendendo il massimo
[2:02] numero di token a test time — e con GPT 5.4 e 5.3 sempre in modalità X high. Per cui diciamo che il
[2:16] mio compromesso normale è quello di aspettare di più per avere una risposta più esatta.
[2:27] Quindi tutti e due i tool funzionano. Non è che dico che se uno usa Claude Code allora non può avere i vantaggi normalmente associati alla programmazione automatica,
[2:38] ma per le cose veramente difficili c'è una differenza davvero netta, perché sennò io questo video, ripeto, non l'avrei fatto.
[2:47] Vi racconto, diciamo, l'ultima che è accaduta. Dovevo modificare l'implementazione del Radix Tree
[2:58] che ho scritto nel 2019 o 2017, non me lo ricordo più, di cui vado particolarmente fiero. Credo che
[3:08] specialmente di questi tempi in cui il codice scritto a mano inizia a diventare una rarità,
[3:15] quella implementazione lì è veramente un esempio, secondo me, di programmazione di un certo livello
[3:23] e di literate programming. L'implementazione è particolarmente... non ha mai avuto bug da
[3:29] quando l'ho rilasciata, dopo le prime iterazioni delle prime settimane non ha più avuto bug,
[3:36] anche se viene utilizzata in maniera molto significativa in Redis, in Redis Cluster, negli stream e così via. Quindi, diciamo, un'implementazione di alto profilo.
[3:47] Questa implementazione soffriva di un'ingenuità dal punto di vista dell'utilizzo della memoria,
[3:54] che poi si traduce anche in un'ingenuità dal punto di vista delle performance. Di questa
[4:00] cosa ne ho parlato in un video che purtroppo non vi siete neanche cagati di striscio, che è quello sull'indirezione nella programmazione, quello che è girato nella macchina vecchia. Lì
[4:10] ci sono, secondo me, delle cose che per un programmatore giovane che non conosce alcuni
[4:16] concetti possono essere, diciamo, in qualche modo comunque accrescitive della conoscenza,
[4:25] perché quando tu hai più indirezioni paghi il cache miss e così via. Quindi
[4:31] praticamente a volte quello che si traduce in una vincita dal punto di vista dell'utilizzo della memoria si traduce anche in un aumento delle performance dal punto di vista del tempo.
[4:42] Quindi quando tu riesci a fare una modifica ad un codice e ottieni delle riduzioni sia nello spazio
[4:49] che nel tempo, hai, diciamo, vinto, perché lo svantaggio a quel punto è solo che probabilmente
[4:55] il codice si è complicato un po'. Ma per andare il 20% più veloce, il 30% meno spazio, allora, cioè,
[5:04] ne vale la pena. La complessità è una nemica, ma a volte è una nemica che bisogna prender per mano,
[5:13] prendere a braccetto e far sì che ci accompagni nel nostro viaggio, nel nostro tentativo
[5:20] di scrivere il software migliore. In questo caso una complessità vale la pena di pagarla.
[5:27] Allora, il Radix Tree è una struttura dati veramente molto peculiare perché è
[5:33] un albero ordinato, eppure il tempo d'accesso è di O(1), perché sostanzialmente ogni nodo
[5:42] rappresenta un carattere delle nostre chiavi. E quindi è sostanzialmente una struttura dati,
[5:49] un dizionario ordinato in maniera lessicografica, quindi si può iterare in maniera lessicografica
[5:56] dal più piccolo elemento al più grande. Si possono fare i seek con l'iteratore maggiore uguale,
[6:01] minore uguale, o l'elemento maggiore o minore. È meraviglioso. E in più utilizza il fatto che
[6:07] quando praticamente non ci sono nodi in una chiave a metà — quindi se io ho
[6:17] poi ho
[6:25] un macronodo che ha tutta la stringa comune, altrimenti si utilizzerebbe troppa memoria.
[6:33] Ecco, il problema che aveva la mia implementazione è che poi alla fine le foglie di questo albero venivano sempre allocate come un nodo a sé dicendo
[6:46] questo è il valore per esempio della chiave Roma
[6:52] aveva un unico figlio che poi era associato al valore. Ma io mi sono accorto di una cosa:
[7:00] in questo header del nodo avevo un campo size che era di 27 bit, se ricordo bene,
[7:09] che erano troppi e ne potevo utilizzare benissimo solo 16. A questo punto mi rimanevano abbastanza
[7:20] bit per poter significare, nei puntatori che ho ai miei nodi figli, se in realtà quello
[7:32] era un puntatore a un nodo o se è un puntatore direttamente al valore associato alla chiave.
[7:38] Quindi io posso evitare questi nodi che sono solo foglie comprimendoli dietro il macronodo in una
[7:46] bitmap che mi dice se in effetti il puntatore che dovrebbe essere il puntatore al figlio è
[7:53] solo il puntatore direttamente al valore che quel figlio dovrebbe contenere, perché non ho altre chiavi nella catena lessicografica che va oltre quel prefisso a cui ho una chiave.
[8:06] Ho chiesto quindi di fare questa... ho detto
[8:15] era già come dire good enough, e uno lascia per non scrivere il codice un sacco di ottimizzazioni sul piatto. Non fidatevi mai di quello che vi dice
[8:24] ma il problema non è mai scrivere il codice, sono idee
[8:30] non realizzo perché non ho tempo infinito per fare l'implementazione di quelle cose e poi debuggarle, essere sicuro che funzionano per bene, scrivere i test, eccetera. Quindi minchiate col botto.
[8:42] Ho chiesto di fare sta roba qui a Claude Code. Tu dici
[8:54] e molti usano Claude Code per questo motivo qui, perché ti risponde prima e per fare certe cose
[9:00] è più capace di utilizzare... è più agile nell'utilizzare i tool di sistema eccetera, quindi ti dà quella sensazione di falsa sicurezza. Poi però spesso fa cazzate.
[9:13] Ma dopo che l'ho lasciato frullare da solo per un'ora, sono tornato nel terminale, ho guardato che aveva fatto, non riuscivo a risolvere un crash,
[9:22] ho aperto i file. Era una cazzata bestiale. Praticamente quando inseriva un nodo, andava
[9:29] quindi poi a spostare la bitmap, faceva lo shift senza andare a pulire i bit che andavano oltre. Quindi è una questione proprio di riporto dei bitmap quando bisognava inserire un nodo a metà.
[9:42] Ho aperto Codex, ha identificato il problema, ha confermato che il problema fosse quello in un millisecondo, lo ha fixato, ha aggiustato altre cose,
[9:52] ha trovato altre ottimizzazioni che Claude non aveva trovato e così via.
[9:58] Quindi è vero che in questo momento Claude Code è un software che consente in molti
[10:05] domini di velocizzare il lavoro, ma non credete che per quanto tutti nell'industria si straccino
[10:11] le vesti e si profondano in inni a Claude Code, sia il migliore in questo momento.
[10:20] E ve lo dico perché ho provato anche su vari progetti molto lontani dalla programmazione che faccio io. E siccome una di queste cose la rilascerò anonimamente,
[10:28] non saprà mai nessuno che sono stato io, non ve ne posso parlare, ma sappiate che anche in
[10:33] campi molto diversi Codex è in assoluto il coding agent più forte per la programmazione automatica.