Cerca nel blog

2008/03/25

Easter Egg, le uova di Pasqua nel computer

Sorprese annidate nei programmi



Come ogni anno, non può mancare l'appuntamento di stagione con le chicche nascoste nei programmi: gli Easter egg, o "uova di Pasqua", come si chiamano in gergo. Parzialmente ispirata da Lifehacker, ecco qualche esempio delle cose che i programmatori annidano nel software.

Volete un motivo in più per passare a OpenOffice.org o NeoOffice? Eccolo: i giochini integrati. Se digitate =GAME(A2:C4;"TicTacToe") in uno spreadsheet vuoto di questi programmi gratuiti e liberi, potrete giocare a tris. Se invece digitate =GAME("StarWars") avrete un vero e proprio videogame (immagine qui accanto). Potete giocare una sola volta: per giocare ancora dovete uscire dal programma (non dal gioco) e riavviarlo. Se invece digitate =STARCALCTEAM() in uno spreadsheet o scrivete la parola StarWriterTeam in un documento di testo e premete il tasto F3, otterrete una foto dei primi sviluppatori di StarOffice, il programma dal quale è nato OpenOffice.org. Lascio a voi indovinare cosa succede se digitate =ANTWORT("Das Leben, das Universum und der ganze Rest"). Anche Microsoft faceva queste cose, ma poi sono arrivati gli ordini dall'alto di rigare dritto e la prassi è praticamente scomparsa.

Per chi usa Firefox, digitare about:mozilla nella casella degli indirizzi produce una citazione dal Libro di Mozilla:

"And so at last the beast fell and the unbelievers rejoiced. But all was not lost, for from the ash rose a great bird. The bird gazed down upon the unbelievers and cast fire and thunder upon them. For the beast had been reborn with its strength renewed, and the followers of Mammon cowered in horror.
from The Book of Mozilla, 7:15"

Se usate Internet Explorer 7 (non le versioni precedenti o successive), digitando

javascript:window.name="TheWCEE";location.href="res://shdoclc.dll/wcee.htm"

nella casella degli indirizzi troverete una pagina nascosta con i nomi degli sviluppatori.



Per finire, un easter egg che è una citazione dotta. Se usate Mac OS X, in particolare la sua ultima versione chiamata Leopard, avete una funzione di CoverFlow che permette di sfogliare le immagini. Se la usate per sfogliare le immagini delle icone, soffermatevi su quella di TextEdit.



Il testo che si legge nell'icona non è casuale: è quello di una celebre campagna pubblicitaria di Apple, Think Different (1997). Ecco la traduzione italiana adattata usata nello spot:

"Questo film lo dedichiamo ai folli. Agli anticonformisti, ai ribelli, ai piantagrane, a tutti coloro che vedono le cose in modo diverso. Costoro non amano le regole, specie i regolamenti, e non hanno alcun rispetto per lo status quo. Potete citarli, essere in disaccordo con loro; potete glorificarli o denigrarli, ma l’unica cosa che non potrete mai fare è ignorarli, perché riescono a cambiare le cose, perchè fanno progredire l’umanità. E mentre qualcuno potrebbe definirli folli, noi ne vediamo il genio; perché solo coloro che sono abbastanza folli da pensare di poter cambiare il mondo lo cambiano davvero."

