기능 언어 튜링이 완벽한 이유는 무엇입니까?


22

아마도 주제에 대한 나의 제한된 이해가 잘못되었지만 이것이 내가 지금까지 이해 한 것입니다.

  • 함수형 프로그래밍은 Alonzo Church가 공식화 한 Lambda Calculus를 기반으로합니다.

  • 명령형 프로그래밍은 교회 학생 인 Alan Turing이 만든 Turing 머신 모델을 기반으로합니다.

  • 람다 미적분은 튜링 머신만큼 강력하고 성능이 뛰어나
    계산 능력과 동등합니다.

함수형 프로그래밍이 Turing 머신이 아닌 Lambda Calculus를 기반으로하는 경우, 그 중 일부 (또는 모두)가 Turing이 완료된 것으로 설명되고 Lambda가 완료되지 않은 이유는 무엇입니까? "완전 완전성"이라는 용어는 튜링 기계에 어떤 식 으로든 특별합니까, 아니면 단어입니까?

마지막으로 명령형 언어가 Turing Machine을 기반으로하고 컴퓨터가 기본적으로 무한 메모리가없는 Turing 시스템 인 경우, 현대 PC에서 기능적 프로그래밍 언어보다 성능이 우수합니까?

그렇다면 람다 미적분학 기계와 같은 것이 무엇입니까?

나는 이것이 3 개의 별개의 질문 인 것처럼 알고 있지만, 그것들은 모두 밀접하게 관련되어 있으며, 각각은 이전 질문이 유효한 질문 인 시작 질문에 의존합니다.


6
답은 아니지만 람다 미적분학의 모든 버전이 Turing Complete는 아닙니다. 단순 유형 람다 미적분법과 종료 검사를 기반으로 한 더 강력한 Coq 및 Agda 버전은 Turing Complete가 아닙니다 (정지 가능한 중지 문제가 있기 때문). Haskell 및 SML과 같은 강력한 형식의 언어는 type이라는 용어 인 고정 소수점 조합을 사용하여 임의의 재귀를 허용함으로써이 문제를 해결합니다 (a -> a) -> a.
jmite

"Turing complete로 정의되었다"고 말하는 것은 잘못입니다. 제목을 변경할 수 있습니까?
Andrej Bauer

@AndrejBauer 제목 편집 주셔서 감사합니다,하지만 난 그것의가 (이유를 궁금 전체 켜기로 정의 잘못을)? 형용사인가요? 정의하는 것보다 더 나은 단어로 설명 할 수 있습니까?
Abdul

1
@Abdul 음, 문제는 "정의 된"이라는 단어입니다. "기능 언어가 Turing complete"로 정의되어 있으면 "기능 언어"의 정의 또는 "Turing complete"의 정의에 따라 기능 언어가 Turing complete라고되어 있습니다. 사실, 어느 정의도 그렇게 말하지 않습니다.
Tanner Swett

답변:


20

간단히 말해서 :

튜링 머신 및 PC와 같은 일반적인 컴퓨터 (투어링 머신보다는 랜덤 액세스 머신 (RAM)에 더 가까운)에 가까운 명령형 프로그래밍 언어의 특징은 저장하도록 수정할 수 있는 명시 적 메모리 의 개념입니다 (중간 결과). ). 계산이 진행됨에 따라 변경 될 수있는 상태 개념 (유한 상태 제어 및 메모리 내용 모두 포함)을 가진 계산의 자동보기입니다.

대부분의 다른 모델은 더 추상적입니다. 그것들은 원래 구조의 연속적인 변환 단계로서 계산을 표현할 수 있지만, 이러한 변환은 일종의 일시적인 수학적 의미의 우주에 적용됩니다. 이것은 참조 투명성과 같은 속성을 보존하여 수학적 분석을 더 간단하게 만들 수 있습니다. 그러나 기억의 한계에 의존하는 자연적인 물리적 모델과는 거리가 멀다.

