Molti appassionati di Star Wars potrebbero non essere a conoscenza di un dettaglio affascinante che lega l’universo della saga a concetti di programmazione reale. Contrariamente alla presenza esclusiva dell’alfabeto aurebesh per scrivere il “linguaggio basico galattico”, un’evidenza nell’iconica Morte Nera (con il suo Raggio della Morte) svela l’uso di un linguaggio di programmazione molto terrestre.
La Forza del coding: programmazione nascosta nella Morte Nera
La saga di Star Wars, nota anche per le sue battaglie di spada mai avvenute, nasconde anche dei piccoli segreti che collegano il suo universo fantascientifico alla realtà della programmazione. Uno di questi riguarda un momento preciso all’interno della Morte Nera, dove, se si osserva attentamente, è possibile notare sullo schermo di un computer un elenco di istruzioni di programmazione.
Sebbene l’alfabeto aurebesh (https://aurebesh.org/) domini come sistema di scrittura nel “linguaggio basico galattico” di Star Wars, la prima pellicola della serie presenta alcune eccezioni in alfabeto latino, o addirittura in inglese. In particolare, durante la scena del salvataggio di Leia, circa al minuto 1:11:00, si può intravedere dietro a C3PO e R2D2 un monitor che mostra un grafico accompagnato da una serie di lettere e numeri. La prima colonna di queste istruzioni elenca “THX 1138“, un omaggio al primo film di George Lucas, seguito da comandi come “JMP“, “BNE” ripetuto due volte, e “LDA“.
Nella seconda colonna, troviamo altre istruzioni brevi quali “BPL“, “BMI“, “BVC“, “BCC” e “BCS“. Queste sigle rappresentano comandi di un linguaggio di programmazione noto come assembler, in particolare quello usato dai computer Commodore 64.
Ma cosa significano questi codici? Perché non c’è un semplice print(“Ciao mondo”)? Le istruzioni mostrate sono comuni in questo linguaggio di programmazione e servono per:
- JMP (Jump): cambia il flusso del programma verso un’altra posizione specificata nella memoria.
- BNE (Branch if Not Equal): modifica il flusso se l’ultima operazione non ha prodotto uguaglianza, cioè se i valori confrontati sono diversi.
- LDA (Load Accumulator A): carica un valore nel registro accumulatore A, preparando il processore per calcoli o decisioni basate su quel valore.
- BPL (Branch if Plus), BMI (Branch if Minus), BVC (Branch if Overflow Clear), BCC (Branch if Carry Clear), BCS (Branch if Carry Set): queste istruzioni controllano il flusso del programma basandosi su risultati positivi o negativi, la presenza o assenza di un overflow o di un carry (un ‘trasporto’ in aritmetica).
La presenza di questo linguaggio all’interno di un film di Star Wars risulta un po’ un easter egg per gli appassionati di tecnologia ma è anche un ponte tra il nostro mondo e le galassie lontane, mostrando che la programmazione è una forza onnipresente, capace di unire mondi e realtà diverse.
A proposito: conoscevate il linguaggio di programmazione basato su emoji di uccelli?