Malbnung

Malbolge er et esoterisk programmeringsspråk for offentlig domene , som i 1998 av Ben Olmstead ble utviklet. Den ble oppkalt etter den åttende helvetesirkelen fra Dantes Divina Commedia .

Spesialiteten til Malbnung er at den ble designet for å være et verst mulig programmeringsspråk som er vanskeligst å mestre. På grunn av det begrensede minnet er Malbole imidlertid bare Turing-komplett med litt modifiserte behandlingsregler .

Generell

Bevis på den vanskelige utviklingen av programmer er at det første Malbendung-programmet bare ble opprettet to år etter at programmeringsspråket dukket opp. Dette programmet ble ikke programmert av et menneske, men funnet av et program skrevet i Lisp ved hjelp av en søkealgoritme . Dette søkeprogrammet ble utviklet av Andrew Cooke.

Det er flere grunner til at Malbenue er så vanskelig. Det viktigste er at kommandoer erstattes av andre kommandoer etter at de er utført. Dette gjør det veldig tidkrevende å lage løkker i en malingssekvens. Andre faktorer som vanskeliggjør programmering i Malbsequence inkluderer det faktum at dataord bare kan manipuleres i det ternære tallsystemet ved hjelp av et høyre skift og en veldig uvanlig operatør. I tillegg er det ved koding av en kommando ved hjelp av en ASCII- tegn er avhengig av posisjonen av kommandoen modulo 94 og minneceller kan bare bli initialisert med ett av åtte mulige ASCII-verdier.

Likevel klarte Lou Scheffer å utvikle et program som kopierer sine innspill til utdataene. Rapporten hans avsluttes med forslag til hvordan du kan gjøre språket enda vanskeligere å mestre.

Grunnleggende funksjonalitet til Malbenue

Malbammlung har de tre registerene a , c og d og et minne av størrelsen som kan lagre et ti-sifret ternært heltall i hver celle .

initialisering

Kildekoden filtreres først og leses inn i størrelsesminnet uten mellomrom eller tegn på ny linje . Det fremdeles ledige ledige minnet blir deretter kodet med den galne funksjonen: [m] = crz ([m - 2], [m - 1])

Markørnotasjon

Registerene c og d inneholder minneadresser, med [c] og [d] verdien som er lagret på disse adressene er angitt.

Instruksjonssett

Malbammlung har 8 kommandoord . Gjeldende instruksjon bestemmes ved å legge til innholdet av [c] og c og deretter beregne modulo 94. Resultatet blir deretter sammenlignet med følgende verdier:

Kommandoer
Resultat fra
([c] + c)% 94
betydning Forklaring
4. plass jmp [d] Sett instruksjonspekeren c til [d] .
5 ut a Output av tegnet hvis ASCII- verdi er lagret i en .
23 i en Oppføring av et tegn hvis ASCII-verdi er lagret i en . Enter er kodet med 10 , end-of-file markering med 59048 .
39 rotr [d]
mov a, [d]
Høyre rotasjon av tallet i [d] , d. H. det siste sifferet i den ternære skjermen er lagt til foran, resten flyttes til høyre. Fra 000211111 2 z. B. 2 000211111. Resultatet lagres i både [d] og a .
40 mov d, [d] Kopierer verdien fra [d] til d .
62 crz [d], a
mov a, [d]
Bruker den galne funksjonen til verdien av [d] og a . Resultatet er da tilgjengelig i [d] og a .
68 nop Glem det.
81 slutt Avslutter programmet.
Hver annen verdi oppfører seg som 68 .

Etter hver operasjon er [c] kryptert. Deretter økes c og d med en.

Gal funksjon

De to overførte numrene er kodet siffer for siffer i henhold til tabellen. For eksempel fra 0120120120 0001112220 crz, nummeret 1001022211 .

Gal funksjon
crz Inngang 2
0 1 2
Inngang 1 0 1 0 0
1 1 0 2
2 2 2 1

Kryptering

Etter at instruksjonen er utført, men før c økes , permitteres [c] ved hjelp av en kodetabell .

Hei Verden

Dette Malbbey-programmet trykker " Hei, verden. "

 (=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**
 hKs_dG5[m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O<

Andre programmer i Malbenue

Det er nå ikke lenger et problem å skrive programmer i rekkefølge som bare sender ut en fast streng med begrenset lengde. Lengden på strengen er begrenset fordi Malbolge-programmer ikke kan inneholde mer enn 59049 kommandoer.

I tillegg til det ovennevnte katteprogrammet av Lou Scheffer (som utnytter en feil i tolken som gjør det mulig å initialisere minneceller med ikke-ASCII-tegn), er det så langt (per desember 2012) svært få programmer i Malbnung som buer inkludert. En av dem er et annet katteprogram, men det fungerer også uten å utnytte tolkefeilen. Et av de mest imponerende programmene i Malbole vil sannsynligvis være et program som dukket opp i 2005 som gir ut teksten til sangen " 99 Bottles of Beer " og bruker ikke-trivielle løkker og betingede grener til dette. Koden til dette programmet kan ikke leses av et menneske. Et annet program i Malbenue som fungerer med ikke-trivielle sløyfer og betingede grener er en Quine , utgitt i slutten av 2012 .

Populær kultur

  • I den tiende episoden av Elementary TV-serien , Leviathan , sies det at det ble skrevet en undersøkende hovedrolle i Malbole.

Individuelle bevis

  1. Episode "Leviathan". Elementær . Episode 10, Season 1. CBS . 14. desember 2012.

weblenker