따라서 소프트웨어는 실제로 하드웨어와 분리 할 수 ​​없기 때문에 아래에서 설명하는 것처럼 더 큰 의미를 제외하고는 자연적인 기능적 기계가 없습니다.

계산 가능성의 척도로 튜링에 대한 언급은 아마도 그의 모델 인 튜링 머신이이 물리적 실현 가능성 제약 조건에 가장 근접하여 더 직관적 인 계산 모델이 되었기 때문일 것입니다.

추가 고려 사항 :

가장 일반적인 방법으로 계산 개념을 캡처하도록 설계된 많은 계산 모델이 있습니다. 여기에는 실제로 여러 가지 맛의 튜링 머신, 람다 미적분학 (풍미), 반 색조 재 작성 시스템, 부분 재귀 기능, 조합 논리가 포함됩니다.

그들은 모두 수학자들이 계산을 표현하거나 수행하기 위해 사용하는 다양한 기술의 일부 측면을 포착합니다. 그리고 대부분은 일부 프로그래밍 언어 디자인 (예 : 시스템 재 작성을위한 Snobol , 콤비 네이터를 위한 APL , 람다 미적분을위한 Lisp / Scheme) 의 기초로 어느 정도 사용 되었으며 현대 프로그래밍 언어에서 다양한 방식으로 결합 될 수 있습니다.

하나의 주요 결과는 이러한 모든 계산 모델이 동등하다는 것이 입증되었으며, 이는 실제로 실현 가능한 계산 모델이이 모델들보다 더 많은 것을 할 수 없다는 교회-투어링 논문으로 이어진다. 계산 모델은 이러한 모델 중 하나와 동등한 것으로 판명 될 수 있으면 튜링이 완료 되었다고 말하며 , 따라서 모든 모델과 동일합니다.

이름이 다를 수 있습니다. Turing machine (TM)을 기준으로 선택하는 것은 아마도이 모델 중 가장 단순하기 때문에 인간이 계산하고 구현하기 쉬운 (유한 한 유한 형식으로) 밀접하게 (단순하게) 흉내 났기 때문일 것입니다 ) 튜링 머신이 레고 세트로 구성된 정도까지 물리적 장치로 사용됩니다 . 기본 아이디어는 수학적으로 정교하지 않아도됩니다. 이 참조 위치를 제공 한 것은 모델의 단순성과 실현 가능성 일 것입니다.

Alan Turing이 컴퓨팅 장치를 만들었을 때, 계산에 대한 공식적인 정의, 수학의 기초에 중요한 문제로 작용하기위한 다른 제안들이 제시되었습니다 ( Entscheidungsproblem 참조 ). 튜링 제안은 당시의 전문가들에 의해 계산 가능성이 무엇인지에 대한 알려진 연구를 가장 확실하게 포괄하는 것으로 간주되었습니다 ( 1996 년 RI Soare, 계산 및 재귀 참조). 다양한 제안이 동등한 것으로 판명되었지만 Turing 's는 더 설득력이있었습니다. [Yuval Filmus의 코멘트로부터]

하드웨어 관점에서 볼 때, 우리 컴퓨터는 Turing 머신이 아니라 RAM (Random Access Machines )이라고 불리는데 이는 Turing이 완료된 것입니다.

순전히 명령형 언어 (의미 할 수있는 것)는 아마도 튜링 머신과 같은 가장 기본적인 모델이나 컴퓨터의 어셈블리 언어 (2 진 코딩 생략)에 사용되는 형식주의 일 것입니다. 둘 다 읽을 수 없으며 악명 높은 프로그램을 작성하기가 매우 어렵다. 실제로 어셈블리 언어조차도 기계 명령어를 직접 사용하는 것과 비교하여 약간의 프로그래밍이 용이하도록 몇 가지 고급 기능이 있습니다. 기본적인 명령형 모델은 실제 세계와 밀접한 관계가 있지만 유용하지는 않습니다.