Il video dell'edizione italiana, letta da Dario Fo, e dell'originale sono su Macitynet.it. Altre chicche e allusioni nascoste sono descritte qui (solo per cultori del Mac; e se siete cultori, non perdetevi il libro di Antonio Dini, Emozione Apple, che sto finendo di leggere: una chicca dopo l'altra).

Ecco fatto: anche quest'anno il dovere e piacere pasquale (informatico) è compiuto. Adesso vado a giocare con il simulatore di volo nascosto in Google Earth. No, non vi dico come lo si attiva. Altrimenti che sorpresa sarebbe?

45 commenti:

dyk74 ha detto...

che la risposta a questa domanda:

=ANTWORT("Das Leben, das Universum und der ganze Rest")

sia magari 42??

CIAO CIAO

OrboVeggente ha detto...

Io ODIO che gente pagata per realizzare e testare software a larghissima diffusione, trovi il tempo di "giocare" con il codice e gonfiare il programma di inutili minchionate...
Capisco nascondere un saluto o un messaggio, ma metterci il giochino è davvero esecrabile.
E poi la grande azienda ha un problema di calcolo o di duplicazione formule, o magari centinaia di dipendenti che non ricevono lo stipendio a causa di un errore nel calcolo paghe, e la colpa è dell'area di memoria "nascosta" a ospitare il gioco scemo...
Licenziamento immediato a tutto il team, debugger in testa, se fossi io l'amministratore!

dyk74 ha detto...

@orbo:
Essendo io ANCHE programmatore difendo la categoria:
un giochino come lo STARWARS probabilmente non occupa piu' di qualche kB. Il fatto di inserire Easter Egg nei software e' intrinseca nel programmatore ed e' una forma di personalizzazione e di egocentrismo.
Il fatto che un software sia pieno di bug e ci sia un easter egg non sono cose unite tra di loro. Se riesci a trovarmi un software senza 1 bug meriti il premio nobel.
Che ci sia 1 debugger, che ce ne siano 10, che ce ne siano 100 non cambia niente, tutti i bug non si potranno mai trovare.
Orbo immagino tu non sia un programmatore.

CIAO CIAO

Giuliano ha detto...

=ANTWORT("Das Leben, das Universum und der ganze Rest")

Dio che figata!

markogts ha detto...

Beh, se il comando è "ANTWORT" la risposta sarà "Zweiundvierzig" piuttosto che 42 :-)

PS Il simulatore di Google Earth è ormai famoso, no? Peccato che non disponga delle viste esterne.

OrboVeggente ha detto...

dyk74:

Essendo io ANCHE programmatore difendo la categoria:
un giochino come lo STARWARS probabilmente non occupa piu' di qualche kB.


Ma la pratica esiste da decenni, e quando i sw professionali occupavano in tutto pochi kb, c'erano già gli easter egg a "intasare" il programma.
Se oggi pochi kb sono insignificanti in rapporto alle dimensioni di un programma medio, l'idea stessa è profondamente sbagliata.

Il fatto di inserire Easter Egg nei software e' intrinseca nel programmatore ed e' una forma di personalizzazione e di egocentrismo.

Che quindi rimanga confinata in altri settori.
Programmare un videogioco ti costringe a confrontarti con chi lo sa fare veramente meglio di te, ma mettere un easter egg è un modo economico di farsi notare come "bravo programmatore" quando in
realtà non lo si è.
Tu che sei programmatore, e difendi l'intrinseco ruolo degli easter egg, quanti e di che tipo ne hai seminati nei tuoi programmi?

Il fatto che un software sia pieno di bug e ci sia un easter egg non sono cose unite tra di loro.

Un par di ciùfoli!!!!
Se è pieno di bug è perché non si è impegnato bene il tempo per programmarlo e debuggarlo.
Se saltano fuori gli Easter Egg significa, peggio, che un po' di quel tempo è stato sprecato in modo indecente!
Non è un problema, ribadisco. Se fossi io l'amministratore, licenziamento e ciao.

Se riesci a trovarmi un software senza 1 bug meriti il premio nobel.

Flash Changer, un programma in commodore basic che ho scritto nel 1984.
Cambiava i colori dello schermo in modo random, modificando il valore dei puntatori 53280 e 53281 alla pressione di un tasto.
Ho vinto il nobel dici?

Che ci sia 1 debugger, che ce ne siano 10, che ce ne siano 100 non cambia niente, tutti i bug non si potranno mai trovare.

Che ci sia gente nell'azienda che perde il suo tempo in modo tanto inutile e che questa gente non ci sia, cambia eccome.

Orbo immagino tu non sia un programmatore.

Io sono un poeta, ma nelle mie poesia non ci nascondo il curriculum o il numero di cellulare della mia procace vicina.
Soprattutto, non vengo pagato per farlo di nascosto.

markogts ha detto...

Visto che siamo in tema, ecco due chicche di google:

http://www.google.it/search?hl=it&q=answer+to+life+the+universe+and+everything&btnG=Cerca+con+Google&meta=

e questa dai tempi della guerra in Iraq, che si otteneva quando si chiedeva a Google di trovare "weapons of mass destruction".

usa-free ha detto...

