Интересно, является ли MATLAB полным по Тьюрингу (вычислительно универсальным)? - PullRequest
14 голосов
/ 29 марта 2009

Интересно, является ли MATLAB завершенным по Тьюрингу (= универсально в вычислительном отношении, т. Е. "Может ли он использоваться для имитации любой машины Тьюринга с одной лентой")?

Ответы [ 3 ]

38 голосов
/ 29 марта 2009

Быть завершенным по Тьюрингу - это довольно низкая планка для языков реального мира. Согласно Википедии (выделено мое):

Чтобы показать, что что-то завершено по Тьюрингу, достаточно показать, что его можно использовать для имитации некоторой полной системы Тьюринга. Например, императивный язык является полным по Тьюрингу, если он имеет условный ветвление (например, операторы «if» и «goto» или «ответвление, если ноль») инструкция. См. OISC) и возможность изменять произвольную память местоположения (например, способность поддерживать произвольное число переменные). Так как это почти всегда так, большинство, если не все императивные языки завершаются по Тьюрингу, если мы игнорируем какие-либо ограничения конечной памяти.

Помимо этого, MATLAB обладает многими функциями, которые можно ожидать от относительно современного 3GL / 4GL . Он включает в себя ВМ, ввод-вывод, конструкции пользовательского интерфейса, математические операторы (очевидно), типы данных, пользовательские функции и т. Д. Вы даже можете доставлять программы Matlab вне среды Matlab.

Обратите внимание, что это хороший язык - это совсем другой вопрос.

4 голосов
/ 29 марта 2009
3 голосов
/ 29 марта 2009

Полагаю, вы различаете языки программирования и языки сценариев, и из-за природы MATLAB он выглядит как язык сценариев? Если это так, ваше мнение может зависеть от того, что вы считаете языком программирования.

Я считаю, что MATLAB полон по Тьюрингу и имеет достаточно строгий и удобный синтаксис, поэтому я бы назвал его языком программирования. В то же время, однако, csh, вероятно, завершает тьюринг, но это настолько странно для программирования, что я бы назвал его языком сценариев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...