Det mest nytteløse program
Shannons "most useless machine" har for nyligt fået en revival i neo-gør-det-selv kredse og selv Steven Colbert har siddet og kigget dybt fascineret på et eksemplar.
Find selv en af de 8.192 tusinder youtube videos.
Men det kan ikke passe at hardwarefolkene skal have hele fornøjelsen, så her er en lille juleudfordring:
Hvordan ser det mest nytteløse program ud ?
Den direkte fortolkning ville være "main() { kill(getpid(), 9)); }" men det mangler totalt det barokke og humoristiske element Shannons vision besider.
Det må kunne gøres bedre.
Spar mig for vittigheder om operativsystemet under EMACS og rejsekortet og kom istedet med dit originale bidrag i debatten herunder.
Præmien er et par tusinde nørders beundring og/eller misundelse over din humor og kreative evner.
phk
- emailE-mail
- linkKopier link

- Sortér efter chevron_right
- Trådet debat
Nu er det jo jul, så min kandidat er nok
http://mirror.ctan.org/macros/plain/contrib/misc/xii.tex
Dette er et plain TeX program. Har man adgang til en LaTeX-dist. kan det oversættes via pdftex.
- more_vert
- insert_linkKopier link
Lars, jeg ser din The Twelve Days of Christmas og forhøjer med http://www.99-bottles-of-beer.net/language-malbolge-995.html
- more_vert
- insert_linkKopier link
Jeg foretrækker nu Perl versionen. :-)
- more_vert
- insert_linkKopier link
#!/bin/sh set -v
sleep 0.1 xterm -C $0 & sleep 1
- more_vert
- insert_linkKopier link
- more_vert
- insert_linkKopier link
Den nytteløse maskines primære formål er at returnere til den tilstand den havde inden aktivering. En quine har det ene formål at returnere kildekoden der udgør det kørende program, så det synes jeg er et rigtigt godt bud - omend ikke helt så elegant som en fysisk maskine.
Denne gut har taget spøjen til ekstremet: http://www.madore.org/~david/computers/quine.html
- more_vert
- insert_linkKopier link
Den nytteløse maskines primære formål er at returnere til den tilstand den havde inden aktivering. En quine har det ene formål at returnere kildekoden der udgør det kørende program, så det synes jeg er et rigtigt godt bud - omend ikke helt så elegant som en fysisk maskine.
I så fald ville det mest optimale vel være et quine der istedet for at outputte sin source skrev sin source til den fil det blev eksekveret fra? Således at selve filen blev til source igen?
- more_vert
- insert_linkKopier link
for (;;) { try { return; } finally { continue; } }
- more_vert
- insert_linkKopier link
Næsten korrekt: Control cannot leave the body of a finally clause
[code=csharp] for (;;) { try { return; } finally { continue; } } [/code]
Kode-tags finder her:http://www.version2.dk/debat/guide
- more_vert
- insert_linkKopier link
Omvendt kan vi spørge, hvordan vil hardware udgaven af en quine være? Den må vel skrive sit eget diagram ud, altså en printer.
:)
- more_vert
- insert_linkKopier link
Så vidt jeg ved er målet for diverse plastic-3d-printere at de skal kunne genskabe sig selv.
Poul-Henning
- more_vert
- insert_linkKopier link
- more_vert
- insert_linkKopier link
Husker en gammel stribe i et eller andet computerblad hvor en udvikler praler af sit nye program der kan tage en hvilken som helst fil og sortere den således alle 0 bits kommer først og derefer alle 1 bits. Hvorefer han udtalte: "For så ved man hvor man har dem"...
- more_vert
- insert_linkKopier link
Det sjove af det hele er at det ikke er helt ulig hvorledes bzip2 algoritmen virker...
Poul-Henning
- more_vert
- insert_linkKopier link
Ville nu hellere bruge eksemplet med en robot der bygger en robot magen til. Altså en dommedagsrobot.
- more_vert
- insert_linkKopier link
Ville nu hellere bruge eksemplet med en robot der bygger en robot magen til.
Ved at bruge dele af sig selv som byggematerialer.
- more_vert
- insert_linkKopier link
Et rigtigt nytteløst program skal helst være et, der har slugt en masse maskinressourcer til ingen verdens nytte. Så jeg nominerer SETI@Home.
- more_vert
- insert_linkKopier link
Og ubrugeligheden forøges til det absurde, hvis det som en ansat ved CERN fortalte mig for nogle år siden er korrekt: SETI@Home indeholdt en regnefejl, som gjorde at de fleste af (alle?) resultaterne var forkerte og derfor ubrugelige. Han var ikke helt sikker på den bedste måde at kommunikere dette på ;-)
Jeg var nede på CERN for at høre noget om deres anvendelse af grid-computing i forbindelse med analysen af data fra LHC'en. SETI@Home dukkede op i samtalen, da dette projekt jo netop nævnes som et folkeligt genkendeligt eksempel på grid-computing.
Og nej: Jeg har ikke flere detaljer om den påståede regnefejl.
- more_vert
- insert_linkKopier link
Et rigtigt nytteløst program skal helst være et, der har slugt en masse maskinressourcer til ingen verdens nytte. Så jeg nominerer SETI@Home.
Helt uenig!
SETI@Home har vist os præcis én ting: We [i]are[/i] alone!
Og så længe der er folk der benægter dette faktum, skal programmet køre på alverdens håbefulde E.T.-jægeres computere, for langsomt at suge håbet ud af dem.
- more_vert
- insert_linkKopier link
SETI @ Home har vist os præcis én ting: We are alone
Overhovedet ikke! Det, at SETI @ Home ikke har bevist tilstedeværelsen af fremmed intelligens, er ikke et bevis for, at vi er alene.
Det morsomme er jo netop, at det ikke er muligt at bevise, at vi er alene, på samme måde som det ikke er muligt at bevise at Gud ikke findes.
- more_vert
- insert_linkKopier link
Det morsomme er jo netop, at det ikke er muligt at bevise, at vi er alene, på samme måde som det ikke er muligt at bevise at Gud ikke findes.
For det første skal du skelne skarpt mellem at [i]vise[/i] og at [i]bevise[/i].
For det andet er det en overkommelig sag at beskrive hvad vi forstår ved (jordisk) intelligens, og kan derfor relativt enkelt afgøre om vi står overfor (ikke-jordisk) intelligens, når vi ser det.
I sagens natur kan du ikke lave en videnskabelig beskrivelse af en metafysisk eller emotionelt-abstrakt entitet, så du kan derfor heller ikke påvise videnskabeligt hvorvidt du er rendt ind i Gud eller ej - måske kunne du bare ikke se det var ham, fordi han ikke matchede [i]din[/i] forestilling om ham.
Og endnu værre: Hvis din forestilling om ham er at han ikke eksisterer, tror du så helt ærligt du ville kunne spotte ham ud fra den ene beskrivelse af ham du accepterer; at han [i]ikke[/i] eksisterer?
Come on... "Bevis" og "Gud" hører ikke til i samme afdeling af vores verdensbeskrivelser...
Personligt mener jeg iøvrigt at ordet "bevis" er kraftigt udvandet, når det anvendes i ikke-matematiske sammenhænge - og selv i matematikken kan vi påvise bevis-systemers begrænsninger via Gödels ufuldstændighedssætninger.
Læg dertil umuligheden i at [i]bevise[/i] vores egen - menneskers - eksistens. Vi må ty til billige definitioner a la "[i]Cogito ergo sum[/i]" for at lave et axiom, der overhovedet kan kickstarte hele det bevis-bårne univers vi selv bygger.
At vi kan stille spørgsmålstegn ved realiteterne omkring vores egen eksistens´ beskaffenhed ("Welt am Draht", "The Matrix"), diskvalificerer desuden på forhånd ethvert forsøg på at bevise Guds (ikke-) eksistens.
- more_vert
- insert_linkKopier link
Og at vi er alene er en realitet, så længe vi ikke kan påvise, at vi ikke er det(!)
Rent logisk er det en ugyldig konklusion - så længe vi ikke kan påvise om vi er enten alene eller ikke alene, er det [b]uvist[/b].
- more_vert
- insert_linkKopier link
Rent logisk er det en ugyldig konklusion - så længe vi ikke kan påvise om vi er enten alene eller ikke alene, er det uvist.
Sålænge du ikke har påvist der er andre, er du pr. definition alene.
Hvordan vil du ellers definere "alene"?
- more_vert
- insert_linkKopier link
cp er da langt mere effektiv end at oversætte ;)
- more_vert
- insert_linkKopier link
Overhovedet ikke!
Det, at SETI @ Home ikke har bevist tilstedeværelsen af fremmed intelligens, er ikke et bevis for, at vi er alene.
... så længe vi ikke har skabt kontakt, eller bare fundet intelligent liv, er vi alene.
Og jo længere tid SETI @ Home kører, jo mindre bliver den del af universet, hvor E.T.-romantikere kan postulere der findes intelligent liv.
Bemærk også at jeg ikke påstår at SETI @ Home har [i]bevist[/i] noget som helst. Det har kun [i]vist[/i] at vi er alene. Og at vi er alene er en realitet, så længe vi ikke kan påvise, at vi ikke er det(!)
- more_vert
- insert_linkKopier link
Det har kun vist at vi er alene
Det mener jeg heller ikke at SETI @ Home har vist. Projektet har vist, at VI ikke kunne finde nogen spor af andre "intelligenser", der hvor vi ledte, og på den måde vi ledte på. Og jeg mener (som du), at projektet er tåbeligt og nyttesløst. Men det har sikkert underholdt en del mennesker, og givet dem følelsen af at samarbejde om et fælles projekt.
PS: Jeg er på den anden side helt enig i at vi har bevæget os væsentligt off-topic, og det undskylder jeg min andel i.
- more_vert
- insert_linkKopier link
Det morsomme er jo netop, at det ikke er muligt at bevise, at vi er alene, på samme måde som det ikke er muligt at bevise at Gud ikke findes.
Til gengæld kan man jo prøve at antage at gud ikke findes, og det er nu svært at finde beviser på det modsatte .... og verden ændrer sig sgu ikke.
BTW I deny the Holy Spirit.
- more_vert
- insert_linkKopier link
Til gengæld kan man jo prøve at antage at gud ikke findes
Ja, det er klart det logiske at lægge bevisbyrden på den antagelse, der er mulig at bevise, nemlig at "Gud findes". Og det bevis er ikke ført (med videnskabelig holdbarhed) endnu.
"I deny any spirit, that does not contain significant amounts of alcohol"
- more_vert
- insert_linkKopier link
Hvorfor er det lige at det er mere muligt at bevise at Gud findes end at han ikke findes?
- more_vert
- insert_linkKopier link
Hvorfor er det lige at det er mere muligt at bevise at Gud findes end at han ikke findes?
http://en.wikipedia.org/wiki/Falsifiability
"Gud findes" er ikke en falsificerbar påstand.
Ligesom man ikke kan bevise at der kun findes hvide svaner. Det kan derimod modbevises.
"gud findes ikke", kan modbevises. Ergo giver det ingen mening at lægge evidensbyrden andre steder.
- more_vert
- insert_linkKopier link
Hvorfor er det lige at det er mere muligt at bevise at Gud findes end at han ikke findes?
http://skepticwiki.org/index.php/%22You_Can%27t_Prove_a_Negative%22
http://en.wikipedia.org/wiki/Evidence_of_absence
Og så deltager jeg ikke i mere off-topic diskussion i denne tråd!
- more_vert
- insert_linkKopier link
http://www.joystiq.com/2010/11/17/minecraft-in-game-cpu-now-available-to-download/
Ved ikke, om man teknisk set kan kalde det et program, men .. close enough?
- more_vert
- insert_linkKopier link
Jeg må sige at Torbens forslag fører. Et program der i den grad har kunnet opsluge ressourcer og skabe massehysteri er sjældent set. Og det helt uden at have skabt noget somhelst resultat.
- more_vert
- insert_linkKopier link
http://www.de.ioccc.org/years.html
men efterhånden er de fleste C compilere for pedantiske :-(
- more_vert
- insert_linkKopier link
http://en.wikipedia.org/wiki/Whitespace_(programming_language)for det er jo... humor
- more_vert
- insert_linkKopier link
...og Acme::Bleach - For really clean programs!http://search.cpan.org/~dconway/Acme-Bleach-1.12/lib/Acme/Bleach.pm
- more_vert
- insert_linkKopier link
while (1) { fork(); } har altid været et af mine favoritprogrammer... Det er godt nok ikke helt i Shannons ånd men det må da siges at gøre ekstremt lidt nytte...
- more_vert
- insert_linkKopier link
Shell-ekvivalenten til Shannons Ultimate Machine må vel være noget i retning af:
while true; do xterm -e "set -x; sleep 1; kill -STOP $$; sleep 1; exit"; done
Vi lader det være op til læseren selv at finde ud af hvordan man "trykker på knappen"...
- more_vert
- insert_linkKopier link
:start echo Bent.bat -> Bent.bat goto start
- more_vert
- insert_linkKopier link
Eller denne version som vil fylde mere, så man er sikker på at harddisken bliver HELT fyldt op.
cd c:\windows copy con useless.txt :start copy explore.exe + useless.txt useless.txt goto start
Det hele placeres så i en batfil der simpelthen bare køres.
Skulle man ønske at se resultatet efterhånden, tilføjer man bare type useless.txt efter start.
- more_vert
- insert_linkKopier link
SW udgaven af Shannons maskine må være et GUI program der fungerer således:
- Programmet startes ved klik på en ikon.
- Programmet åbner er vindue.
- Programmet overtager cursoren, flytter den stille og roligt op til 'krydset' og klikker på det, hvorved vinduet (og programmet) lukkes.
- more_vert
- insert_linkKopier link
Carsten, det var lige som jeg havde tænkt programmet!
Det er efterhånden længe siden jeg har kodet sidst, nu gør jeg mig nyttig med kvalitetssikring :-o Så der kommer ingen kode fra min hånd!
Jeg undrer mig, kan ingen lave det til *nix?
- more_vert
- insert_linkKopier link
v2 udgaven af Shannons maskine må være et GUI program der fungerer således:
- Programmet startes ved klik på en ikon.
- Programmet åbner er vindue. Vinduet har en 'start'-knap og en 'stop'-knap.
- Ved tryk på 'stop'-knappen sker er ikke noget.
- Ved tryk på 'start'-knappen overtager programmet cursoren og flytter den stille og roligt over til 'stop'-knappen og trykker på den.
- more_vert
- insert_linkKopier link
Ikke helt som du beskriver, men næsten:
http://visualizethis.tumblr.com/post/2481625451/most-useless-javascript
- more_vert
- insert_linkKopier link
Rasmus,
Linket du henviser til gør næsten som v2 maskinen. Men den mangler den absurde, helt Monty Python-agtige måde, Shannons maskine slukker for sig selv på.
Shannons maskine slukker sig selv udenfor dens egne rammer, på e kontakt den ikke formodes at pille ved. Det er ikke nemt at implementere i software, mit bedste bud var at bruge cursoren og 'krydset'.
En maskine hvis eneste funktion er at den tænder en lampe når den aktiveres, og derefter slukker sig selv (og lampen), kan findes i enhver opgang. Så det er ikke en ubrugelig maskine...
- more_vert
- insert_linkKopier link
[code=bash] #!/bin/sh echo "Usage: $0" exit 1 [/code]
- more_vert
- insert_linkKopier link
Hvis kravet er at maskinen skal slukke sig selv, er det vel shutdown kommandoen vi skal have fat i:
Unix: shutdown -f now, Windows: shutdown /s
Kynikere vil formentlig straks påpege at det er alt for langsommeligt og pænt, hvorfor at processen bør optimeres. Umiddelbart vil jeg formode at det kald der beder ACPI modulet - x86 - om at gå i tilstand G3 (mechanical off) må være det vi skal gå efter.
- more_vert
- insert_linkKopier link
...som gjorde at de fleste af (alle?) resultaterne var forkerte og derfor ubrugelige.
Mon ikke de gode mennesker på CERN har lært en del af SETI@Home, om end det måske ikke lige var det formål, som motiverede de medvirkende til at støtte projektet. Det uforventede bliver sjælent modtaget med kyshånd.
Hvorvidt noget er ubrugeligt eller ej, kan være svært at afgøre. Med det "rette" successkriterier kan alt gøres til en fiasko, og ligeledes omvendt :-)
- more_vert
- insert_linkKopier link
Hvordan vil du ellers definere "alene"?
Problemet er ikke definitionen af alene. Problemet er præmissen: Hvis du bor i et hus uden vinduer, kan du ikke se om det er dag eller nat. Hvis dit hus tilmed ikke har lys, er det jo nemt at konkludere at det er evig nat. Og det har du jo sådan set også ret i, set ud fra det perspektiv.
Fra et større perspektiv kan siges: At du ikke kan se lyset er ikke det samme som det ikke er der. At menneskeden ikke har fundet andet intelligent liv end os selv, er ikke det samme som de ikke er der. Præmisserne, eller forudsætningerne om du vil, definere i høj grad konklusionen.
- more_vert
- insert_linkKopier link
[code=asm] section .data ReadyForFuture resb 1 Beginning: mov ReadyForFuture, 0xFF inc ReadyForFuture jne Beginning Future: ; The work is done here [/code]
- more_vert
- insert_linkKopier link
Program jeg kan forestille mig, er et som tæller til 1000, eller 1.000.000.000 eller mere, og INTET ANDET! :)
- more_vert
- insert_linkKopier link
JAN HARRIES,
Det hedder 'seq'Program jeg kan forestille mig, er et som tæller til 1000, eller 1.000.000.000 eller mere, og INTET ANDET! :)
Fx sådan: [code=bash]seq 12 | parallel ncal {} 2011[/code]
Og /bin/true bruger jeg også tit: [code=bash]while true; do foo ; done[/code]
- more_vert
- insert_linkKopier link
telnet://towel.blinkenlights.nl Så meget kode, mest kontant dog, men giver det mening? Nej vel!
- more_vert
- insert_linkKopier link
Et aktuelt og særdeles nytteløst program ville være en implementering af BertelFlowchart™ v. 1.01:http://www.23hq.com/tveskov/photo/6310439
- more_vert
- insert_linkKopier link
"Program jeg kan forestille mig, er et som tæller til 1000, eller 1.000.000.000 eller mere, og INTET ANDET! :)"
Det er da ikke nytteløst! I næste udgave af programmet tæller man så lidt mindre og har derved forbedret performance! Smart.
- more_vert
- insert_linkKopier link
Ikke bare et nyttesløst program, men et helt sprog.
- more_vert
- insert_linkKopier link
Utroligt at Wiki siden ikke nævner at INTERCAL var det første programmeringssprog som opgave GOTO som flow-control metode.
I stedet for indførte de COMEFROM
Poul-Henning
- more_vert
- insert_linkKopier link
Ja COMEFROM har jeg længe moret mig over og følt mig fristet til at bruge..... ;-)
(om end ikke andet så bare for at forestile mig ansigtsudtrykket når den næste udvikler endelig finder ud af hvad jeg har lavet.. )
Søren
- more_vert
- insert_linkKopier link
Program jeg kan forestille mig, er et som tæller til 1000, eller 1.000.000.000 eller mere, og INTET ANDET! :)
En DJØF'er i selvsving f.eks.:
[code=asm] section .data Bank resw 1 MoreMoney: inc Bank jmp MoreMoney [/code]
Når, arbejdet kalder :-)
- more_vert
- insert_linkKopier link
Malbolge fortolkeren. Se http://en.wikipedia.org/wiki/Malbolge.
Dette er Hello World i Malbolge:
[code=text]
('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL(I&%$#"CB]V?Tx<uVtT
Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@>
[/code]
- more_vert
- insert_linkKopier link
[code=asm] NextDay: NOP JMP NextDay [/code]
- more_vert
- insert_linkKopier link
Måske ikke helt nytteløst nok og ligner ikke maskinerne på youtube, men jeg vil alligevel nominere /bin/true.
På mit GNU-inficerede system fylder det 21K og understøtter selvfølgelig en række options (ok, kun --help og --version. Jeg mangler klart en --verbose). Kildeteksten fylder 61 linjer, hvilket i det mindste er en del mindre end licensen.
Men jeg mindes kommercielle unixer hvor /bin/true var et langt shell-script kun bestående af kommentar-linjer - Som så indeholdte copyright-angivelse, licens, ansvarsfraskriveselse og historik (dvs. hvornår der er ændret i copyright-klamamsen)
- more_vert
- insert_linkKopier link
Mit forslag, som jeg tit står og mangler, er /bin/maybe:
[code=c] #include <time.h> #include <stdlib.h>
int main (int argc, char ** argv) { srand(time(NULL)); exit(rand() & 1); return 0; } [/code]
- more_vert
- insert_linkKopier link
http://en.wikipedia.org/wiki/IEFBR14
Ikke at det er helt nyttesløst, men det skyldes nok mest JCL'ens mærkværdighed
- more_vert
- insert_linkKopier link
We don't know where to GOTO if we don't know where we've COME FROM...
[code=freebasic ] COME FROM Unknown REM Level 1 accomplished here INPUT "Level done. Were to go now? "; ANSWER$ IF ANSWER$ = "2" THEN GOTO Level2 ELSE Unknown: PRINT "Wrong answer. Continuing on same level." [/code]
Måske Intercal er nytteløst, men stadig ganske spøjst og underholdende :-)
- more_vert
- insert_linkKopier link
IEFBR14 har i princippet kun een statement:
BR 14
som betyder "branch til adressen i register 14. Register 14 indeholder returadressen på det kaldende program - dvs. programmet gør ingenting!
Programmet har existeret siden de allertidligste udgaver af forløberne for det der idag hedder z/OS.
IEF delen af navnet hidrører fra at de 3 bogstaver identificerer IBM z/OS utilities.
Til trods for at programmet ikke laver noget kan jeg oplyse de yngre læsere, der endnu ikke har arbejdet med rigtig EDB :-) at IEFBR14 er meget brugt i driftsafdelingerne idet man kan lave et jobstep der allokerer eller sletter diverse datasets - noget som operativsystemet kan instrueres til at gøre via nogle parametre til data description.
Nå - skulle der også være humor I? Ja men så lad mig tilføje at der faktisk engang er rejst en fejlrapport på programmet! Strengt taget mangler der en statement som resetter/clearer nogle af registrene ved exit og det gjorde den oprindelige udgave af IEFBR14 ikke. IBM accepterede faktisk denne APAR (Authorized Problem Analysis Report) og der kom et fix til denne! Det er da ret god værkstedshumor!
- more_vert
- insert_linkKopier link
Paradoxet må ligge i APAR Management omkring "Do Nothing" Compliance... ;-)
- more_vert
- insert_linkKopier link
Mit forslag er nok en simpel fork-bombe, som i shell vist nok så sådan ud:
[code=text] #! /bin/sh doe.sh & doe.sh & doe.sh [/code]
Det er komplet nyttesløst, idet programmet kalder sig selv og blot formerer sig, uden at lave noget som helst.
NB: Den virker ikke så godt mere, idet de fleste OS'er idag begrænser antallet af processer en given bruger kan få lov til at starte.
- more_vert
- insert_linkKopier link
Under System III var /bin/true bare en tom exekverbar fil...
Poul-Henning
- more_vert
- insert_linkKopier link
Så hvis jeg skal opfyle en funktionalitet svarende til PHK's eksempel, så vil jeg nok ganske enkelt forke true.c fra GNU coreutils og indsætte noget ala PHK's kill ind istedet for 'exit (EXIT_STATUS);'
- more_vert
- insert_linkKopier link
Hvad med alle de Hello World programmer der eksisterer, som skal vise at man er begyndt at programmere noget, men egentligt har så lidt med programmering at gøre som noget kan? Ikke engang noget matematisk..
Tænkt hvor mange år folk tilsammen har brugt på at lave alle disse millioner Hello World programmer =)
- more_vert
- insert_linkKopier link