Come Super Mario, Magic: The Gathering e PowerPoint sono supercomputer low-key
Nel 1999, The Matrix , la vita come la conosciamo è in realtà un'astrazione della realtà virtuale; una raccolta di zeri ben modellati e uno che si aggiunge a una simulazione assolutamente convincente del mondo reale. Sapere come manipolare questo codice – come Morpheus, Trinity, Neo e il resto della pelle del film – i bravi ragazzi sono in grado – permette loro di fare tutto ciò che vogliono: dal lancio di folli mosse di kung fu all'arresto di proiettili in volo ai cucchiai di piegatura con la loro mente o saltare alti edifici in un unico limite. In breve, consente loro di riutilizzare il calcolo di Matrix per quasi tutte le applicazioni che possono immaginare.
Diversi anni fa, un informatico allora ventenne di nome Seth Hendrickson realizzò una stupefacente (e non del tutto dissimile) dimostrazione usando il classico platform a scorrimento laterale di Nintendo del 1990, Super Mario World . Come molti dei membri più geek della community di Super Mario , Hendrickson – che è conosciuto come " SethBling " nel suo famoso canale YouTube – era affascinato dalla possibilità di spingere il gioco oltre i limiti immaginati dai suoi creatori.
Uno dei modi per farlo era glitch sua console Super Nintendo in istruzioni di lettura dalla RAM del sistema invece della cartuccia di gioco originale. Poiché la RAM viene utilizzata per tracciare tutte le parti dello stato del gioco, manipolandolo sapientemente consente di impostare stati di gioco completamente nuovi.
Piuttosto che farlo attraverso la tradizionale codifica basata su testo, ciò può essere ottenuto giocando il gioco stesso; utilizzando elementi di gameplay come Mario che depositano shell per far sì che il processore legga determinate istruzioni da una sezione di RAM progettata per tenere traccia del posizionamento di queste shell. Poiché queste coordinate sono memorizzate come una serie di byte, ciò consente all'hacker (Hendrickson in questo caso) di controllare il funzionamento del processore del gioco per alcuni cicli di clock. Gli permette di afferrare il codice del gioco per fare quello che vuole.
Confuso? Molto probabilmente – ma prendi la parola di Hendrickson che funziona. Dopo aver visto molti esempi limitati di questa "esecuzione arbitraria del codice" in azione, Hendrickson ebbe un'idea. "L'ingegnere in me sapeva che se si poteva ingannare il processore per eseguire un po 'di codice, allora si poteva ingannarlo nel fare girare un sacco di codice", ha detto a Digital Trends.
Hendrickson ha collaborato con un altro membro della community, noto come "p4plus2". Insieme hanno dimostrato che è possibile utilizzare questa tecnica per scrivere un gioco completamente nuovo all'interno dell'architettura Super Mario per cui è stato progettato, beh, Super Mario .
Hanno scelto Flappy Bird , il gioco mobile follemente avvincente che ha goduto di una breve ondata di notorietà nel 2014. "[P4plus2] ha scritto tutto il codice che è finito nel programma Flappy Bird , e ho fatto la maggior parte del lavoro spiegando i dettagli della procedura, e la pratica per essere effettivamente in grado di eseguirlo ", ha spiegato Hendrickson.
Ripetendo una serie di azioni all'interno del gioco, come una ballerina che creava una storia attraverso il movimento, ha iniettato 331 byte di codice di Flappy Bird nella RAM inutilizzata di Super Mario World , quindi ha richiesto al processore di eseguire questi byte come istruzioni del processore. Quando, dopo "pianificazione meticolosa" e "molte simulazioni", aveva finito, ha trasmesso l'intera dimostrazione a 12.000 spettatori stupefatti su Twitch. Rimane il maggior numero di spettatori concorrenti che Hendrickson abbia mai avuto.
Raggiungere la completezza di Turing
"Benvenuto nel deserto del reale", dice Morpheus in The Matrix dopo che ha strappato via la realtà simulata del mondo virtuale e gli ha mostrato la manipolazione che si trova sotto. Nel caso di Hendrickson, la frase potrebbe essere questa: "Benvenuto nel mondo di Turing accidentalmente completo".
Raggiungere la completezza di Turing suona come uno stato di Zen per i programmatori di computer. In effetti, si riferisce a una caratteristica di un sistema di calcolo – una "macchina di Turing universale" – che è in grado di calcolare qualsiasi cosa, incluso un altro computer in qualche modo. Hypothesized nel 1936 da Alan Turing , il padre della moderna informatica, il suo concetto di una macchina di Turing espose quello che oggi pensiamo come un computer general-purpose.
Una macchina di Turing deve essere in grado di eseguire il calcolo cambiando stati, leggendo e scrivendo su una qualche forma di "nastro", spostando detta "testina" a destra o sinistra e emettendo una risposta finale sotto forma di "accetta" o "rifiuto". . "Ogni algoritmo noto può essere convertito in una macchina di Turing e, di conseguenza, può essere implementato in qualsiasi sistema completo di Turing.
Un sistema accidentale di Turing completo è un sistema in grado di fare tutto questo senza mai avere un significato. Un sistema accidentale Turing completo potrebbe essere progettato, per esempio, per guidare un piccolo idraulico italiano attraverso i livelli di gioco per salvare una principessa, ma si scopre che può anche essere fatto per calcolare le cifre di pi, risolvere i puzzle di sudoku, eseguire Microsoft Windows, o quasi tutto il resto. È l'equivalente di un comune cittadino, che vive la vita come un drone da ufficio pieno di eventi, che improvvisamente scopre che lui o lei è più di quello che pensano. Sono Neo. Sono l'unico.
"Mi piacciono sorprendentemente [le dimostrazioni di Turing complete] perché sono spesso una dimostrazione di ingegno considerevole", ha dichiarato Gwern Branwen, che mantiene un archivio abbastanza completo di dimostrazioni complete di Turing per caso online. "È importante," continuò, "perché, se uno è intelligente, fornisce una via di fuga da un sistema che è piccolo, prevedibile, controllabile e sicuro – a uno che potrebbe fare qualsiasi cosa."
Di più da dove viene
Dato che Branwen ospita un intero archivio di sistemi completi di Turing accidentalmente, non sorprende sapere che ci sono molti altri esempi
di Turing accidentalmente completo. Il gioco Pokémon Giallo termina con Turing. Così è Minecraft , il classico time-waster di Windows. Così è Excel . E molto, molto di più.
"Nella scuola elementare, ho realizzato giochi in PowerPoint per divertimento", ha dichiarato Tom Wildenhaint , uno studente universitario che studia Informatica presso la Carnegie Mellon University. "Inizialmente, mi sono attenuto a cose semplici come quiz a scelta multipla e labirinti, ma gradualmente ho realizzato giochi con una logica più complicata. In realtà ho utilizzato PowerPoint per una tonnellata di altre attività non correlate alla presentazione: modifica delle immagini, animazione 2D e web design. Al liceo, era una specie di barzelletta. I miei amici mi direbbero di usare "software reale". "
Al college, Wildenhaint ha seguito un corso di informatica teorica dove ha imparato a conoscere le macchine di Turing. "Ho pensato, 'scommetto che PowerPoint potrebbe farlo," ha detto. Si scopre che potrebbe, come ha dimostrato in una dimostrazione effettuata per una conferenza di ricerca sulla barzelletta del 1 ° aprile Carnegie Mellon ospita ogni anno. Questa finta conferenza mostra "realizzazioni di scherzi di idee serie e realizzazioni serie di idee di scherzo". "Una macchina di Turing PowerPoint sembrava perfetta," ricorda Wildenhaint.
L'ultimo esempio di un sistema completo di Turing accidentalmente? Il gioco di carte geniale preferito di tutti : Magic: The Gathering . "Ero su una bacheca di messaggi quando qualcuno ha chiesto se Magic: The Gathering è stato completato da Turing", ha detto Alex Churchill, uno sviluppatore di giochi da tavolo e programmatore. "Ho pensato: cosa vorrebbe dire?"
Cue diversi anni di ricerca interessata e un recente articolo che dimostra in modo convincente l'idea.
Un distintivo d'onore geniale
Come suggerito dagli esempi sopra riportati, non mancano in modo accidentale Turing pezzi completi di software e giochi pronti e in attesa di essere scoperti. Quindi, che cosa dovresti cercare esattamente quando si tratta di un sistema di Turing accidentalmente completo? Come scavare tra vecchie e polverose reliquie in un attico, ci sono alcuni suggerimenti che aiuteranno gli oratori del tesoro a ordinare veri artefatti dalla spazzatura.
"Molti casi di scoperta della completezza di Turing sembrano consistere semplicemente nel notare che un primitivo in un sistema è un po 'troppo potente o flessibile", ha detto Branwen. "Ad esempio, se la logica booleana può essere implementata, questo è un segno che potrebbe essere più possibile [che può] trasformare i circuiti booleani in logica circuitale completa per una macchina di Turing. Sostituzioni, definizioni e abbreviazioni, espressioni regolari o qualsiasi altro tipo di funzionalità "cerca e sostituisci" è un'altra bandiera rossa, poiché suggeriscono che un automa cellulare o un sistema di tag sia in agguato. Questo si applica a tutto ciò che può cambiare stato in base a "vicini", come una cella di foglio di calcolo o [anche] un pixel. "
Secondo Alex Churchill, quando si tratta di giochi da tavolo, i candidati includono giochi che consentono un numero illimitato di turni o azioni, sono in grado di memorizzare almeno un numero intero fino a una dimensione senza limiti (che esclude i giochi in cui le risorse sono limitate) , fornire la possibilità che azioni o eventi si incatenano o si innescano a vicenda e contengono un mezzo per controllare o programmare quali eventi determinano il verificarsi di altri eventi.
La maggior parte delle volte, scoprire la completezza di Turing accidentale è più un distintivo d'onore geniale che qualcosa con un'applicazione immediata. Per tornare ancora una volta alla nostra analogia con Matrix , è più l'equivalente del piegamento mentale del cucchiaio come un trucco del dopo cena che non del tempo distruttivo progettato per abbattere l'ordine esistente. In parole povere, con veri e propri computer generici in pronta consegna, non è imminente la necessità di creare la nostra versione non elettronica utilizzando i mazzi di carte Magic: The Gathering .
Il problema con Turing?
Ma ci sono ancora dei rischi. Essere in grado di riappropriarsi degli strumenti ordinari per scopi straordinari ha potenziali svantaggi. Non tendiamo a pensare, ad esempio, a un file MS Word come a un programma in grado di fare altro che aiutarci a scrivere documenti di testo. Abbiamo un'idea fissa di cosa sia il software – e, cosa più importante, che cosa faccia – e questo è a nostro discapito.
La completezza di Turing mette in luce il fatto che il calcolo non è qualcosa di esoterico che esiste solo nei linguaggi di programmazione o nei computer accuratamente impostati per l'attività. Se un gioco di carte fantasy può contenere i segreti del calcolo, allora la completezza di Turing può risiedere in qualsiasi sistema ragionevolmente complesso, a meno che non sia attivamente impedito di farlo.
"Il fatto che queste dimostrazioni sorprendano è di per sé una dimostrazione della nostra mancanza di immaginazione e comprensione dei computer, della sicurezza informatica e dell'intelligenza artificiale", ha affermato Branwen. "Facciamo finta che stiamo eseguendo programmi su queste semplici macchine astratte che fanno ciò che intuitivamente ci aspettiamo. Ma corrono su computer che sono bizzarri, e i nostri programmi si rivelano essere computer che sono ancora più bizzarri ".
Indica la vulnerabilità della sicurezza Spectre , che ha accresciuto la sua brutta testa nel 2018 e ha proceduto a scatenare il caos. "Lo spettro esiste da decenni in architetture di CPU che sono state esaminate con estrema attenzione per problemi di sicurezza, ma in qualche modo sono cadute in un punto morto umano collettivo", ha continuato Branwen. "Nessuno pensava all'esecuzione speculativa controllabile come a un" computer "che poteva essere" programmato ". Una volta che qualcuno se ne accorse – perché era un computer potente e, naturalmente, Turing completo – poteva essere usato in molti modi per attaccare roba. "
Branwen suggerisce che, in futuro, ci saranno più "macchine strane" che si presentano. "I sistemi sicuri devono essere costruiti con la costruzione", ha detto. "Una volta che il genio di [Completezza di Turing] è stato lasciato fuori dalla lampada, è difficile ingannarlo e rattoppare i
l collo della bottiglia."
Per ora, però, almeno possiamo tutti unirci e stupirci di come una coppia di intrepidi programmatori di computer abbia codificato una versione di Flappy Bird all'interno di Super Mario World .