Investor's wiki

Turing komplet

Turing komplet

Turing Complete refererer til en maskine, der, givet nok tid og hukommelse sammen med de nødvendige instruktioner, kan løse ethvert beregningsproblem, uanset hvor komplekst det er. Udtrykket bruges normalt til at beskrive moderne programmeringssprog, da de fleste af dem er Turing Complete (C++, Python, JavaScript osv.).

Hvad er en Turing-maskine?

Før moderne computere havde Alan Turing en hypotese om, at der en dag ville være en maskine, der kunne løse ethvert problem. Denne maskine blev kendt som Turing-maskinen.

Alan forestillede sig sin maskine som et langt stykke bånd med information skrevet på den i form af binær kode (1'er og 0'er). Maskinen vil også have et læse-/skrivehoved, der bevæger sig langs båndet og læser hver firkant, én efter én. Koden ville stille maskinen et beregningsproblem, og båndet ville være så langt, som det var nødvendigt for at opnå en løsning.

Når hovedet bevæger sig langs båndet, følger maskinen enkle instruktioner, der styrer, hvordan den reagerer. Den læser båndet, følger instruktionerne og udfører en bestemt handling for at skrive en ny kode, mens den bevæger sig. Dette nye kodemønster er svaret på problemet. Turings hypotetiske maskine kunne besvare ethvert beregningsproblem, der kunne udtrykkes i kode (og som havde et kalkulerbart svar).

En enhed eller et programmeringssprog anses for at være Turing Complete, når det kan replikere en Turing-maskine ved at køre et hvilket som helst program eller løse ethvert problem, som Turing-maskinen kunne køre eller løse. På den anden side, hvis en enhed eller et programmeringssprog ikke er i stand til at gøre det, så siges det at være Turing Incomplete.

En simpel lommeregner er et eksempel på et system, som er Turing Incomplete, da det kun kan lave nogle få typer beregninger. I modsætning hertil kan en programmerbar videnskabelig lommeregner (i stand til at udføre alle slags beregninger) betragtes som en Turing-maskine.

Blockchain og Turing fuldstændighed

Mens nogle applikationer af blockchain-teknologi er Turing Complete, er andre Turing Incomplete. Dette varierer afhængigt af den implementerede scriptteknologi. For eksempel er det scriptsprog, der bruges i Bitcoin, bevidst designet som Turing Incomplete, fordi det tjener sit formål, og øget kompleksitet potentielt ville introducere problemer. Ved at holde det enkelt kan udviklerne forudsige med høj nøjagtighed, hvordan det vil reagere i det endelige antal situationer, hvor det bruges.

Ethereum er på den anden side bygget som en Turing Complete blockchain. Dette er vigtigt, fordi det skal forstå de aftaler, der udgør smarte kontrakter. Ved at være Turing Complete har Ethereum evnen til at forstå og implementere enhver fremtidig aftale, også dem, der endnu ikke er tænkt på. Med andre ord betyder Ethereums Turing Completeness, at den er i stand til at bruge sin kodebase til at udføre stort set enhver opgave, så længe den har de korrekte instruktioner, nok tid og processorkraft.