Цялостност по Тюринг: Разлика между версии

Изтрито е съдържание Добавено е съдържание
м замяна на чужда езикова препратка
м - ден днешен; козметични промени
Ред 3:
В [[Изчислителна теория|изчислителната теория]], система от правила за манипулация на данни (като набор от инструкции на компютъра, [[Език за програмиране|програмен език]], или клетъчен автомат) се смята за цялостна по Тюринг или изчислително универсална, ако може да се използва за симулиране на която и да било еднолентова машина на Тюринг. Концепцията е наречена на името на английския математик [[Алън Тюринг]]. Класически пример е [[Анонимна функция|ламбда функцията]].
 
Тясно свързана концепция е тази за Тюрингова еквивалентност – два компютъра P и Q се наричат ​​еквивалентни, ако P може да симулира Q, то и Q може да симулира P. Тезата [[Тезис_на_ЧърчТезис на Чърч|„The Church-Тюринг“]] предполага, че всяка функция, чиито стойности могат да бъдат изчислени чрез [[алгоритъм]] може да бъдат изчислени от една машина на Тюринг, и следователно ако реален компютър може да бъде симулиран от машина на Тюринг, то той е Тюрингов еквивалент на машина на Тюринг. Универсална Тюрингова машина може да се използва за симулиране на всяка машината на Тюринг и по подразбиране на изчислителните аспекти, на който и да било реален компютър.
 
За да докажем, че нещо е цялостно по Тюринг, е достатъчно да се докаже, че може да се използва за симулиране на някаква цялостна Тюринг система. Например, [[Императивно програмиране|императивен език на програмиране]] е цялостен по Тюринг, ако има условно разклоняване (например, „if“ и „go to“ изявления, или „разклони в случай на нула" инструкция. Виж OISC<ref>[https://en.wikipedia.org/wiki/Office_of_the_Immigration_Services_Commissioner IOSC]</ref>) и способността да променя произволно количество [[Компютърна памет|памет]] (например умението да поддържа произволен брой променливи). Тъй като това почти винаги е така, повечето (ако не всички) императивни езици са Тюринг цялостни, ако се игнорира ограничението на крайното количество памет.
 
== История ==
Цялостност по Тюринг е показател за това, че всеки дизайн на изчислително устройство в реалният свят може да бъде симулиран, чрез универсалната [[машина на Тюринг]]. В [[Тезис_на_ЧърчТезис на Чърч|тезиса на Чърч]] се посочва, че това е закон на математиката който гласи, че една универсална машина Тюринг може, по правило, да извърши всички изчисления, които всеки друг програмируем компютър може. Това не е показателно за усилията, които са необходими да се напише програмата или времето, което ще отнеме на машината да извърши изчислението, нито за каквито и да е способности, които машината може да притежава и нямащи нищо общо със самите изчисления.
 
Първата цялостна по Тюринг машина е щяла да бъде ''Аналитичният двигател'' на [[Чарлз Бабидж]] (1830 г.), ако е била построена, но тя остава само проект. Бабидж твърдял, че машината е в състояние да извършва изключителни постижения в изчислението, включително примитивно логическо мислене, но той не е предполагал, че никоя друга машина не може да се справи по-добре. От 1830 до 1940 г., механични сметачни машини, като например разширители и мултипликатори са били построени и подобрени, но те не са могли да изпълняват условни преходи и следователно не са били цялостни по Тюринг.
Ред 19:
В разговорният език понятието „Цялост по Тюринг“ или „Тюринг еквивалентност“ се използва, за да се обясни това, че който и да е компютър в реалният свят с общо предназначение или в компютърният език, може приблизително да изчисли стимулирането на промени в изложението, на който и да е друг компютър в реалният свят с общо предназначение или компютърен език.
 
Реалните компютри, изградени до ден днешен, са основани на една единствена лента на Машината на Тюринг. Следователно математически е възможно, чрез абстракция, те да бъдат експлоатирани от достатъчно голямо разстояние. Истинските компютри имат ограничени технически ресурси, така че те са автоматично праволинейно ограничени. За разлика от тях, универсалният компютър се определя като устройство с пълен набор от команди на Тюринг, безгранична памет и неизчерпаема достъпност до него.
 
== Тюринг Oracle ==
Ред 52:
 
=== Езици за бази данни ===
Понятието за цялостност по Тюринг не се прилага за езици като [[XML]], [[HTML]], [[JSON|JSON (JavaScript Object Notation)]], YAML и S-expressions, защото обикновено се използват за представяне на структурирани данни, а не за описване на изчисления. Понякога се наричат [[Маркиращ език|маркиращи ​​езици]], или по-правилно като „контейнер езици“ или " езици за описване на данни". Въпреки това, Rule 110<ref>[https://en.wikipedia.org/wiki/Rule_110 Rule 110]</ref>, цялостен по Тюринг клетъчен автомат, е бил успешно приложена в CSS<ref>[https://bg.wikipedia.org/wiki/CSS [CSS]]</ref>(Cascading Style Sheets), доказвайки по този начин (до определена степен) неговата цялостност по Тюринг (в действителност не всеки е съгласен с това, например Франсис Маккейб твърди, че CSS не е цялостен по Тюринг, тъй като няма опция за дефиниране на функции).
 
== Примери ==
Ред 89:
Презаписващите системи също са Тюринг-цялостни.
 
Цялостност по Тюринг е по-скоро абстрактно изявление за способност, отколкото определяне на специфичните особености на езика, използвани за осъществяването на тази способност. Характеристиките, използвани за постигането на тази способност, могат да са доста различни; [[FORTRAN|Фортран]] системите биха използвали циклични конструкции или дори „goto“ изявления за постигане на повторение; Haskell и Prolog, при които почти изцяло липсват цикли, ще използват [[рекурсия]]. Повечето програмни езици описват изчисления по структурирането на фон Нойман, което има памет (RAM<ref>[https://bg.wikipedia.org/wiki/Оперативна_памет[Оперативна памет#RAM |RAM]]</ref> и регистър) и блок за управление. Тези два елемента правят тази структура цялостна по Тюринг. Дори чисто [[Функционално програмиране|функционалните езици]] са цялостни по Тюринг.
 
Тюринг-цялостност в декларативния [[SQL]] се постига чрез общи рекурсивни изрази. Не е изненадващо, че процедурните разширения на SQL (PLSQL и т.н.) също са цялостни по Тюринг. Това показва една от причините защо сравнително мощни не-цялостни по Тюринг езици са рядкост: колкото по-мощен е езикът първоначално, толкова по-сложни са задачите, за които се прилага и толкова по-скоро липсата му на завършеност се възприема като недостатък, което насърчава неговото разширяване, докато стане Тюринг цялостен.
Ред 124:
** [[Principle of Computational Equivalence]]
* [[Тезис на Чърч]]
* [[Цикъл_Цикъл (програмиране)#.D0.92.D0.BB.D0.BE.D0.B6.D0.B5.D0.BD.D0.B8_B8 .D1.86.D0.B8.D0.BA.D0.BB.D0.B8|Цикъл_(програмиране)]]
* [[Algorithmic information theory]]
* [[Inner loop]]