chi mi traduce dal tedesco? ho provato col traduttore di Google ma non sono riuscito :)

Comunque il risultato restituito è il numero 42

markogts ha detto...

Orbo, non sono d'accordo con il tuo pensiero. Finché l'easter egg è una minchiata di pochi kb e poche ore-uomo, ci può stare benissimo. Anche nell'architettura penso si possano trovare simili esempi, anche se adesso non me ne viene in mente manco uno. Idem per la poesia: non so come si chiami la cosa, ah, acrostico, ma esistono poesie dove puoi prendere la prima lettera di ogni verso e leggerci qualcos'altro. Vedi il "Serto di Sonetti" di France Preseren, poeta sloveno.

dyk74 ha detto...

usa-free:
traduco letteralmente
=RISPOSTA("La vita, l'universo e tutto il resto")

@orbo:
decenni fa anche gli easter-egg erano in proporzione alla grandezza del software.
Programmare un videogioco come lo STARWARS di OO sono veramente poche riche di codice.
Per la precisione sono ANCHE programmatore, e gli easter egg ne ho messi anche nei programmi che presentavo all'universita'. Io mettevo piccole animazioni, testi, disegni, mettevo cio' che mi veniva in mente sul momento e magari coerente con il software che stavo facendo...
C'e' una legge di murphy che dice che se un software e' esente da bug vuol dire che e' obsoleto.

con il commodore basic se non ricordo male cambiare il colore dello schermo era POKE 53280,colore e POKE 53281,colore non dirmi che quello e' un programma sono 3-4 righe di codice
provo a scrivertelo cosi a memoria (sono anni che non programmo in commodore basic):
10 GET a$
20 if a$="" then goto 20
30 numero=int(255*rnd(1))
40 poke 53280,numero
50 poke 53281,numero

5 righe di codice.

CIAO CIAO

usa-free ha detto...

10 GET a$
20 if a$="" then goto 20

Così rimane in loop fino a che non premi un tasto e non puoi fare nient'altro col pc? :D

dyk74 ha detto...

@usa free:
infatti ma vedendo quello che ha scritto orbo qui: Cambiava i colori dello schermo in modo random, modificando il valore dei puntatori 53280 e 53281 alla pressione di un tasto. e ho fatto un programma di poche righe che cambia colore in modo random alla pressione di un tasto

usa-free ha detto...

mi ricordo quando inserivo un EB FA esadecimale in un exe per far piantare un 8086...ah bei tempi! :D

Un altro assembly esente da bug è questo:

0100 NOP
0102 NOP
0104 NOP

però non mi ricordo se il NOP è tradotto in uno o due hex..è passato troppo tempo :D

Anche il basic mi piaceva assai, poi le vicissitudini della vita mi hanno portato ad abbandonare la programmazione...peccato! Oforse è meglio così, conoscendomi magari adesso sarei completamente sclerato e pieno di tic! :D

OrboVeggente ha detto...

dyk74:
C'e' una legge di murphy che dice che se un software e' esente da bug vuol dire che e' obsoleto.

E quindi, pronto per l'uso militare!

con il commodore basic se non ricordo male cambiare il colore dello schermo era POKE 53280,colore e POKE 53281,colore

esattamente

non dirmi che quello e' un programma sono 3-4 righe di codice

e che è un programma?

provo a scrivertelo cosi a memoria (sono anni che non programmo in commodore basic):
10 GET a$
20 if a$="" then goto 20
30 numero=int(255*rnd(1))
40 poke 53280,numero
50 poke 53281,numero


Si, più o meno mi sembra di ricordare...
I colori però erano 16, quindi l'int era 16*rnd -1 perchè anche 0 era un codice (nero).
Poi le variabili erano di due lettere, quindi numero=nu

5 righe di codice.

Ti manca un 60 goto 10

Complimenti per la memoria, comunque.
53248 ricordi che era il magico poke di riferimento per la gestione degli sprites?

I primi programmi che ho scritto professionalmente, comunque, erano in gwbasic nel 1989.

psionic ha detto...

dyk74, credo "goto 10" :-D