이로 인해 상위 수준의 계산 모델이 빠르게 개발되어 서브 프로그램 및 함수 호출, 메모리 위치 이름 지정, 이름 범위 지정, 수량화 및 더미 변수와 같은 다양한 계산 기술이 이미 일부 형태로 사용되었습니다. 수학과 논리, 그리고 심지어 반사 와 같은 매우 추상적 인 개념에서 ( Lisp 1958).

명령 언어, 명령, 기능, 논리, 객체 지향과 같은 프로그래밍 패러다임으로 프로그래밍 언어를 분류하는 것은 언어 설계에서 이러한 기술 중 일부의 우수성과 프로그램의 일부 속성을 강제하는 일부 컴퓨팅 기능의 존재 여부에 기반합니다. 또는 언어로 작성된 프로그램 조각.

일부 모델은 실제 기계에 편리합니다. 일부는 설명 할 알고리즘의 유형에 따라 알고리즘에 대한 높은 수준의 설명에 더 편리합니다. 일부 이론가는 비결정론 적 알고리즘 사양을 사용하기도하며 심지어 더 일반적인 프로그래밍 용어로 번역 될 수도 있습니다. 그러나 필요에 따라 각 모델을 다른 모델로 변환 할 수있는 정교한 컴파일러 / 인터프리터 기술을 개발했기 때문에 불일치 문제는 없습니다 (교회-투어링 논문의 기초이기도합니다).

이제 컴퓨터를 원시 하드웨어로 보지 마십시오. 매우 기본적인 처리를 수행하는 부울 회로가 포함되어 있습니다. 그러나 대부분은 컴퓨터 내부의 마이크로 프로그램에 의해 구동됩니다. 그런 다음 컴퓨터와 하드웨어가 다르게 보이는 운영 체제가 있습니다. 그 외에도 바이트 코드를 실행하는 가상 컴퓨터와 Pyva 및 Jathon 또는 Haskell과 같은 고급 언어가있을 수 있습니다 바이트 코드로 컴파일 할 수있는 OCaml 또는 OCaml입니다.

각 수준에서 다른 계산 모델을 볼 수 있습니다. 하드웨어 수준을 소프트웨어 수준과 분리하여 특정 계산 모델을 기계에 할당하는 것은 매우 어렵습니다. 그것들은 모두 상호 번역이 가능하기 때문에 궁극적 인 하드웨어 계산 모델의 아이디어는 거의 환상입니다.

람다 미적분학 기계는 존재합니다. 람다 미적분학 표현을 줄일 수있는 컴퓨터입니다. 쉽게 완료되는 광고

특수한 기계 아키텍처 정보

실제로 Peter Taylor의 답변을 보완 하고 하드웨어 / 소프트웨어 얽힘에 대한 후속 조치를 통해 특수 기계가 특정 패러다임에 더 잘 맞게 제작되었으며 기본 소프트웨어가 해당 패러다임을 기반으로 프로그래밍 언어로 작성되었습니다.

이들은 포함합니다

기본적으로 이것들은 필수 하드웨어 구조이지만 의도 된 패러다임에 더 잘 적응하기 위해 특수한 하드웨어 기능이나 마이크로 프로그래밍 된 인터프리터로 완화됩니다.

실제로 특정 패러다임에 특화된 하드웨어는 장기적으로 성공한 것으로 보이지 않습니다. 그 이유는 바닐라 하드웨어에서 패러다임을 구현하기위한 컴파일 기술이 점점 더 효과적이어서 특수 하드웨어가 그다지 필요하지 않기 때문입니다. 또한 하드웨어 성능이 빠르게 향상되었지만 기본 소프트웨어의 발전을 포함한 개선 비용은 특수 하드웨어보다 바닐라 하드웨어에서 더 쉽게 상각되었습니다. 특수 하드웨어는 장기적으로 경쟁 할 수 없습니다.

그럼에도 불구하고, 이것에 대한 정확한 데이터는 없지만, 이러한 벤처 기업이 기계, 메모리 및 명령 세트 아키텍처의 진화에 영향을 미친 몇 가지 아이디어를 남겼다고 생각합니다.


실제로 만들어지는 확장에 대한 참조로 튜링 기계를 선택하는 것은 대부분 역사적으로 동기를 부여했습니다.
Yuval Filmus

