Вопрос

Язык является разрешенным, если Tm распознает язык и входит в принять или отклонить состояние. Как разработчик. Я думаю, что это важно, так как это будет означать, что мы могли бы определить, содержит ли программа переполнения буфера или тупики. Кроме того, следующие проблемы являются неофициальными проблемами:

  • Программа когда-либо доступа к неинициализированной переменной.
  • Два контекста бесплатные грамматики описывают ту же лангвауж.
  • Издает ли это значение, если параметры в подпрограмму передаются посредством ссылки или путем копирования результата

С точки зрения устойчивости того, что бы вы сказали, являются ключевыми моментами для выделения, и почему является важной устойчивостью (особенно для разработчика).

Примечание: пункты пули в порядке в ответах - я могу посмотреть темы сами. Я просто хочу знать, каковы основные моменты.

Это было полезно?

Решение

Может быть, это принадлежит в Cstheory Exchange., А в любом случае я пойду на это.

Ключевым моментом является: некоторые проблемы являются неразрешимыми, то есть не разрешимы алгоритмом, поэтому они должны быть решены другими методами. Среди этих проблем есть многие «мета-проблемы», касающиеся компьютерных языков, например, проблема обнаружение вируса.

Установив, что проблема неотлагается, существует несколько возможных курсов действий:

  1. Некоторые проблемы могут быть полученными, то есть есть семи-альгоритм, который решает некоторые случаи, но вечно петли на других случаях. При внедрении полуалгоритма положите таймер на него и верните no answer Когда время убегает.
  2. Решите только несколько, надеюсь, важные части проблемы, упрощая ее.
  3. 2 + Спросите пользователя ввода, когда проблема становится слишком сложной.
  4. Используйте эвристический, который получает правильный ответ наиболее времени.
  5. Используйте другой язык, возможно, не завершенный.

1-3 популярны для автоматических инструментов для рассуждения, включая проверки программы. 4 - какие вирусные сканеры делают. 5 это А. хороший выбор Позволяя пользователям писать скрипты для автоматизации большей системы; Вместо того, чтобы дать им полный JavaScript / схема / LUA / что угодно, дайте им ограниченное подмножество, которое не позволяет неограниченным рекурсионным / петлям.

Другие советы

Предположим, вы должны написать некоторое программное обеспечение, которое удовлетворяет условию: «При выполнении функции не должны вызывать вызов прямо или косвенно».

Это условие было бы неочищено, но более ограничительное условие может быть разрешено, например, что-то вроде: «Никакие указатели функций не должны использоваться, и никакая функция не должна содержать самих вызовов прямо или косвенно».

Это подчеркивает, что иногда можно торговать гибкостью для удаленности, так что некоторые требуемые свойства системы могут стать подлежащими принудительным.

Если язык программирования является разрешенным, то всегда будет возможность решить, является ли программа действительной программой для этого языка или нет.

Но даже если программа является действительной программой для этого языка, она остается неразрезана, может ли эту программу взимать переполнение буфера или тупик.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top