Come calcolare la data della Pasqua

Domenica scorsa è stata Pasqua. Ma come si sapeva che proprio quel giorno era Pasqua? No, non venitemi a dire “la prima domenica dopo il primo plenilunio di primavera”, perché comincio a chiedervi “quando comincia la primavera?” (astronomicamente per esempio in questi anni cade il 20 marzo, e addirittura avremo degli anni in cui cadrà il 19 marzo) e “quando è domenica?” (ecclesiasticamente la domenica comincia al tramonto del sabato, con i primi vespri). A differenza degli islamici, almeno quelli sauditi, per cui boskovianamente “Ramadan comincia con prima falce di luna” (e quest’anno ci sono state due date diverse per l’inizio, quella astronomica e quella visuale), per i cristiani è necessario sapere già all’Epifania quando sarà Pasqua e quindi si è preparato tutto un armamentario di conteggi, con epatta e numero aureo, per avere la data sempre a disposizione. Ah, per definizione la primavera inizia il 21 marzo. Ma per fare questi conti occorre avere una serie di tabelle, e soprattutto tenere conto che l’approssimazione del ciclo di Metone, per cui 19 anni corrspondono esattamente a 235 mesi lunari, è per l’appunto un’approssimazione… oltre a incasinare il tutto passando al calendario gregoriano che segue sì più correttamente le stagioni ma complica parecchio i conti.

A questo punto entra in scena uno che i conti li sapeva fare sin troppo bene: Carl Friedrich Gauss. Il burbero genio aveva probabilmente qualche ora di svago e nel 1800 preparò un metodo che permette di calcolare a mente (d’accordo, se ti chiami Gauss…) la data della Pasqua per tutto un secolo; con il calendario giuliano in realtà il conto è perpetuo, mentre con quello gregoriano occorre imparare anche due numeri specifici per ciascun secolo. La buona notizia è che dal 1900 al 2099 quei due numeri restano identici, quindi per quanto ci riguarda il problema non si pone. Ma veniamo al conteggio, che richiede di usare l’aritmetica modulare, cioè il resto della divisione per un qualche numero intero. Dato un anno X, calcoliamo a = X mod 19, b = X mod 4, c = X mod 7; poi calcoliamo d = (19a + M) mod 30 ed e = (2b + 4c + 6d + N) mod 7. A questo punto sappiamo che Pasqua sarà il (22 + d + e) marzo, dove ovviamente il 32 marzo è il primo aprile e così via.

I più perspicaci di voi, cioè tutti, avranno notato che ho aggiunto altre due variabili, M e N. Nel calendario giuliano le cose erano semplici: valevano rispettivamente 15 e 5. Per il calendario gregoriano i loro valori cambiano di secolo in secolo: come dicevo sopra, però, dal 1900 al 2099 abbiamo M=24 e N=6. A questo punto possiamo fare la controprova: nel 2026 abbiamo a = 2026 mod 19 = 12, b = 2026 mod 4 = 2, c = 2026 mod 7 = 3, d = (19·12 + 24) mod 30 = 12 ed e = (2·2 + 4·3 + 6·12 + 5) mod 7 = 2. Infine 22+12+2 = 36, pertanto Pasqua è il “36 marzo” vale a dire il 5 aprile. Per il 2027 abbiamo a = 2027 mod 19 = 13, b = 2027 mod 4 = 3, c = 2027 mod 7 = 4, d = (19·13 + 24) mod 30 = 1 ed e = (2·3 + 4·4 + 6·1 + 5) mod 7 = 5, quindi Pasqua è il 22+1+5 cioè il 28 marzo. Per completezza aggiungo due eccezioni: se il conto dà 26 aprile allora Pasqua è il 19 aprile, mentre se dà 25 aprile con d = 28, e=6 e a=10 allora è il 18 aprile. Sempre per completezza, la prima formula di Gauss valeva solo dal 1700 al 1899; nel 1807 la generalizzò aggiungendo una formula per calcolare M e N e nel 1816 corresse un errore.

la distribuzione delle date della Pasqua Come ha fatto Gauss a trovare questa formula? Per una volta ce l’ha spiegato: la prima parte serve ad approssimare la posizione della luna e la seconda per aggiustare le cose secondo il computo ecclesiastico. Se siete persone amanti del rischio, Wikipedia in inglese ha la spiegazione… oppure vi leggete il testo originale in tedesco. Può infine essere divertente notare che secondo il calendario gregoriano le date della Pasqua si ripeterebbero ogni 5 milioni e 700000 anni, che la daa più frequente è il 19 aprile mentre quella meno probabile è il 22 marzo che capita meno di una volta ogni 200 anni. Pensate solo a cosa succederebbe se si fissasse una volta per tutte la data della Pasqua, tipo alla seconda domenica di aprile: tutto questo lavoro per nulla!

La voce su di me in Wikipedia

la voce su di me in it.wiki Sono più di vent’anni che edito Wikipedia. Ma come sapete faccio tante cose, e ogni tanto qualcuno pensa che almeno Wikipedia in lingua italiana dovrebbe avere una voce su di me. (C’è da una vita un Maurizio Codogno, ma è un ex calciatore e allenatore mio omonimo). Io non sono per nulla d’accordo, e ho cancellato più volte la voce su di me: l’ultima lo scorso settembre. Probabilmente sono uno dei pochi che di avere una voce biografica non se ne fa nulla: tanto c’è già fin troppa roba che ho scritto e di me si può sapere praticamente tutto.

Purtroppo però la scorsa settimana un utente di Wikipedia ha scoperto che io sono automaticamente “enciclopedico”, vale a dire rilevante, secondo le regole di Wikipedia, in qualità di scrittore. Per la precisione uno scrittore è ritenuto enciclopedico se lo è almeno un suo libro, e un libro è enciclopedico se è stato tradotto almeno in tre lingue, cosa che è vera per Matematica in pausa caffè. A questo punto non posso fare nulla: ok, potrei far cancellare la voce per minacce legali, ma non mi sembra il caso. Quindi la voce c’è. (Quella nel link è la versione di venerdì scorso, un giorno dopo la (ri)creazione e la segnalazione delle traduzioni di Matematica in pausa caffè; nel frattempo è stata aggiunta una mia foto)

Peccato che per fare una cosa così tanto valeva non farla, a partire dalla definizione di “scrittore” nel titolo. Ovvio, bisogna specificare in qualche modo di quale Maurizio Codogno si parla, e la mia rilevanza deriva da un libro che ho scritto: ma direi che non sono uno scrittore, al più un divulgatore. Ma tutto il corpo della voce non funziona. Ecco alcuni esempi:

  • Del resto quell’elenco è sbagliato, c’è una lingua per cui sono stati venduti i diritti di traduzione ma non è mai stato tradotto il testo.
  • Anche senza considerare i libri autopubblicati – di cui non vedrei il problema, essendo un di più irrilevante per l’enciclopedicità ma comunque esistente – mancano vari testi che ho pubblicato con case editrici vere (e per cui non ho pagato, anzi…)
  • Se guardate le altre biografie di scrittori contemporanei (quelli veri) noterete come la bibliografia non si limita a mettere titolo e anno di pubblicazione, ma aggiunge editore e ISBN. Qui niente.
  • La “biografia” scritta così è una barzelletta: a parte tutte le cose interessanti che ho fatto nella mia vita e che a questo punto si potevano anche citare, mancano almeno tre cose che ho fatto come scrittore.
  • Mancano i link ad altre parti del mondo wiki dove c’è roba mia. (Non di sola Wikipedia vive l’uomo.) I cosiddetti “interwiki” sono alla base di un’enciclopedia multimediale.

