Turing komplett
Turing Complete refererer til en maskin som, gitt nok tid og minne sammen med nødvendige instruksjoner, kan løse ethvert beregningsproblem, uansett hvor komplekst det er. Begrepet brukes vanligvis for å beskrive moderne programmeringsspråk, da de fleste av dem er Turing Complete (C++, Python, JavaScript, etc.).
Hva er en Turing-maskin?
Før dagens datamaskiner antok Alan Turing at det en dag ville være en maskin som kunne løse ethvert problem. Denne maskinen ble kjent som Turing-maskinen.
Alan så for seg maskinen sin som et langt stykke bånd med informasjon skrevet på den i form av binær kode (1s og 0s). Maskinen vil også ha et lese-/skrivehode som beveger seg langs båndet og leser hver rute, en etter en. Koden ville spørre maskinen om et beregningsproblem, og båndet ville være så langt som var nødvendig for å oppnå en løsning.
Når hodet beveger seg langs båndet, følger maskinen enkle instruksjoner som styrer hvordan den reagerer. Den leser båndet, følger instruksjonene og utfører en bestemt handling for å skrive en ny kode mens den beveger seg. Dette nye kodemønsteret er svaret på problemet. Turings hypotetiske maskin kunne svare på ethvert beregningsproblem som kunne uttrykkes i kode (og som hadde et kalkulerbart svar).
En enhet eller et programmeringsspråk anses å være Turing Complete når det kan replikere en Turing-maskin ved å kjøre et hvilket som helst program eller løse ethvert problem som Turing-maskinen kan kjøre eller løse. På den annen side, hvis en enhet eller et programmeringsspråk ikke er i stand til å gjøre det, sies det å være Turing Incomplete.
En enkel kalkulator er et eksempel på et system som er Turing Incomplete siden det bare kan gjøre noen få typer beregninger. I motsetning til dette kan en programmerbar vitenskapelig kalkulator (i stand til å utføre alle typer beregninger) betraktes som en Turing-maskin.
Blockchain og Turing fullstendighet
Mens noen applikasjoner av blokkjedeteknologi er Turing Complete, er andre Turing Incomplete. Dette varierer i henhold til implementert skriptteknologi. For eksempel er skriptspråket som brukes i Bitcoin med hensikt utformet som Turing Incomplete fordi det tjener sin hensikt og økt kompleksitet vil potensielt introdusere problemer. Ved å holde det enkelt, kan utviklerne forutsi med høy nøyaktighet hvordan den kommer til å reagere i det begrensede antall situasjoner den brukes i.
Ethereum, derimot, er bygget som en Turing Complete blokkjede. Dette er viktig fordi det må forstå avtalene som utgjør smarte kontrakter. Ved å være Turing Complete har Ethereum evnen til å forstå og implementere enhver fremtidig avtale, selv de som ikke har vært tenkt på ennå. Med andre ord betyr Ethereums Turing Completeness at den er i stand til å bruke sin kodebase til å utføre praktisk talt enhver oppgave, så lenge den har de riktige instruksjonene, nok tid og prosessorkraft.