Comunque ovviamente sono cose che non ifluenzano minimamente la produttivita' o il rendimento dei programmatori, anzi, forse le influenzano in positivo, perche' il programmatore e' un uomo, non una macchina (ehm, non ancora almeno :-) ), e quindi se ha la possibilita' di lavorare divertendosi e rilassandosi, e' piu' motivato a farlo. E probabilmente ci riesce anche meglio.

Un Ester Egg come quello di starwars citato nell'articolo era impensabile nei programmi di qualche anno fa. Non esistevano
GIOCHI completi di quella caratura (ovviamente parlo di un "po'" di anni fa!). E' tutto in proporzione, come e' gia' stato detto. Chissa', in futuro, magari, qualche versione di Linux conterra' come Ester Egg Windows Vista (o viceversa?!?)! :-D

...e, per finire, ovviamente per parlare di bug, bisogna definire cosa deve fare un programma e cosa deve non fare. Se faccio un virus, il fatto che impalli il computer non e' un bug!

Ad esempio, orboveggente, secondo me il tuo programma comunque aveva un bug, perche' la statistica dei colori casuali generati non era realmente uniforme (e immagino che fosse questo che volevi, in realta'), come non lo e' in nessuna macchina deterministica. Non per niente si parla di numeri pseudo-casuali.

OrboVeggente ha detto...

usa-free
chi mi traduce dal tedesco? ho provato col traduttore di Google ma non sono riuscito :)

=ANTWORT("Das Leben, das Universum und der ganze Rest")

=Risposta ("la vita, l'universo e tutto il rimanente")


Comunque il risultato restituito è il numero 42

Ovvero Zweiundvierzig
(pron: zvài-unt-fihrtzìh)

Che poi 42 era la risposta alla domanda di Bob Dylan, "how many roads" etc.etc. sbaglio?

OrboVeggente ha detto...

markogts:
Orbo, non sono d'accordo con il tuo pensiero. Finché l'easter egg è una minchiata di pochi kb e poche ore-uomo, ci può stare benissimo.

E, ringraziandolo, assumiamone un altro che investe meglio il suo tempo e quello pagato dall'azienda!

Anche nell'architettura penso si possano trovare simili esempi, anche se adesso non me ne viene in mente manco uno.

La porta di San Zeno a Verona, il Duomo di Milanio, la Sagrada Familia in Spagna.

Idem per la poesia: non so come si chiami la cosa, ah, acrostico, ma esistono poesie dove puoi prendere la prima lettera di ogni verso e leggerci qualcos'altro.

Ma certo, però in quel caso il tempo del poeta non era pagato, il risultato non si propone di risolvere problemi pratici in cambio di denaro, il messaggio non è nascosto da improbabili combinazioni ma sotto gli occhi del lettore.
Soprattutto, in quel caso il messaggio nascosto è il vero messaggio.

dyk74 ha detto...

per me quello e' poco piu' di uno script.
Avevo circa 10 anni quando programmavo in c= basic.
Anche i software militari hanno bug, altrimenti non si spiegherebbero gli errori dei "missili intelligenti".
ora io programmo in vb.net vbscript e ANSI C (tutti e 3 per hobby) e devo dire che anche io non sono esente da BUG...

CIAO CIAO

OrboVeggente ha detto...

psionic:
Ad esempio, orboveggente, secondo me il tuo programma comunque aveva un bug, perche' la statistica dei colori casuali generati non era realmente uniforme (e immagino che fosse questo che volevi, in realta'), come non lo e' in nessuna macchina deterministica. Non per niente si parla di numeri pseudo-casuali.

Questo era un discorso molto affascinante e delicato, all'epoca.
Era decisamente impossibile ottenere numeri davvero casuali, e ogni volta che il programma veniva lanciato otteneva gli stessi identici valori.
Quindi mi agganciavo a variabili in costante mutazione, come le ultime due cifre del time$ (i secondi) o altri artificii complessi, ma il problema era reale. I numeri casuali non lo erano mai.

Però non potevo tanto parlarne all'epopca, soprattutto quando programmavo i giochini di scommesse ai cavalli in basic, in cui ogni bambino metteva 1000 lire e il bambino più fortunato (io) alla fine di 10 manche vinceva sempre il totale grosso...

psionic ha detto...

Beh... e' un problema anche adesso.
In larga parte risolto, nel senso che adesso in numeri sono "sufficientemente" casuali ed uniformemente distribuiti per la maggior parte delle applicazioni, ma in realta' non lo sono, e in certi casi particolari il problema emerge in tutta la sua serieta'.