Ieri pomeriggio era finalmente stato tolto il “matematico” nella mia descrizione: che avrei fatto di rilevante in matematica? Ieri sera è stato rimesso, con la motivazione che il famigerato testo enciclopedico è di matematica. Lasciamo stare.

Burocraticamente potrei editare io stesso la voce e correggerla: basta che io indichi di essere in conflitto di interessi (e ovviamente non faccia modifiche promozionali), e usi fonti terze e non il mio sito. Il punto è che io per principio non intendo toccare quella voce che ritengo assolutamente inutile né dire quali sono le cose che mancano e quali errori ci sono: è tutto materiale che si può trovare in rete, mica sono segreti di stato. Questo è del resto uno dei più grandi guai di Wikipedia, soprattutto con le biografie di persone viventi. Anche ammettendo che una voce non venga scritta con l’unico scopo di fare o farsi pubblicità, quello che sembra l’unica cosa importante è dire “ho messo una nuova voce nell’enciclopedia!” senza darsi la pena di renderla almeno un minimo decente. Non lo si vede molto spesso perché in genere il lavoro è fatto alla rovescia, partendo da un testo prolisso e promozionale a cui qualche anima pia toglie le parti inutili e dannose: ma togliere è molto più facile che aggiungere, dato che nel secondo caso bisogna fare delle ricerche per recuperare il materiale e non è detto che la cosa sia banale. Controprova? La mia enciclopedicità è legata a quella di Matematica in pausa caffè. C’è una voce sul libro? Ovviamente no, per farla bisognerebbe come minimo cercare i dati e qualche recensione, se proprio non lo si vuole leggere. Avete presente la fatica necessaria?

PS: Non ho nessuna pregiudiziale contro l’essere presente nei siti dei progetti wiki. Per dare un’idea, quando riottenni i diritti di Matematica in relax chiesi a chi frequentava Wikisource se fossero interessati ad avere il testo: ricevuta risposta positiva (essendo il libro stato pubblicato da un editore non a pagamento esso era idoneo) ho provveduto a caricarlo e quindi da qualche anno c’è una voce su di me in Wikisource. Ma lì appunto la mia presenza come autore ha un senso: su Wikipedia, no.

Simon Willison e la programmazione agentica

Simon Willison è un programmatore con venticinque anni di esperienza sul campo, ed è stato ospite del podcast di Lenny Rachitsky in una puntata dal titolo “An AI state of the union: We’ve passed the inflection point & dark factories are coming”. Qui potete trovare una trascrizione dei punti principali che ha trattato nel podcast. Io mi limito a parlare di quelli che mi interessano di più, considerando che non programmo più da una vita né ho in progetto di
riprendere a farlo.

Innanzitutto secondo Willison GPT 5.1 e Claude Opus 4.5, anche se non hanno portato chissà quali evoluzioni, hanno superato la soglia in cui si può chiedere loro di scrivere un’app che faccia una certa cosa, e si può assumere che non faccia errori marchiani. Questo ovviamente cambia molto le cose sia dal punto di vista della prototipazione, che diventa molto più rapida, ma soprattutto dal punto di vista dello spostamento del collo di bottiglia dalla produzione del codice al suo test. È vero che possiamo farci generare quanti casi di test vogliamo, ma comunque non possiamo permetterci il lusso di usare del software generato da un’IA senza appunto testarlo: le abilità richieste ai programmatori sono insomma diverse. Willinson pensa anche che gli ingegneri software saranno – volenti o nolenti – i leader della trasformazione portata dall’IA, per la banale ragione che paradossalmente il codice è più facile da valutare di tante altre cose, perché o funziona o non funziona. (Vabbè, gli avvocati hanno messo su una base dati delle allucinazioni IA che ha già più di 1000 voci, ma lì si gioca facile).

