|
Easter Egg, le uova di Pasqua nel computer 25.3.08 Permalink 45 commenti
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?
Etichette: Apple, easter egg, Google Earth
Articoli che linkano questo articolo:
Commenti:
=ANTWORT("Das Leben, das Universum und der ganze Rest")
sia magari 42??
CIAO CIAO
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!
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
PS Il simulatore di Google Earth è ormai famoso, no? Peccato che non disponga delle viste esterne.
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.
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".
Comunque il risultato restituito è il numero 42
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
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
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
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
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.
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.
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?
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.
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
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...
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.
=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.
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
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!!!
;)
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
@ 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.
La trama è una figata, non ne hanno ancora fatto un film?
http://italian.imdb.com/title/tt0371724/
CIAO CIAO
(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
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.
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?
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
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
<< Home








