Kaj je Turingova popolnost?

Turingova popolnost je, ko je programski jezik sposoben izvajati funkcije Turingovega stroja. To je koncept za zelo osnovni mehanski računalnik, ki ga včasih opisujejo kot najpreprostejši stroj, ki ga lahko štejemo za računalnik. Skoraj vsi programski jeziki, ki se danes uporabljajo, in v teoriji, računalniki, ki jih poganjajo, imajo Turingovo popolnost.

Koncept Turingove popolnosti prihaja od Alana Turinga, britanskega računalničarja, katerega delo je vključevalo dešifriranje kodiranih sporočil med drugo svetovno vojno. Med njegovim delom na področju računalništva je bil razvoj filozofije o tem, kaj bi računalnik dejansko lahko naredil. To je vključevalo koncept, da računalniki delujejo preprosto z izvajanjem algoritmov. To pomeni, da sledijo določenemu nizu pravil za obdelavo podatkov in posledično reševanje težav. To pomeni, da računalnik ne “razmišlja” in ne sprejema odločitev, kot lahko človek.

Za ponazoritev koncepta je Turing opisal hipotetični stroj, ki ga je imenoval »a-stroj«, pri čemer »a« pomeni avtomatsko; drugi so ga pozneje imenovali Turingov stroj. Stroj bi obdelal kolut traku, ki bi se lahko premikal nazaj ali naprej in je vseboval vrstico simbolov. V vsakem trenutku lahko stroj obdela en simbol in ga po potrebi spremeni. Za namene koncepta je lahko kolut traku neskončno dolg, kar pomeni, da pomnilnik računalnika ni bil sam po sebi omejen. To je analogija z idejo, da ko ima računalnik nabor navodil, ki jim je treba slediti, je količina podatkov, ki jih lahko uporabi ta navodila, omejena le na fizične omejitve.

Ironično je, da večina današnjih računalnikov dejansko nima Turingove popolnosti. To je zato, ker imajo omejitve glede razpoložljivega prostora za shranjevanje in s tem podatkov, ki jih lahko obdelujejo. Imajo tudi fizične omejitve, predvsem to, da se bodo sčasoma obrabile. Pravzaprav je programski jezik, ki ima Turingovo popolnost. Zaradi tega računalnik, ki izvaja tak program, ni Turingov računalnik, ampak ga je mogoče uporabiti za simulacijo.

Turingove popolnosti ne smemo zamenjevati s Turingovim testom. To je bil poskus, ki ga je zasnoval Turing, da bi ugotovil, ali se računalniki lahko pogovarjajo v naravnem jeziku. Načelo testa je, da če človek ne more razlikovati med besedilnim pogovorom z računalnikom in drugim človekom, računalnik opravi test. Medtem ko so nekateri računalniki opravili test, ko je obseg pogovornih tem omejen, nobeden tega ni storil v neomejenem pogovoru.