@YuvalFilmus 그리고 왜 "계산 성의 만족스러운 정의"에 더 가깝습니까?
babou

그것이 고델이 생각한 것입니다. Bob Soare는 cs.uchicago.edu/~soare/Publications/compute.ps에서이 문제에 관해 몇 마디를 하였습니다 .
Yuval Filmus

@YuvalFilmus 이것은 46 페이지입니다. 나는 그것이 더 만족스러운 이유를 몇 가지 제공하고 있음을 의미합니다. 순진 할 수도 있습니다. 성공을 설명하는 더 설득력있는 것이 있다면, 그것은 분명히 언급 할 가치가 있습니다.
babou

섹션 3.2를보십시오. 계산성에 대한 이전 정의가 있었지만 설득력이 없었습니다. 튜링은 적어도 일부 핵심 사람들에게 설득력있는 첫 번째 사람이었습니다.
Yuval Filmus

21

Turing-complete는 이름 일뿐입니다. 원한다면 Abdul-complete라고 부를 수 있습니다. 이름은 역사적으로 결정되며 종종 "잘못된"사람들의 이름을 따서 명명됩니다. 명확한 기준이없는 사회 학적 과정입니다. 이름은 공식 의미를 넘어서는 의미가 없습니다.

명령형 언어는 튜링 머신을 기반으로하지 않습니다. 이들은 RAM 머신을 기반으로합니다. 컴퓨터가 RAM 시스템입니다. 튜링 머신은 좋은 이론적 모델이지만 실제 컴퓨터의 모델은 아닙니다.

기본 CPU가 기본적으로 지원하지 않더라도 다른 패러다임을 기반으로하는 프로그래밍 언어는 매우 성공적 일 수 있습니다. 예를 들어 프린터는 스택 언어를 실행합니다. 머신 코드보다 프로그래밍에 더 많은 것이 있습니다.


"튜링 머신은 좋은 이론적 모델이지만 실제 컴퓨터의 모델은 아닙니다." 무한 메모리 부족을 제외하고 실제 컴퓨터에 적합한 모델이 아닌 다른 이유는 무엇입니까? 또한 함수 언어가 람다 미적분학을 기반으로한다고 생각하는 것이 맞습니까?
Abdul

5
λ

11
명령형 언어는 C에서 일정한 시간에 배열 액세스를 허용하는 경향이 A[x]있습니다. 튜링 기계는 일정한 시간 안에 이것을 할 수 없습니다. 그렇기 때문에 이론적 인 컴퓨터 과학에서도 알고리즘 실행 시간이 Turing 머신 모델이 아닌 RAM 머신 모델에서 분석됩니다.
Yuval Filmus

14
실제로 Turing Machines 실제 컴퓨터의 장점입니다. Turing이 논문을 작성할 때 "컴퓨터"는 펜과 종이를 사용하는 사람의 작업 설명이었습니다. 읽기 / 쓰기 헤드는 펜의 모델이고, 테이프는 무한한 용지 더미의 모델입니다 (작은 조각으로 자르고 서로 붙입니다). 알파벳은 알파벳의 모델입니다. 유한 전환은 사람이 머리 속에 유지할 수있는 제한된 양의 규칙의 모델입니다.
Jörg W Mittag

3
그것은 왜 지옥 튜링이 튜링 머신을 선택했는지에 대한 최고의 통찰력이었습니다. 나는 항상 "그가 왜 이렇게 엉뚱한 계산 모델을 선택 했는가"에 대해 궁금해했다. 나는 항상 계산 이론을 발명하는 것이 나에게 맡겨 졌다면 항상 생각했다. 이제 나는 그가 어디에서 왔는지 알게되고 훨씬 더 의미가 있습니다.
Jake

10

"Turing-complete"는 단지 "Turing 기계가 계산할 수있는 모든 것을 계산할 수 있습니다"를 의미하기 때문입니다.


