Blackjack-kjoring

Blackjack-kjoring h1>

Dette ble lagt ut til Usenet av forfatteren, Ed Nather (& lt; [email protected]>), 21. mai 1983.

En nylig artikkel viet til macho-siden av programmering.

gjorde den skallede og uvarlige utsagnet:

i denne dekadente epoken av.

Lite ol, handkalkulatorer og «brukervennlig» programvare.

men tilbake i de gode gamle dager,

nar begrepet «programvare» hortes morsomt.

og ekte datamaskiner ble laget av trommer og vakuumror,

Ekte Programmorer skrev i maskinkode.

Ikke FORTRAN. Ikke RATFOR. Ikke, selv, monteringssprak.

Ra, unadorned, usynlig heksadesimale tall.

vokse opp i uvitenhet om denne herlige fortiden,

Jeg foler meg plikt til a beskrive,

sa godt jeg kan gjennom generasjonsgapet,

hvordan en ekte programmer skrev kode.

Jeg ringer til ham Mel,

fordi det var hans navn.

et naverdig datterselskap av skrivemaskinen.

Firmaet produserte LGP-30,

en liten, billig (etter dagens standarder)

og hadde nettopp begynt a produsere.

RPC-4000, en mye bedre,

storre, bedre, raskere – trommeminnet datamaskin.

Kjerne koster for mye,

og var ikke her for a bli, uansett.

(Det er derfor du ikke har hort om selskapet,

eller datamaskinen.)

for dette nye vidunderet og Mel var min guide til sine underverk.

Mel godkjente ikke kompilatorer.

han spurte, «hvor bra er det? �

det mest popul re dataprogram selskapet eide.

Det kjorte pa LGP-30.

og spilte blackjack med potensielle kunder.

pa dateshow.

Dens effekt var alltid dramatisk.

LGP-30-kabinen ble pakket pa hvert show,

og IBM-selgerne sto rundt.

snakker med hverandre.

Hvorvidt dette faktisk solgte datamaskiner.

var et sporsmal vi aldri diskuterte.

blackjack-programmet for RPC-4000.

(Port? Hva betyr det?)

Den nye datamaskinen hadde en pluss-en.

der hver maskininstruksjon,

i tillegg til operasjonskoden.

og adressen til den nodvendige operand,

hadde en annen adresse som angav hvor, pa den roterende trommelen,

neste instruksjon var lokalisert.

hver enkelt instruksjon ble etterfulgt av en GO TO!

Sett det i Pascals ror og royk det.

fordi han kunne optimalisere koden sin:

det vil si, finn instruksjoner pa trommelen.

slik at akkurat som en fullforte jobben sin,

den neste ville bare komme til «lesehodet»

og tilgjengelig for umiddelbar utforelse.

Det var et program for a gjore den jobben,

en «optimaliserende montor»,

men Mel nektet a bruke det.

han forklarte, «sa du ma bruke separate konstanter».

Siden Mel visste den numeriske verdien.

av hver operasjonskode,

og tilordnet sine egne tromadresser,

hver instruksjon han skrev kunne ogsa bli vurdert.

en numerisk konstant.

Han kunne hente en tidligere «legg til» instruksjon, si,

og formere med det,

hvis den hadde riktig numerisk verdi.

Koden hans var ikke lett for noen andre a endre.

med samme kode massert av optimaliseringsmonteringsprogrammet,

og Mel lop alltid raskere.

Det var fordi «top-down» -metoden for programdesign.

hadde ikke blitt oppfunnet enna,

og Mel ville ikke ha brukt det uansett.

Han skrev de innerste delene av hans programlokker forst,

sa de ville fa forstevalg.

av de optimale adresselokalene pa trommelen.

Optimaliseringsmontoren var ikke smart nok til a gjore det pa den maten.

selv nar balky Flexowriter.

Krevde en forsinkelse mellom utgaende tegn for a fungere riktig.

Han har bare plassert instruksjoner pa trommelen.

sa hver etterfolgende var rett forbi lesehodet.

nar det var nodvendig

trommelen matte gjennomfore en annen fullstendig revolusjon.

for a finne neste instruksjon.

Han laget en uforglemmelig periode for denne prosedyren.

Selv om «optimal» er et absolutt begrep,

som «unik», ble det vanlig muntlig praksis.

a gjore det relativt:

«Ikke helt optimal» eller «mindre optimal»

eller «ikke veldig optimal».

Mel kalte de maksimale tidsforsinkelsesstedene.

den «mest pessimale».

og fikk det til a lope.

(«Selv initialisereren er optimalisert»,

sa han stolt),

han fikk en endringsforesporsel fra salgsavdelingen.

Programmet brukte en elegant (optimalisert)

tilfeldig talgenerator.

a blande «kortene» og avtale fra «dekk»,

og noen av selgerne folte det var for rettferdig,

siden noen ganger tapte kundene.

De onsket at Mel skulle endre programmet.

sa, ved innstillingen av en folelsesbryter pa konsollen,

