5

일부 프로그래밍 문제는 튜링 기계의 모든 기능을 필요로하지 않습니다. 그들은 훨씬 적은 힘으로 해결할 수 있습니다. 나는 더 적은 힘으로 프로그래밍 언어를 찾고있다. 스택에서 스택 팝 값에 값을 밀어 작업에결정 론적 푸시 다운 오토 마트의 힘을 가지며 더 이상 사용할 수없는 프로그래밍 언어가 있습니까?

  1. 스택 :

    은 이러한 기능을 지원하기 위해 제한되는 높은 수준의 프로그래밍 언어가 존재한다.

  2. 값을 입력하고, 상태에서 상태로 이동하고, 스택과 상호 작용하고 결과를 출력하는 유한 상태 기계 (FSM).

은 내가 (등) Java 또는 C 나 파이썬을 사용하여 단지 스택과 FSM을 사용하는 프로그램을 작성하여 언어를 제한 할 수 있다는 것을 알고 있습니다. 그러나, 나는 단지 이러한 기능을 갖춘 프로그래밍 언어를 찾고 있습니다.

즉, 결정 론적 푸시 다운 오토 마트의 힘 만 필요로하는 문제를 해결하기 위해 Turing-complete 프로그래밍 언어를 사용하고 싶지 않습니다. 결정 론적 푸시 다운 오토 마트의 힘을 가진 프로그래밍 언어 만 사용하고 싶습니다.

답변

0

간단히 말해서, 당신은 그 작은 힘으로 높은 수준의 언어를 찾지 않을 것입니다. 이것은 엄격하게 정의 된 것은 아니지만 높은 수준은 복잡성에 해당하는 일정량의 추상화를 의미합니다.

그러나 이것은 문제가되지 않습니다. 너무 많은 전력을 사용하는 것에 대해 걱정할 필요가 없습니다. 컴퓨터 언어, 표준 적으로 효율적인 언어 (최소한의 오버 헤드)는 Turing이 완료되어 효율성이 이론적 인 힘에 밀접하게 결부되어 있지 않음을 나타냅니다.

+2

질문자가 효율성을 찾고있는 것이 아니라 대신 Turing Machine보다 적은 전력으로 계산 모델을 사용하여 제공되는 멋진 속성입니까? 어쩌면 그는 튜링 머신으로 결정할 수없는 자신의 프로그램의 속성을 추론 할 수 있기를 기대했지만 덜 강력한 계산 모델에 대해서는 결정할 수있을 것입니다. – Guildenstern

+0

좋은 지적, 감사합니다! 제 생각에 그 대답은 아마도 "아마도 그 작은 힘을 가진다면 아마 프로그래밍 언어라고 부르지 않을 것"이라고 다시 돌아갈 것이라고 생각합니다. 좋은 예제를 찾을 수는 없지만, 이런 종류의 "접착제"언어 또는 간단한 스크립팅 엔진에서이 종류를 발견 할 수 있을지도 모릅니다. 정규 표현식은 (단순한 형태로) 유한 상태 기계와 정식으로 동등합니다. 이 질문은 http://stackoverflow.com/questions/315340/practical-non-turing-complete-languages에 흥미로운 해답이 있습니다. – akroy

0

LR (1) 문법은 언어에 대한 LR (1) 문법이있는 경우 LR (1) 문법이 정확하게 결정적인 PDA의 능력을 포착합니다. . 따라서 yacc 또는 bison과 같은 도구를보고 LR (1) 문법을 사용하도록 설정하고 임의의 코드로 의미있는 동작을 허용하지 않으면 남은 것은 정확하게 권력을 가진 프로그래밍 환경이라고 주장 할 수 있습니다 결정적 PDA의 그것은 약간의 뻗기 (틀림없이) 다. :-)

희망이 있습니다.