Turing-complete는 튜링 (사람)을 기리기 위해 이름을 지을 수도 있는데, 이는 최초로 철학적으로 만족스러운 계산 성의 정의를 내놓았습니다. 또는이 개념을 설명하는 Turing의 논문을 기리기 위해 지명 될 수도 있습니다.
Yuval Filmus

1
@YuvalFilmus : Alan Turing의 엄마의 이름을 따서 명명 수 있지만 여기에있는 주장은 그렇지 않다는 것입니다.
Steve Jessop

@YuvalFilmus는 될 수 있습니다 (아는 것은 아는 한). 그러나이 용어의 유래는 이차적으로 중요한 것입니다. 여기서 중요한 것은이 용어의 의미 입니다.
David Richerby

2
짧고 달콤하지만 약간 너무 짧을 수 있습니다. 튜링 머신은 무엇을 "합니까"? 람다식이하지 않는 테이프를 읽고 쓰는 것이 "무엇을해야 하는가?" "완전한 계산 모델을 통해 모든 계산 가능한 함수를 계산할 수 있습니다."
Theodore Norvell

@TheodoreNorvell 귀하의 의견이 생각했던 것과 유사하다고 생각합니다. 나는 람다 미적분과 튜링 머신은 힘이 동등하지만 메커니즘이 다르다는 것을 알았지 만 (다른 것들이 있다는 것을 알게되었습니다) "튜링 완전성"이라는 용어가 튜링 머신에 특별한 방식인지 궁금했습니다. 그냥 이름이라면
Abdul

6

귀하의 질문 중 하나가 아직 답변되지 않은 것 같습니다.

그렇다면 람다 미적분학 기계와 같은 것이 무엇입니까?

리스프 기계 . LISP 계산 모델에 맞게 특별히 설계된 하드웨어. Wikipedia 기사는 상용 제품에 대해 이야기하지만 대학의 연구 책임자는 자신의 사무실에서 직접 제작했습니다.


0

교회가 발명 한 람다 미적분학 형태의 기능적 언어는 튜링이 완성 된 것으로 입증 되었습니다. 이것은 튜링 머신에서의 연산 / 계산으로 람다 미적분을 "감소"함으로써 출판 된 과학 논문에서 찾을 수있는 실제 수학적 증거입니다. 튜링 스 (Turings) 논문 1936 년과 그 이후에, 다른 "종합적인"계산 모델이 제안 / 순환되었다. 그것은 한 즉시 실현되지 모두가 동등이라고. 이들이 동등하다는 증거는 Turings 논문 이후 1930 년대 후반과 1940 년대에 대략 출판되었다 .

튜링 머신은 다른 모델보다 개념적으로 (기능적으로는 아님) 단순 하며 튜링 완성도가 그 이름을 따온 이유의 상당 부분 일 것입니다. 람다 미적분학과 같은 다른 아이디어는 더 추상적이며 주로 수학 / 논리 이론에서 시작됩니다. 튜링은 이론적 인 기계를 제안했다 . "기계는" 말 그대로입니다 "물리적 장치". 응용과 이론의 두 가지 세계를 하나로 묶거나 통합하는 뛰어난 개념적 대상 / 구축. 그것은 "시간과 공간"과 같은 물리적 실체에 새로운 추상적 인 의미를 부여한다. 수학자들이 때때로 "기술", "기계"또는 증명의 "장치"를 언급하는 것은 우연의 일치가 아닙니다. 튜링은 그의 개념 발명에서이 모든 것을 독창적으로 융합시켰다. 그... 정의 는 매우 간단하지만 그것의 분석 은 과학적 / 수학적 사고의 역사에서 볼 수 있는 가장 놀라운 출현 행동 을 보여줍니다. 튜링은이 중요성 / 능력 / 잠재력을 많이 이해 한 최초의 과학자 / 수학자였습니다.


다시 말해, 튜링은 튜링 완전성 현상의 중요성을 식별 / 인식 한 최초의 인물이라고 말한 후 CS는이 용어를 사용하여이 기념비적 인 업적을 인정했습니다.
vzn

X
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.