Chissa', magari quando disporremo di macchine o comunque apparecchi quantistici (ma gia' ci sono, a questo scopo, se non erro) potremmo avere veramente delle distribuzioni uniformi di numeri casuali.

Logan7 ha detto...

=ANTWORT("Das Leben, das Universum und der ganze Rest")

=RISPOSTA("La vita, l'universo e tutto il resto")

=Risposta ("la vita, l'universo e tutto il rimanente")

Che poi 42 era la risposta alla domanda di Bob Dylan, "how many roads" etc.etc. sbaglio?


State scherzando. Ditemi che state scherzando ed in realtà sapete perfettamente di cosa si tratta.

usa-free ha detto...

che ne pensate della casualità usata da siti come random.org ?

usa-free ha detto...

io non me lo ricordo logan :D

ok mi metto a 90, ma frusta piano! :D

dyk74 ha detto...

@usa-free:
solo a livello quantistico si puo' avere una sicurezza che i numeri siano effettivamente casuali altrimenti anche se si usa il sistema del timing, con un po' di tempo e tanta voglia di lavorare si puo' trovare il ciclo.

@logan:
a me ricorda vagamente "guida galattica per autostoppisti" di D.Adams

Logan7 ha detto...

usa-free ha detto...

io non me lo ricordo logan :D
ok mi metto a 90, ma frusta piano! :D


E' facile... molto facile!

Direi facile in modo imbarazzante!!!

;)

Logan7 ha detto...

@logan:
a me ricorda vagamente "guida galattica per autostoppisti" di D.Adams


Vagamente?!?!?

LOL!

dyk74 ha detto...

non si era capito che la mia risposta era ironica??
CIAO CIAO

Hedges ha detto...

@ Orboveggente
Bob Dylan non c'entra, guarda questo collegamento a Wikipedia e capirai: http://it.wikipedia.org/wiki/La_vita,_l'universo_e_tutto_quanto
Saluti

Hedges ha detto...
Questo commento è stato eliminato dall'autore.
Hedges ha detto...
Questo commento è stato eliminato dall'autore.
Logan7 ha detto...

Hedges ha detto...

@ Orboveggente
Bob Dylan non c'entra, guarda questo collegamento a Wikipedia e capirai: http://it.wikipedia.org/wiki/La_vita,_l'universo_e_tutto_quanto
Saluti


In realtà c'entra in parte anche Bob Dylan, o meglio la canzone citata da Orboveggente... ed è spiegato qui.

Hedges ha detto...

Ho fatto una gaffe, scusa Orbo, se parliamo di Vita, Universo e TUTTO QUANTO, doveva centrare anche Dylan e grazie a Logan che me l'ha spiegato.

usa-free ha detto...

non sapevo niente di tutto ciò.! (lo so, è grave.)

La trama è una figata, non ne hanno ancora fatto un film?

dyk74 ha detto...

Certo che hanno fatto il film e anche il film e' carino:
http://italian.imdb.com/title/tt0371724/

CIAO CIAO

markogts ha detto...

Usa, parli della Guida Galattica? Si hanno fatto anche il film, ho il DVD a casa. Come al solito, il libro è meglio, ma devo dire che anche il film non è male. Ah, il motore ad improbabilità...

markogts ha detto...

So long so long, and thank you for all the fish

usa-free ha detto...

grazie per le info, ora vedo di procurarmi il film :)

Francesco Sblendorio ha detto...

Alcune osservazioni, relative non solo a questi commenti:

(1) L'atteggiamento "due pesi, due misure" di alcuni detrattori di Microsoft: gli easter eggs sono causa di pesantezza e instabilità quando presenti in MS Office e Windows, mentre sono delle figate quando compaiono in prodotti open. Personalmente apprezzo gli easter eggs, in qualsiasi prodotto siano presenti.

(2) @Orboveggente. Sul C64, le locazioni 53280 e 53281 non sono due puntatori, perché il loro contenuto non punta a un'altra locazione (puntatori sono invece 43 e 44, che puntano all'inizio dell'area BASIC). 53248 viene chiamato "puntatore ai registri VIC-II" perché a partire di lì sono mappati i registri del VIC-II (tra cui 53280 e 53281), e non locazioni di memoria RAM. Anche se, modificando l'opportuno bit della locazione 1, lì "sotto" ci puoi trovare anche altre "cose" (es. il generatore di caratteri).