Quello che mi ha lasciato stupito è scoprire che ChatGPT e Claude sono ormai in grado di costruire una UI convicente per qualunque cosa uno descriva. Può darsi che sia una qualcosa di relativamente semplice se si ha a disposizione una grande quantità di materiale di adddestramento – non ho mai preparato UI in vita mia. E in fin dei conti le interfacce utente dovrebbero essere il più standard possibile per essere sufficientemente intuitive: però la cosa mi disturba un po’. Più comprensibile che si possano usare gli agenti per cercare bachi di sicurezza (pun not intended), ma del resto ne avevo già sentito parlare. Preparatevi a una crescita del numero di attacchi informatici.

In generale Willison è un ottimista. Non di quelli con i paraocchi: basta vedere come si è inventato un benchmark (disegnare in svg un pellicano che va in bicicletta) molto curioso e che per un bel po’ di tempo ha portato a risultati esilaranti. Però per esempio afferma che i giornalisti sono bravi a capire quando le loro fonti sono inaffidabili, e quindi non dovrebbero avere troppi problemi ad adeguarsi alle “fonti IA”. Non so se funzionerà davvero così: però la sua capacità di fornire informazioni è sicuramente utile per chi come me è molto lontano da quella parte del mondo IA.

Quizzino della domenica: Percorso equilibrato

794 – configurazioni

Riuscite ad andare da START a FINISH muovendovi solo orizzontalmente oppure verticalmente, e passando sullo stesso numero di caselle di ciascun colore (o ciascun segno, se siete daltonici)?

