FYI.

This story is over 5 years old.

Tecnologia

Cinema e coding: qual è il linguaggio di programmazione più adatto?

Gli Oscar dei linguaggi di programmazione su grande schermo.

Il Python è il linguaggio giusto per il grande schermo? Il redditor infintie_3ntropy ha trovato questo cameo del linguaggio nel film Ex Machina, e ha raccontato che "Quando l'ho visto la prima volta mi ha dato parecchio fastidio, visto che non c'entrava niente con quello che stava facendo il personaggio. Ma quando l'ho rivisto con più calma ho scoperto questo…"

Il codice era:

BlueBook code decryption import sys def sieve(n): x = [1] * n x[1] = 0 for i in range(2,n/2): j = 2 * i while j < n: x[j]=0 j = j+i return x def prime(n,x): i = 1 j = 1 while j <= n: if x[i] == 1: j = j + 1 i = i + 1 return i - 1 x=sieve(10000) code = [1206,301,384,5] key =[1,1,2,2,] sys.stdout.write("".join(chr(i) for i in [73,83,66,78,32,61,32])) for i in range (0,4): sys.stdout.write(str(prime(code[i],x)-key[i])) print

Pubblicità

Lo screen proveniente dal film:

Infintie_3ntropy ha compilato la stringa di codice e ha ottenuto il testo "ISBN = 9780199226559," che fa riferimento al libro di Murray Shanahn 'Embodiment and the inner life: Cognition and Consciousness in the Space of Possible Minds.' Ok, c'entra col film. Credo—perché non l'ho ancora visto. Sicuramente c'entra più che qualunque altra stringa di codice apparsa nella storia del cinema. Tutto questo mi ha fatto pensare: che cosa rende un linguaggio di programmazione adatto per il cinema? (Sì, tutti i linguaggi di programmazione finiscono sugli schermi, ma avete capito che intendo) Dovrebbe sembrare tecnico, complesso, quasi indecifrabile. Giusto? Il punto fondamentale del Python (o almeno, una delle sue colonne portanti) è la necessità di essere pulito e minimale. Vuole sbarazzarsi di tutto il ciarpame sintattico degli altri linguaggi—parentesi quadre e graffe, punti e virgole—ma nel frattempo vuole mantenere le stesse potenzialità, ma con meno linee di codice. Conciso, elegante, intuitivo (ai nuovi programmatori, perlomeno). Quindi, anche se penso che Python possa interpretare questo ruolo, non penso sia il più adatto. L'hacking non è una materia semplice. Possiamo attingere al Tumblr Source Code in TV and Film—"immagini di codici per computer apparsi in TV e nei film e cosa significano davvero"—per avere un riferimento. È portato avanti da John Graham-Cummings, autore di The Geek Atlas: 128 Luoghi In Cui Scienza E Tecnologia Prendono Vita. Partiamo dal peggiore, l'HTML. In primis: benché sugli schermi sembri sempre il linguaggio di programmazione per eccellenza, nonché il più importante, non è un linguaggio di programmazione. È un linguaggio di formattazione, un codice che definisce l'estetica di un documento web e non ha nulla a che fare con la computazione software. Non è munito di una "verifica di Turing," che è più o meno la verifica base per qualunque linguaggio di programmazione, per assicurarsi che sappia computare qualunque algoritmo scritto in pseudocodice—lo pseudocodice è una sorta di linguaggio di programmazione in prosa. In ogni caso, i cinefili non dovrebbero essere troppo avvezzi alle verifiche di Turing (o perlomeno la maggior parte.) L'HTML è orribile da vedere. Lo screen qui sotto (da CSI: Cyber) ti fa capire più o meno com'è l'HTML. Se ci metti in mezzo anche del PHP e del Javascript, si salvi chi può.

Pubblicità

E invece il Javascript? Anche lui è un po' incasinato, almeno quando lo usano gli sviluppatori; spesso macchiato da decine di framework superflui. Perlomeno sembra un linguaggio di programmazione; buttaci dentro pure il jQuery e potrai ottenere stringhe come $(".cta").click(function(){}), che è un po' quello che si avrebbe se si chiedesse a qualcuno di creare un finto linguaggio di programmazione da mettere in un film sugli hacker.

Lo screen qui sopra è preso da Godzilla, e Graham-Cummings ne spiega le origini: "Sembra essere del codice esempio di Google Maps, dove al posto di Google c'è scritto MONARCH."

Mi dispiace non riuscire a trovare uno screen migliore del viaggio Halt and Catch Fire nel mondo dell'Assembly, ma qui si vede qualcosa. Il codice sembra essere stato preso dal source di questo programma—grazie a pcjs.org—ed è scritto in Assembly, che in poche parole si tratta del linguaggio di programmazione più ostico di tutti. È il linguaggio usato da altri linguaggi di livello più alto per tradurre le informazioni di modo che siano comunicabili all'architettura x86 Intel. Il programma rappresentato non ha niente a che fare con qualche hack per chip BIOS (ciò che volevano fare in Halt), invece è uno strumento per il sistema operativo DOS. Ma la domanda rimane la stessa: fa la sua parte? Direi di sì, in una certa maniera. È un linguaggio molto diverso dagli altri e aggiunge un altro velo di mistero al mondo della programmazione. È l'esatto opposto del Javascript; non è un linguaggio da tutti i giorni, ma fa il suo dovere.

Anche il Lisp appare ogni tanto su Source Code, e sembra funzionare bene. Parte del problema è da ritrovarsi non tanto nel codice stesso ma nel modo in cui è presentato. Se io vedessi il codice Lisp qui opra con Sublime Text 3 sarebbe una figata piena di colori e perfettamente ordinata. Sto scrivendo questo articolo in Markdown su Sublime, e benché il Markdown sia derivato dall'HTML ciò che appare sullo schermo è un'accozzaglia di stringhe da vero hacker. Quindi? Ovviamente ci sono molti altri linguaggi e sicuramente ci sarà una risposta migliore alla mia domanda. Secondo me la risposta giusta è… C. Il C è cavallo di battaglia di qualunque programmatore, è ricco di meta-linguaggio ed è abbastanza criptico. Non esiste hacking o Python senza C.