de kan endre oddsene og la kunden vinne.

Han folte at dette var apenbart u rlig,

og at det pavirket hans personlige integritet som programmerer,

sa han nektet a gjore det.

Sjefssalgeren snakket med Mel,

som gjorde Big Boss og, pa sjefens oppfordring,

noen fa medprogrammerere.

Mel endelig ga inn og skrev koden,

men han fikk testen bakover,

og nar folelsesbryteren ble slatt pa,

programmet ville jukse, vinne hver gang.

Mel var fornoyd med dette,

hevdet hans underbevissthet var ukontrollert etisk,

og adamantly nektet a fikse det.

Big Boss ba meg om a se pa koden.

og se om jeg kunne finne testen og reversere den.

Noe motvillig, jeg ble enige om a se.

Sporing Mels kode var et ekte eventyr.

hvis reelle verdi kan bare verdsettes.

av en annen versed i samme arcane kunst;

Det er herlige edelstener og stralende kupp.

skjult fra menneskelig syn og beundring, noen ganger for alltid,

av selve prosessen.

Du kan l re mye om et individ.

bare ved a lese gjennom koden hans,

selv i heksadesimale

Mel var, tror jeg, et uonsket geni.

da jeg fant en uskyldig lokke som ikke hadde noen test i den.

Sunn fornuft sa at det matte v re en lukket sloyfe,

hvor programmet skulle sirkel, for alltid, uendelig.

Programkontrollen passerte rett gjennom det, men,

og trygt ut pa den andre siden.

Det tok meg to uker a finne ut det.

kalt et indeksregister.

Det tillod programmoren a skrive en programsloyfe.

som brukte en indeksert instruksjon inni;

hver gang gjennom,

tallet i indeksregisteret.

ble lagt til adressen til den instruksjonen,

sa det ville referere.

til neste dato i en serie.

Han matte bare oke indeksregisteret.

hver gang gjennom.

Mel brukte aldri den.

legg til en til adressen sin,

og lagre den tilbake.

Han ville da utfore den endrede instruksjonen.

rett fra registret.

Sloyfen ble skrevet sa denne ekstra kjoretiden.

ble tatt i betraktning –

akkurat som denne instruksjonen er ferdig,

den neste var rett under trommens lesehode,

Men lokken hadde ingen test i den.

indeksregisteret bit,

biten som la mellom adressen.

og operasjonskoden i instruksjonsordet,

men Mel brukte aldri indeksregisteret,

forlater det null hele tiden.

Da lyset gikk pa, ble det nesten blindet meg.

n r toppen av minnet –

de storste stedene instruksjonene kan adressere –

sa, etter at siste dato ble handtert,

oke instruksjonsadressen.

ville gjore det overflodig.

B ren vil legge til en til.

driftskode, skift den til neste i instruksjonssettet:

en hoppinstruksjon.

Sikkert nok var neste programinstruksjon.

i adresseplassering null,

og programmet gikk lykkelig pa vei.

sa jeg vet ikke om han noen gang ga inn i flommen til.

endre som har vasket over programmeringsteknikker.

siden de lange dagerene.

Jeg liker a tro at han ikke gjorde det.

Jeg var imponert nok at jeg sluttet a lete etter.

forteller Big Boss jeg kunne ikke finne den.

Han virket ikke overrasket.

blackjack-programmet vil fortsatt jukse.

hvis du slar pa den riktige folelsesbryteren,

og jeg tror det er slik det burde v re.

Jeg folte meg ikke komfortabel.

hacking opp koden til en ekte programmerer.

Dette er en av hackerdoms store heroiske epikk, gratis vers eller nei. I noen fa ekstra bilder fanger det mer om estetikk og psykologi ved hacking enn alle de faglige volumene pa emnet satt sammen. (Men for motsatt synspunkt, se oppforingen for Real Programmer.)

[1992 postscript – forfatteren skriver: «Den opprinnelige innsending til nettet var ikke i fritt vers, eller noen tiln rming til det – det var rett prosess stil, i ikke-begrunnede avsnitt. I hoppende rundt nettet ble det tilsynelatende modifisert i «free vers» -formen na popul rt. Med andre ord ble det hakket pa nettet. Det synes hensiktsmessig, pa en eller annen mate. «Forfatteren legger til at han liker» free vers «-versjonen bedre enn sin prosa-original. ]

[1999 oppdatering: Mels etternavn er na kjent. Handboken for LGP-30 refererer til «Mel Kaye av Royal McBee som gjorde hoveddelen av programmeringen [. ] av ACT 1-systemet «.]

[2001: The Royal McBee LPG-30 viser seg a ha et annet krav til berommelse. Det viser seg at meteorologen Edward Lorenz gjorde v rsimuleringer pa en LGP-30 da han i 1961 oppdaget «Butterfly Effect» og computational kaos. Dette virker pa en eller annen mate passende.]


Hallo! Vil du spille i det mest populære kasinoet? Vi fant det for deg. Trykk her nå!