185 похожих чатов

Получается, от реализации языка зависит, будет ли он тьюринг-полным? Разве

это не значит, что реализации создают диалекты того языка, который есть на бумаге?

22 ответов

37 просмотров

ну, кажется, ограничение в виде максимального размера ArrayDeque это скорее деталь реализации, а не неполнота самого языка

Зависит не от реализации, а от спецификации языка. Если в спецификации Brainfuck никаких ограничений на размер памяти не указано — у него бесконечная память и он полон по Тьюрингу.

Alexander Chichigin
Зависит не от реализации, а от спецификации языка....

Тогда язык запросто может быть полным по Тьюрингу в теории и неполным - на практике?

А что, какой-то язык может быть полным по Тьюрингу "на практике"? Где-то есть бесконечная память? 😂

Раскопки Майтрейи Коц
Тогда язык запросто может быть полным по Тьюрингу ...

Разумеется. Конкретная реализация любого языка, к которой в принципе невозможно добавлять память (в виде дополнительных ячеек RAM, или ленты, или дисков и т.п.), теоретически не только не полна по Тьюрингу, а вообще эквивалентна... см. мой вопрос https://t.me/CompilerDev/121627 ;)

Alexander Chichigin
А что, какой-то язык может быть полным по Тьюрингу...

Например, в Hopcroft, John E.; Motwani, Rajeev; Ullman, Jeffrey D. (2013). "Introduction to Automata Theory, Languages, and Computation" это излагается немного не так: ————— If we examine a program such as Fig 8.2, we might ask whether it really searches for counterexamples to Fermat's last theorem. After all, integers are only 32 bits long in the typical computer, and if the smallest counterexample involved integers in the billions, there would be an overflow error before the solution was found. In fact, one could argue that a computer with 128 megabytes of main memory and a 30 gigabyte disk, has "only" 256³⁰¹²⁸⁰⁰⁰⁰⁰⁰ states, and is thus a finite automaton. However, treating computers as finite automata (or treating brains as finite automata, which is where the FA idea originated), is unproductive. The number of states involved is so large, and the limits so unclear, that you don't draw any useful conclusions. In fact, there is every reason to believe that, if we wanted to, we could expand the set of states of a computer arbitrarily. For instance, we can represent integers as linked lists of digits, of arbitrary length. If we run out of memory, the program can print a request for a human to dismount its disk, store it, and replace it by an empty disk. As time goes on, the computer could print requests to swap among as many disks as the computer needs. This program would be far more complex than that of Fig. 8.2, but not beyond our capabilities to write. Similar tricks would allow any other program to avoid finite limitations on the size of memory or on the size of integers or other data items. ————— Т.е. неограниченность решает, как я понимаю (ну и практическая полезность абстракции, см. второй параграф).

Yaroslav Schekin
Например, в Hopcroft, John E.; Motwani, Rajeev; Ul...

Да. С этим, вроде, никто и не спорит.

Alexander Chichigin
А что, какой-то язык может быть полным по Тьюрингу...

Ну, да - если каким-то белком читать очень длинную ДНК, то мы ограничены массой образования сверхновой 😁

Лимон Цитрусовый
Ну, да - если каким-то белком читать очень длинную...

Почему сверхновой? Как только массы хватит для образования любой звезды — оно начнёт светить вместо того чтобы транскрибировать... 🤷‍♀️

Алексей
То есть это не тьюринг полнота

Полнота, полнота — потому что звезда является компилятором же. 🤣

Alexander Chichigin
Полнота, полнота — потому что звезда является комп...

Даже если является всё равно не полнота. Тьюринг полнота говорит что лента должна быть бесконечной. А звезда очень даже конечна.

А вот некоторые авторы считают, что нет, см. цитату https://t.me/CompilerDev/121653 Неограниченные ресурсы — не то же самое, что бесконечные. Кстати, конечность Вселенной уже кто-то доказал? ;)

Yaroslav Schekin
А вот некоторые авторы считают, что нет, см. цитат...

А что, кто-то доказал её неограниченность? 😏

Alexander Chichigin
А что, кто-то доказал её неограниченность? 😏

Тоже нет. Так что на вопрос физической возможности настоящей МТ нет однозначного ответа, я так понимаю. ;)

Yaroslav Schekin
Тоже нет. Так что на вопрос физической возможности...

Всегда можно сбросить что-нибудь на чёрную дыру, и оно будет падать бесконечно долго и вытянется в бесконечно длинную спагетину... 😏

Yaroslav Schekin
А вот некоторые авторы считают, что нет, см. цитат...

Ну это я на самом деле говорил про буквальное определение Тьюринга про машину с бесконечной лентой. Понятное дело что на практике оно не применимо. Более того, даже если говорить про неограниченность - это тоже не очень применимо, потому как на практике наши возможности по безграничному наращиванию ресурсов весьма ограничены. По сути практичное определение тьюринг полноты должно говорить о том что у нас есть хоть конечная, но всё же очень очень длинная лента.

Алексей
Ну это я на самом деле говорил про буквальное опре...

Сегодня ограничены, завтра — менее ограничены (и так далее). Никто не говорил, что МТ должна работать непрерывно, или выполнять шаги с какой-то заданной скоростью и т.п. ;)

Алексей
Ну это я на самом деле говорил про буквальное опре...

Тут возникает разница между программой/алгоритмом и её конкретным выполнением, спецификацией и конкретной реализацией. Если в программе/спецификации не задано никаких ограничений по ресурсам — она неограничена, и нам ничего не остаётся как рассматривать/анализировать её как таковую — эквивалентную некоторой абстрактной машине Тьюринга. То, что конкретная реализация ограничена в ресурсах и является аппроксимацией к спецификации — отдельный вопрос, и мы можем анализировать границы применимости и строить иерархию аппроксимаций, и всякое такое прочее.

Ну это у вас [биологический] вид, да и Вселенная какие-то... некачественные ("большой разрыв" там какой-то и т.п., обожемой) — станьте получше и найдите себе уже Вселенную поприличнее, и наша MT™ будет прекрасно работать для вас! ;) Кроме шуток — https://t.me/CompilerDev/121669 , да.

В следующем году статье Саттера будет 20 лет. А народ ещё массово «пускает поезда под откос». https://www.cs.utexas.edu/~lin/cs380p/Free_Lunch.pdf

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта