Le Quine sono utili come qualcosa di più di un puzzle di programmazione?

9

Quine, che sono programmi che generano il proprio codice come parte o tutto il loro output sono una buona idea per un puzzle di programmazione. Tuttavia, hanno qualche utilità oltre a questo?

    
posta World Engineer 28.09.2011 - 19:03
fonte

4 risposte

8

L'unica volta in cui ho mai sentito parlare di un uso pratico dei quine è quando Ken Thompson lo ha usato per nasconde un cavallo di Troia nel programma di login di Unix .

Il Trojan consisteva in qualcosa come if (login == "Trojan") login(); (più probabilmente scritto in C corretta), ma qualcosa del genere sarebbe troppo ovvio nel codice. Quindi quello che ha fatto è stato incorporarlo in un quine e nasconderlo nei binari del compilatore C.

Le proprietà auto-replicanti del quine erano sufficienti a garantire che anche se non ci fosse traccia di questa backdoor in alcun codice sorgente, sarebbe effettivamente compilato ogni volta che un compilatore C si imbattesse in una funzione login () di Unix.

Credo che le spiegazioni più chiare potrebbero venire dalla lettura del documento. È un buon giornale.

Vedi anche: Il trucco del compilatore di Ken Thompson è ancora una minaccia?

    
risposta data 28.09.2011 - 19:35
fonte
4

È stato utilizzato un quine per seminare Tierra , un simulatore di organismo digitale e vita poi si è evoluto da esso. Il quine era usato perché garantiva che la prima generazione avrebbe prodotto prole vitale.

L'evoluzione ha portato a molti risultati interessanti, tra cui forme di vita parassitarie e simbiotiche e persino meta-parassiti. Potrebbe essere considerato 'utile'?

    
risposta data 28.09.2011 - 22:26
fonte
4

Dopo un po 'su Google, la risposta sorprendente è che ci sono almeno alcuni sforzo accademico teorico per usarli per fare codice riparatore automatico, apparentemente.

Uno dei miei termini di ricerca era "programmazione genetica", se qualcuno vuole guardare oltre: è l'unica area di programmazione correlata potenzialmente utile a cui potrei pensare.

EDIT - Ho appena trovato l'uso di Quine in un profilo inglese di una dimostrazione matematica (la risposta di Ron Maimon) del teorema di Godel.

    
risposta data 28.09.2011 - 19:13
fonte
1

Ho usato tecniche simili a Quine nelle pagine web in passato. Intendiamoci, questo era nel 1998-99 ...

Avevo quella che ora chiamiamo una "web app", una serie di programmi CGI-BIN, alcuni dei quali eseguivano interazioni dispendiose in termini di tempo con i mainframe. Per risparmiare due volte la parte che richiede molto tempo, in alcuni casi invierei JavaScript che potrebbe riscrivere la pagina originale in un modulo per inviare informazioni pre-calcolate per "riservare un posto nel futuro". Non riesco a ricordare quale peculiarità dell'interpretazione JavaScript fosse necessaria al momento, ma la codifica Quine-like e la decodifica in uscita del codice HTML "riservare un posto nel futuro" e il relativo JavaScript sono diventati necessari.

    
risposta data 28.09.2011 - 22:08
fonte

Leggi altre domande sui tag