lo schema: un quadrato SBBR - RRRG - BBBr - GGRF dove S è lo start, F il finish, e R G B sono rispettivamente rosso, giallo, blu
(trovate un aiutino sul mio sito, alla pagina https://xmau.com/quizzini/p794.html; la risposta verrà postata lì il prossimo mercoledì. Problema dalla newsletter di Chris Smith)

La matematica che conta (libro)

copertinaDopo avere scritto Matematica fuori dalle regole, Daniele Gouthier torna a parlare di matematica con questo libro che ha come scopo quello di mostrare a tutti che capire le cose studiate a scuola non è poi cosi difficile se ci si mette con calma, senza essere costretti a imparare a memoria chissà che cosa ma applicando solo un po’ di regole di base. Il modo che Daniele usa per spiegare i vari temi lascia trasparire la tranquillità di chi non deve dimostrare (ehm…) nulla ma semplicemente ama le cose che sta raccontando… compresi i siparietti personali nei riquadri “I casi della vita” che mostrano la matematica all’opera. (Ci sono anche altri riquadri: “Le gran belle idee”, fatti matematici che danno appunto un’idea di cos’è in pratica la matematica, e “Intermezzi giocosi”, che di solito terminano i capitoli. Credo che il libro possa davvero essere utile a chi dice che non ha mai capito la matematica: non diventerà una medaglia Fields, ma alla fine si dovrebbe almeno sentire un po’ più a suo agio.

Daniele Gouthier, La matematica che conta : Farsi aiutare dai numeri nella vita di tutti i giorni, Feltrinelli 2026, pag. 256, € 18, ISBN 9788807175404 – come Affiliato Amazon, se acquistate il libro dal link Bezos mi dà qualche centesimo dei suoi utili
Voto: 5/5

“da consumarsi preferibilmente”

Noi usiamo da anni i gasatori Sodastream, principalmente per ridurre la quantità di plastica (gasare l’acqua così ci costa più che comprare le bottiglie…). Da alcuni mesi la plastica intorno al tappo indica “da consumarsi preferibilmente entro”. Ora, la bombola contiene anidride carbonica e basta; la bombola è metallica, per ovvie ragioni legate alla pressione del gas, ed è dura che la CO2 venga contaminata. Potrei capire che ci sia qualche microperdita e magari dopo un po’ d’anni la bottiglia non gasa più, ma che ha tutto questo a che fare con la dicitura usata per il cibo?

Un paio di cose su Wikipedia

È un po’ che non scrivevo di Wikipedia: il tempo è poco e le cose da fare sono molte. Dovrei anche parlare della chiusura di Wikinews, ma sarà per un’altra volta. Per il momento segnalo due articoli piuttosto diversi ma che fanno capire come 25 anni sono un bel peso per l’enciclopedia.

Il primo articolo, pubblicato su Link, è in realtà fuorviante e lo segnalo solo perché è un classico esempio di una traduzione che non ha davvero molto senso. È vero che la Wikipedia in lingua inglese ha voci francamente bizzarre per non dire peggio, ma ogni edizione linguistica ha le sue regole interne e in quella italiana queste voci sono generalmente eliminate, così come quelle di eventi che probabilmente tra una settimana saranno dimenticati. Questo non vuol dire che non ci siano voci che uno non si aspetterebbe in un’enciclopedia, come per esempio “igiene anale” (la voce sull’orientamento dei rotoli di carta igienica è stata assorbita da quella sulla carta igienica su Wikipedia in lingua italiana, ma rimane in quella in inglese e in altre 19 edizioni linguistiche). Diciamo che molto spesso gli articoli di costume su Wikipedia sono semplici traduzioni e quindi essenzialmente anglocentrici.

Più interessante quest’altro articolo di Dariusz Jemielniak (uno che di Wikipedia ne sa, oltre che essere un accademico.) Il suo punto di vista è che Wikipedia è nata venticinque anni fa da nerd ventenni, massimo trentenni (io avevo già passato i quaranta, ma si sa che sono anzyano) e ora ci sono sempre loro, diventati ormai cinquantenni e quindi pompieri da incendiari che erano. Tutte le modifiche proposte per “semplificare” fruizione e contribuzione a Wikipedia sono così state bloccate, e questo sarebbe un male. Ora, posso assicurarvi che la prima versione del Visual Editor che si voleva rendere obbligatoria per modificare le voci era una cosa del tutto inusabile. (Ora funziona abbastanza bene, ma sono passati tredici anni…) Dal mio punto di vista il problema è appunto che le nuove feature introdotte dagli sviluppatori sono spesso in versione alfa, e sono introdotte nella speranza che vengano debuggate “sul campo”: ma gli editor abituali non hanno voglia di perdere tempo, e gli utenti casuali si trovano ancora più persi. Più interessante l’altro punto portato da Dariusz, e che riguarda direttamente i lettori. Visto che ormai le nuove generazioni non sono in grado di leggere direttamente un testo complesso ma hanno bisogno di un riassuntino, così come i capi e capetti, l’idea della Wikimedia Foundation era stata quella di creare i “Simple Article Summaries”, generati per mezzo dell’IA. La comunità anglofona ha avuto una reazione contraria così violenta che dopo un giorno la feature è stata eliminata.

Parliamone un po’. Sul fatto che un riassunto breve e semplice, almeno per le voci più lette, sarebbe utile penso che tutti siamo d’accordo. E del resto la Wikipedia delle origini era molto più ruspante. E possiamo anche immaginare che un LLM bene addestrato non farebbe molte allucinazioni e soprattutto possiamo sperare che userebbe solo il testo della voce per fare il riassunto, e non aggiungerebbe altre informazioni prese chissà dove. Ma siamo sicuro di volere passare a un modello IA, quando il valore aggiunto di Wikipedia è che nel bene o nel male il materiale è generato da utenti reali? Io potrei al più accettare un pulsante che ti porti fuori da Wikipedia (anche se su un server della Wikimedia Foundation) e mi creasse lì il riassunto: ma voglio che due cose essenzialmente diverse siano in posti essenzialmente diversi. Sono anch’io un vecchio bacucco? Probabile. Ma non ce lo ordina il dottore di usare Wikipedia: possiamo sempre andare da Elonio e dalla sua Grokipedia, se proprio vogliamo essere moderni.

I codici di Golay

La teoria dei codici a correzione di errore è molto ampia, perché ci sono vari tipi di errore possibile quando viene trasmessa una codifica (diciamo binaria) del dato, e il valore a priori della probabilità di un errore fa scegliere un metodo rispetto a un altro. Per esempio, i primi codici ASCII erano a 7 bit in modo da usare l’ottavo come codice di parità: in questo modo ci si poteva accorgere di un singolo errore, anche se non si sapeva su quale bit, e chiedere che il carattere venisse ritrasmesso. Naturalmente già quand’ero ragazzo io non valeva più la pena di testare per un errore la cui probabilità era infima, e così si passò alle codifiche che usavano tutti e otto i bit.

Ma cosa succede quando arrivano i segnali da una sonda spaziale? Come potete immaginare, il tasso di errore è molto più alto, e soprattutto farsi rispedire i dati non è in genere un’opzione usabile. Servono quindi altri tipi di codice: quello che per esempio è stato usato sulle sonde Voyager 1 e Voyager 2, che non avevano molta memoria a disposizione e quindi dovevano mandare subito via i dati ottenuti, è il codice di Golay. Esso trasforma un insieme di 12 bit in uno da 24. Raddoppiamo insomma il materiale da spedire: però se mandassimo due copie identiche potremmo al più accorgerci che c’è qualche errore, mentre in questo modo possiamo ricostruire qual era il messaggio originale se tra quei bit ce ne sono fino a tre sbagliati, e se ce ne sono quattro possiamo comunque sapere che c’è stato un errore. (Con più di quattro errori sbagliamo proprio a ricavare il messaggio originale, ma se ci sono così tanti errori possiamo fare davvero poco, a meno di creare codici enormi)

la matrice computazionale per il codice di Golay

codice di Golay (immagine di Parcly Taxel, da Wikimedia Commons)

Come funziona in pratica un codice di Golay? Si prendono i bit di input a dodici per volta, si costruisce un vettore (a dodici elementi) e lo si moltiplica per la matrice 12×24 mostrata qui sopra, ottenendo un nuovo vettore a 24 elementi che è quello che spediamo. (La moltiplicazione è binaria, il che significa che il risultato della moltiplicazione è da prendere modulo 2.) La cosa bella è che se prendiamo due qualunque tra i 4096 possibili vettori di input di 12 elementi e consideriamo gli output corrispondenti possiamo essere certi che ci saranno almeno otto bit diversi. Questa misura di diversità è la distanza di Hamming: come dicevo sopra, se l’output ci è arrivato corrotto per al massimo tre bit ci sarà un unico codice tra i 4096 di output per cui la distanza di Hamming è al massimo 3, e che è dunque quello effettivamente spedito: con quattro bit errati sappiamo che c’è stato un errore, ma non siamo in grado di scegliere tra i due codici vicini.

Si può persino fare (leggermente) meglio. L’ultimo bit dell’output è semplicemente un controllo di parità: se lo eliminiamo ci resta un codice che ha vettori di 23 but come output ed è un codice perfetto, nel senso che se associamo a ciascun codice di output tutti quelli che hanno distanza da lui al massimo 3 completiamo tutto lo spazio dei possibili 2^23 vettori di output. I codici perfetti sono piuttosto rari: il fatto che Golay ne riuscì a trovare uno anche abbastanza complicato nel 1949 la dice lunga sulla sua abilità.

Un’ultima curiosità: John D. Cook ha segnalato come Golay abbia anche ideato un codice ternario, dove i valori dei “trit” possono essere 0, 1, 2 (o −1, se lo volete bilanciato: tanto le operazioni in base 3 sono le stesse). In questo caso il codice esteso con il bit di parità trasforma sei trit in dodici, che hanno una distanza almeno 6 tra loro, mentre quello perfetto li trasforma in undici trit, che hanno una distanza di almeno 5. Peccato che non abbiamo computer ternari…