Investor's wiki

Turing valmis

Turing valmis

Turing Complete viittaa koneeseen, joka pystyy ratkaisemaan minkä tahansa laskennallisen ongelman, olipa se kuinka monimutkainen tahansa, annettuna riittävästi aikaa ja muistia sekä tarvittavat ohjeet. Termiä käytetään yleensä kuvaamaan nykyaikaisia ohjelmointikieliä, koska suurin osa niistä on Turing Complete (C++, Python, JavaScript jne.).

Mikä on Turingin kone?

Ennen nykyajan tietokoneita Alan Turing oletti, että jonain päivänä olisi kone, joka voisi ratkaista minkä tahansa ongelman. Tämä kone tunnettiin Turingin koneena.

Alan kuvitteli koneensa pitkänä nauhana, johon oli kirjoitettu binäärikoodin (1s ja 0s) muodossa olevaa tietoa. Koneessa olisi myös luku-/kirjoituspää, joka liikkuu nauhaa pitkin lukemassa jokaisen ruudun yksitellen. Koodi kysyisi koneelta laskennallisen ongelman, ja nauha olisi niin pitkä kuin tarvitaan ratkaisun saavuttamiseksi.

Kun pää liikkuu nauhaa pitkin, kone noudattaa yksinkertaisia ohjeita, jotka ohjaavat sen reagointia. Se lukee nauhan, noudattaa ohjeita ja suorittaa tietyn toiminnon kirjoittaakseen uuden koodin sen liikkuessa. Tämä uusi koodimalli on vastaus ongelmaan. Turingin hypoteettinen kone pystyi vastaamaan kaikkiin laskentaongelmiin, jotka voidaan ilmaista koodilla (ja jolla oli laskettavissa oleva vastaus).

Laite tai ohjelmointikieli katsotaan Turing Completeksi, kun se voi replikoida Turingin konetta suorittamalla mitä tahansa ohjelmaa tai ratkaisemalla minkä tahansa ongelman, jonka Turingin kone voisi suorittaa tai ratkaista. Toisaalta, jos laite tai ohjelmointikieli ei pysty tekemään sitä, sen sanotaan olevan Turing epätäydellinen.

Yksinkertainen laskin on esimerkki järjestelmästä, joka on epätäydellinen Turing, koska se voi tehdä vain muutaman tyyppisiä laskutoimituksia. Sitä vastoin ohjelmoitavaa tieteellistä laskinta (joka pystyy suorittamaan kaikenlaisia laskutoimituksia) voidaan pitää Turingin koneena.

Lohkoketju ja Turingin täydellisyys

Vaikka jotkin lohkoketjuteknologian sovellukset ovat Turing Complete, toiset ovat Turing Incomplete. Tämä vaihtelee käytetyn komentosarjatekniikan mukaan. Esimerkiksi Bitcoinissa käytetty skriptikieli on tarkoituksella suunniteltu Turing Incompleteksi, koska se palvelee tarkoitustaan ja lisääntynyt monimutkaisuus aiheuttaisi mahdollisesti ongelmia. Pitämällä sen yksinkertaisena, kehittäjät voivat ennustaa suurella tarkkuudella, kuinka se aikoo reagoida rajallisessa määrässä tilanteita, joissa sitä käytetään.

Ethereum puolestaan on rakennettu Turing Complete -lohkoketjuksi. Tämä on tärkeää, koska sen on ymmärrettävä älykkäiden sopimusten muodostavat sopimukset. Koska Ethereum on Turing Complete, se pystyy ymmärtämään ja toteuttamaan kaikki tulevat sopimukset, myös ne, joita ei ole vielä ajateltu. Toisin sanoen Ethereumin Turing Completeness tarkoittaa, että se pystyy käyttämään koodipohjaansa käytännössä minkä tahansa tehtävän suorittamiseen, kunhan sillä on oikeat ohjeet, tarpeeksi aikaa ja prosessointitehoa.