오늘날 일반적인 범용 비 Turing 완전한 언어가 있습니까?


11

비 튜링 완전 언어는 훨씬 더 분석 가능하므로 훨씬 광범위한 최적화 가능성을 제공하므로 튜링 완전 언어에 비해 큰 이점을 제공합니다. 그러나 그것들은 거의 사용되지 않으며 Turing-completeness는 실제로 좋은 기능으로 판매됩니다.

오늘날 범용 프로그래밍을 위해 만들어진 주류 비 튜링 완료 언어가 있습니까?


8
나는 당신이 찾고있는 두 가지가 서로 호환되지 않는다고 생각합니다. 튜링이 완료 되지 않은 경우 임의로 사용할 수 없습니다 .
Bobson 2016 년

@ 독 카트 나는 질문을 다시 열고 의견에서 메타 토론을 제거했습니다. 사이트 가이드 라인 중 하나에 동의하지 않는 경우 메타 토론에 게시하는 것이 올바른 방법입니다. 그냥 무시하지 말고 또한 주관적인 질문의 경우 성공의 열쇠는 사전 연구와 엄격한 정의입니다. 더 많이 연구할수록, 질문이보다 구체적이고 (답변 할 수 있음), 악명 높은 "건설적이지 않은"공간에서 멀어집니다.
yannis 2016 년

또한 "광범위한 최적화 가능성"을 "큰 장점"으로 생각하는 이유는 무엇입니까? 이것은 최적화가 가치가 없다고 말하는 것은 아니지만, 현대 컴퓨터의 힘을 감안할 때 언어의 본질적인 최적화 가능성을 "큰 이점"이라고 부르지는 않을 것입니다.
Bobson 2016 년

2
Coq는 도메인에서 경쟁 업체 (HOL, Agda, ACL 등)가 훨씬 덜 눈에 잘 띄는 "주류"로 간주 될 수 있습니다.
SK-logic

어쩌면 나는 튜링 완성이 무엇인지 이해하지 못하지만 어떻게 언어가 범용 이고 튜링이 완전하지 않을 수 있습니까? 나는 튜링이 완전하지 않다는 의미는 계산 작업을 수행 할 수 없어서 특정 목적을 목표로하고 있다고 생각했다.
Aviv Cohn

답변:


24

오늘날 주류 다목적 비 Turing 완전한 언어는 없습니다. 그러나 Turing 이외의 완전한 도메인 특정 언어가 몇 가지 있습니다. ANSI SQL, 정규식, 데이터 언어 (HTML, CSS, JSON 등) 및 s- 표현식이 대표적인 예입니다.

다목적 비 Turing 완전한 언어에는 실제로 이점이 없습니다. 내가 라이스 정리에 끄덕 였다고 가정하고있는 "훨씬 더 분석 가능한"측면이 적용되지만 여러 다른 응용 분야를 대상으로하는 언어에는 그다지 의미가 없으며 다른 요구 사항이 우선합니다. 튜링 완성도의 유연성은 복잡성보다 훨씬 중요합니다. 다른 모든 소프트웨어와 마찬가지로 프로그래밍 언어는 모두 트레이드 오프에 관한 것입니다.

반면에 도메인 특정 언어의 경우 다른 방식 일 수도 있습니다. "모든 언어를 다룰 하나의 언어"를 작성하지 않는 경우 언어의 특정 목적에 적합한 기능 만 자유롭게 구현할 수 있습니다. 튜링 완성도는 그중 하나가 아닙니다.


CSS3 Turing-complete입니다.
SK-logic

5
@ SK-logic CSS는 HTML없이 의미가 있으며, 모든 종류의 XML에 적용 할 수 있으며, 거의 호환되는 형태 (이름이 지정된 노드가있는 트리, 형제 순서 등)를 가진 다른 형식으로 구현할 수 있습니다. SVG 파일에 대한 CSS 규칙을 개인적으로 작성했습니다. HTML은 다른 형식보다 훨씬 일반적이기 때문에 HTML에 훨씬 더 일반적입니다.

2
@ 마이크, 그것은 깨진 비유입니다. CSS3 시맨틱은 프리젠 테이션 언어 시맨틱과 밀접한 관련이 있습니다.
SK-logic

2
Windowing 및 CTE가있는 SQL (예 : SQL : 2003)도 Turing-complete입니다.
Jörg W Mittag

1
"오늘날 주류 다목적 비 Turing 완전한 언어는 없습니다." – 외부 저장 장치가없는 C는 Turing-complete가 아니지만 매우 범용적이고 주류입니다. (글쎄, 나는 개인적으로 그것이 유닉스 커널을 작성하기위한 도메인 특정 언어라고 주장 할 것이며, 특히
잘하지는

-3

튜링이 불완전한 언어가 주류가 아닌 이유는 필요할 때마다 원하는 언어를 쉽게 구현할 수 있기 때문입니다. 흥미로운 예는 비트 코인 스크립트입니다 : https://github.com/bitcoin/bitcoin/blob/master/src/script.cpp


5
정말? 쉬운 경우 Coq를 처음부터 직접 구현할 수 있습니까?
SK-logic

이것이 당신의 의견일까요, 아니면 어떻게 든 백업 할 수 있습니까?
gnat

예를 들어 재귀, 무제한 반복 또는 다른 Turing 타르타르가 필요없는 모든 도메인 별 언어가 있습니다. 또한 대부분의 사람들이 기본 산술을 처리하는 간단한 계산기를 구현했다고 확신합니다.
MauganRa

1
Turing-incomplete 언어를 유지하는 것은 사소한 것이 아니라는 것에 동의합니다. 명백한 Turing tarpits가 없어도 항상 기본 플랫폼 중 하나를 사용할 수있는 컴파일러 버그가 포함될 수 있습니다.
MauganRa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.