
UDB
Alle ved hvad EDB er, UDB derimod er "Unødvendig DataBehandling", (Hat-tip: Per Lieberkind)
Såsom f.eks at tegne en te-potte med javascript.
Hvad er dit bedste UDB hack ?
phk
Poul-Henning er selvstændig systemprogrammør, kernekoder, Varnish-forfatter, data-arkæolog og brokkehoved uden særlig portefølje.
Follow @bsdphkKommentarer (34)
Jeg har kodet beregning af ATAN2 funktionen i LaTeX. Formålet var at kunne tegne arbitrære linjestykker i LaTeX's picture environment. Det hører under UDB, da man med PS-tricks pakken kan lave vilkårlige linjestykker og bezierkurver med PostScript primitiver.
Et af de mere imponerende UBS feats, jeg har set, er et komplet Tetris spil kodet i en linje BBC BASIC (hvor en linje er max 256 bytes, når keywords er lavet om til en-bytes tokens). Se http://survex.com/~olly/rheolism/
Det projekt som jeg pt husker klarest hvor der forekom en del UDB var et 4. semester projekt hvor vi skulle styre en fysisk robot med et IDE vi også selv skulle lave efter nærmere specifikationer. IDEet skulle f.eks. også kunne køre et program, og gentage det i en uendelighed (tænk automatik i industrien).
Alt skulle absolut hentes og gemmes fra en database var flertallet i gruppen enige om meget tidligt i projektet.
Det blev også besluttet at lave et domæne specifikt programmeringssprog til formålet, som jeg fik til opgave at designe og implementere.
Nu kommer så UDBen.
Det mest idiotiske programmet lavede var at der blev hentet et program fra en database via mange midlertidige tabeller. Data i tabellerne blev lavet om til 1 eneste tekststreng - her kunne man så have brugt noget så simpelt som en fil. Her fra blev teksten sendt ind i vores fortolker, hvor teksten bliver opdelt i tokens af den leksikalske analysator og derefter tog den syntax styrede LL(1) parser over.
Til sidst i projektforløbet var alle i gruppen enige om at databasen med fordel kunne klippes ud af programmet, hvorved programmet ville blive meget mindre komplekst, og meget mindre i SLOCs.
Vi fik i øvrigt alle sammen en 10'er (ny karakterskala) for den præstation.
I 80‘erne sad jeg med en disassembler og fandt det sted hvor Leisure Suit Larry stillede åndsvage spørgsmål for at man fik lov at starte spillet, og satte en jump ind der startede op med det samme.
Først mange år senere da jeg fortalte det til en af mine venner, fandt jeg ud af at der stod i manualen at man bare skulle trykke Alt+x for at komme videre.
Nu skal man så også lige huske på, at både Beckman og Meijer er ansat hos Microsoft Research til at lege med sprog/matematik/fysik, og bidrog betydeligt i forbindelse med LINQ, Reactive Framework etc. i C#.
Det simpleste og mest optimale UDB, må nok være følgende x86 assembly: jmp $
Jeg var med i en slags konkurrence på OSDev om at lave det fedeste x86 bootsector program (BIOS-kald tilladt). Jeg prøvede at lave en LISP-fortolker, men den blev ikke helt god. En anden rickrollede os alle sammen ved at indkode den kendte melodi og afspiller på 512 bytes. :-)
Hvis man bliver en bedre programmør af sin UDB, så er det måske ikke helt UDB.
Jeg blev f.eks. dus med cachegrind og de forbedringer den i almindelighed kan hjælpe til, mens jeg rodede med mit program til at finde primtal.
Første version blev iøvrigt skrevet i min tid under selvsamme Lieberkind.
Jeg er ikke sikker på at jeg deler din opfattelse af hvad der er unødvendig databehandling.
Det er korrekt at det at tegne en velkendt tepotte i sig selv ikke tilfører samfundet værdi. Men når man skal bevise at en bestemt teknologi kan anvendes inden for et givet område er det rart med nogle velkendte standard-eksempler. Det giver bedre mulighed for at sammenligne forskellige typer løsninger. Og nu er lige præcis den tepotte jo et af standardeksemplerne inden for computergrafik. Andre standardeksempler er primtal eller oversættere skrevet i sproget selv.
Så det er efter min mening ikke 'at tegne en tepotte' der er UDB. At det kan gøres i ren Javascript/HTML/CSS når vi har alternativer som SVG, WebGL og Canvas (HTML5) er måske det interessante spørgsmål. Det kunne eventuelt være brugbart at kunne emulere HTML5's canvas element med ældre systemer istedet at måske skulle tvinges til at bruge næsten-canvas?
Næhhh, unødvendig databehandling, det er når man involverer banksektoren i at indskrive børn til vuggestuepladser.
En mulig kandidat kunne være denne her:
http://klauselmquist.dk/color/
Kodet på et tidspunkt hvor jeg helt klart havde vigtigere ting jeg burde have foretaget mig.
:o)
Ikke mit eget hack men jeg var meget imponeret af Fabrice Bellard's Linux VM i javascript: http://bellard.org/jslinux/
Og så alligevel ikke. Fordi pdfTeX og luaTeX understøtter ikke PostScript, så TikZ/pgf har været nødt til at implementere en masse ting i ren TeX for at få deres tegne- og matematikpakker til at fungere i den mest populære TeX-engine. Prøv at åbne TikZ/pgf manualen (f.eks. ved at køre `texdoc pgf') og søg på atan2 eller log10.
Nå ja, jeg lavede forresten et program der kan konvertere bitmaps til HTML tabeller.
Eksempler:
http://www.b-rasmussen.dk/rudi/ibm.html
http://www.b-rasmussen.dk/rudi/luft.html
Programmet ligger her:
http://www.b-rasmussen.dk/rudi/bmp2tbl.zip
C64 online emulator - baseret på java-plugin :-/
http://www.64er-online.de/emulator/index.html
Er da ellers en klassiker programmet der ikke laver noget:
http://en.wikipedia.org/wiki/IEFBR14
Når jeg holder stille i en bilkø, så prøver jeg at finde primfaktorer i nummerpladen foran
Da jeg havde datalogi på HF var et af blokkene at lære grundlæggende programmeringselementer vha turtletalk, lave et program og en rapport over forløb og program. Jeg programmerede turtletalk til at fungere som en grafisk regnemaskine, til og med tredjegradligninger.
Er da ellers en klassiker programmet der ikke laver noget: http://en.wikipedia.org/wiki/IEFBR14
Det kvalificerer ikke nødvendigvis til titlen som Unødvendig Data Behandling - tværtimod er det et overordentligt brugbart program.
Hvis du derimod opgør den opnåede værdi pr. linie programkode, opnår IEFBR14 nok en af topplaceringerne.
Bjørn
Nej Jesper
Det hedder ikke Unødvendig DataBehandling
Det hedder SDB. S som i Skadelig, skødesløs, skammelig, Socialdemokratisk, SF'sk, Sjuftet, Sejlende, Sæbeoperask, Skrækkelig...
(Note: læs gerne, som var det Egon Olsen, der skældte!)
Mit bedste UDB hack er en lambda kalkyle fortolker til android.
Ikke særlig avanceret... men en glimrende måde at få et indtryk af Android SDK.
Det er da vist især en radikal ide - men de 2 andre kan også se deres fordele ved at industrial-scale valgsvindel bliver mulig
Sådan er det jo når man mener at man er bedre til at sammensætte folketinget end vælgerne er!
Interessant nok sker dette efter aftale (forhandlinger/partidisciplin) og i forening (flertal stemmer for). Hvad er det lige man kalder den slags!?
Mit bedste UDB hack er en lambda kalkyle fortolker til android.
Tak for inspirationen! Havde da helt glemt Unlambda sproget:
http://www.madore.org/~david/programs/unlambda/
http://en.wikipedia.org/wiki/Unlambda