(3) @dyk74. 3, 4 righe al massimo:
10 GETA$:IFA$=""THEN10
20 POKE53280,RND(0)*16
30 POKE53281,RND(0)*16
40 GOTO10

tosky ha detto...

Sul discorso easter eggs sì/no/forse/ma-su-alcuni-prodotti-no-altri-sì:
se l'easter eggs è una funzione richiamabile a parte che non interviene nell'esecuzione normale, non è un indice di pesantezza. Ma che nelle versioni dei prodotti Office di più di dieci/dodici anni fa (e quindi con i dischi allora) ci fosse di volta in volta un simulatore di volo, un flipper ed un mini-doom... beh, sicuramente non faceva bene allo spazio su disco, da qui la cattiva fama (tra l'altro scopro adesso che c'è per loro una pagina di wikipedia dedicata).

Più in generale, è difficile trovare esempi di easter eggs (se non triviali, come quello di Firefox) nel software libero, proprio perché per definizione non c'è spazio per cose nascoste dove il codice è disponibile. Quelle che si trovano su OpenOffice.org sono residuo della sua vita passata, sono rimasugli del codice originale di StarOffice (e mi chiedo perché non li abbiano tolti).

Volevo aggiungere qualcosa sulla storia del "Book of Mozilla": non è una novità di Firefox, quella "citazione" è solo l'ultima di una lunga serie (che parte da Netscape) e ne racconta in qualche modo la storia; maggiori dettagli nell'immancabile pagina di wikipedia.

Dan ha detto...

"Quelle che si trovano su OpenOffice.org sono residuo della sua vita passata, sono rimasugli del codice originale di StarOffice (e mi chiedo perché non li abbiano tolti)."
E io ti chiedo perchè avrebbero dovuto toglierli... gli easter egg sono cosette minuscole, semplici, e lo sono anche perchè i programmatori li fanno a tempo perso, quando hanno voglia di staccare un po' dal codice di Excel che li ha fatti impazzire fino a quel momento e fare qualcosa di semplice e personalmente gratificante. Checchè se ne dica, non influiscono nè sulla pesantezza nè sull'efficienza del codice, perchè sono cose totalmente accessorie e slegate dal codice principale dell'applicazione. E' la traccia di quel po' di egocentrismo che hanno i programmatori, il desiderio di lasciare un segno, specialmente se si è solo un ingranaggio nella macchina di una grande società (come anche MS). Non c'è niente di male nel farli... e se qualcuno dovrebbe essere licenziato per questo, a quelli che lasciano vulnerabilità critiche che dovrebbero fare, crocifissione in sala mensa ed esecuzione di tutta la famiglia?

dyk74 ha detto...

@DAN:
Vedo che abbiamo le stesse idee sugli Easter Eggs e sul perche' un programmatore li inserisce.

[IRONIA ON]
quelli che lasciano vulnerabilita' critiche lo fanno per tenersi il lavoro; perche' altrimenti una volta finito il programma cosa fanno?? in questo modo devo creare anche le patches...
[IRONIA OFF]

CIAO CIAO

Vale56 ha detto...
Questo commento è stato eliminato dall'autore.
Vale56 ha detto...
Questo commento è stato eliminato dall'autore.
Vale56 ha detto...

Per i cultori della guida galattica (trilogia in 5 parti), segnalo un sito molto interessante Tributo a Douglas Adams

Cancellati i due commenti precedenti perché non mi metteva bene il link.

Orbo se un programma di una decina di righe può essere esente da bug, uno di che supera le migliaia righe di codice è impossibile che non abbia dei bug, anche se cerchi di evitarli e ricontrolli il codice decine di volte, e chi lavora seriamente nel campo informatico lo sa

NETTuno ha detto...

Comunque openoffice e' un programa opensource e free... nessuno paga nessuno che io sappia per sviluppare quel software. Dunque non vedo il perche' della polemica. Per conto mio se ci vogliono mettere una palma che esce facciano pure, rimane un programma mille volte meglio di office...