Ukończono Turinga
Turing Complete odnosi si臋 do maszyny, kt贸ra maj膮c wystarczaj膮c膮 ilo艣膰 czasu i pami臋ci wraz z niezb臋dnymi instrukcjami, mo偶e rozwi膮za膰 ka偶dy problem obliczeniowy, bez wzgl臋du na jego z艂o偶ono艣膰. Termin ten jest zwykle u偶ywany do opisania nowoczesnych j臋zyk贸w programowania, poniewa偶 wi臋kszo艣膰 z nich to Turing Complete (C++, Python, JavaScript itp.).
Co to jest maszyna Turinga?
Przed wsp贸艂czesnymi komputerami Alan Turing postawi艂 hipotez臋, 偶e pewnego dnia pojawi si臋 maszyna, kt贸ra mo偶e rozwi膮za膰 ka偶dy problem. Maszyna ta sta艂a si臋 znana jako Maszyna Turinga.
Alan wyobrazi艂 sobie swoj膮 maszyn臋 jako d艂ugi kawa艂ek ta艣my z zapisanymi na niej informacjami w postaci kodu binarnego (1s i 0s). Maszyna mia艂aby r贸wnie偶 g艂owic臋 odczytuj膮co-zapisuj膮c膮, kt贸ra porusza艂aby si臋 wzd艂u偶 ta艣my, odczytuj膮c ka偶dy kwadrat, jeden po drugim. Kod zada艂by maszynie problem obliczeniowy, a ta艣ma by艂aby potrzebna do osi膮gni臋cia rozwi膮zania.
Gdy g艂owa porusza si臋 wzd艂u偶 ta艣my, maszyna wykonuje proste instrukcje, kt贸re reguluj膮 jej reakcj臋. Odczytuje ta艣m臋, post臋puje zgodnie z instrukcjami i wykonuje okre艣lon膮 czynno艣膰, aby napisa膰 nowy kod w miar臋 przemieszczania si臋. Ten nowy wzorzec kodu jest odpowiedzi膮 na problem. Hipotetyczna maszyna Turinga mog艂a odpowiedzie膰 na ka偶dy problem obliczeniowy, kt贸ry mo偶na wyrazi膰 w kodzie (i kt贸ry mia艂 obliczaln膮 odpowied藕).
Urz膮dzenie lub j臋zyk programowania uwa偶a si臋 za kompletne Turinga, gdy mo偶e replikowa膰 maszyn臋 Turinga, uruchamiaj膮c dowolny program lub rozwi膮zuj膮c dowolny problem, kt贸ry maszyna Turinga mo偶e uruchomi膰 lub rozwi膮za膰. Z drugiej strony, je艣li urz膮dzenie lub j臋zyk programowania nie jest w stanie tego zrobi膰, m贸wi si臋, 偶e jest to Turing niekompletny.
Prosty kalkulator jest przyk艂adem systemu, kt贸ry jest niekompletny wed艂ug Turinga, poniewa偶 mo偶e wykona膰 tylko kilka rodzaj贸w oblicze艅. W przeciwie艅stwie do tego, programowalny kalkulator naukowy (zdolny do wykonywania wszelkiego rodzaju oblicze艅) mo偶na uzna膰 za maszyn臋 Turinga.
Blockchain i kompletno艣膰 Turinga
Podczas gdy niekt贸re zastosowania technologii blockchain to Turing Complete, inne s膮 Turing Incomplete. R贸偶ni si臋 to w zale偶no艣ci od wdro偶onej technologii skrypt贸w. Na przyk艂ad j臋zyk skryptowy u偶ywany w Bitcoin jest celowo zaprojektowany jako Turing Incomplete, poniewa偶 spe艂nia swoje zadanie, a zwi臋kszona z艂o偶ono艣膰 mo偶e potencjalnie powodowa膰 problemy. Dzi臋ki prostocie programi艣ci mog膮 z du偶膮 dok艂adno艣ci膮 przewidzie膰, jak zareaguje w sko艅czonej liczbie sytuacji, w kt贸rych zostanie u偶yty.
Z drugiej strony Ethereum jest zbudowany jako 艂a艅cuch blok贸w Turing Complete. Jest to wa偶ne, poniewa偶 musi rozumie膰 umowy, kt贸re sk艂adaj膮 si臋 na inteligentne kontrakty. B臋d膮c Turing Complete, Ethereum ma mo偶liwo艣膰 zrozumienia i wdro偶enia wszelkich przysz艂ych um贸w, nawet tych, o kt贸rych jeszcze nie pomy艣lano. Innymi s艂owy, kompletno艣膰 Turinga Ethereum oznacza, 偶e jest on w stanie wykorzysta膰 swoj膮 baz臋 kodu do wykonania praktycznie ka偶dego zadania, o ile ma odpowiednie instrukcje, wystarczaj膮c膮 ilo艣膰 czasu i moc obliczeniow膮.