간단히 말해서 :
튜링 머신 및 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의 답변을 보완 하고 하드웨어 / 소프트웨어 얽힘에 대한 후속 조치를 통해 특수 기계가 특정 패러다임에 더 잘 맞게 제작되었으며 기본 소프트웨어가 해당 패러다임을 기반으로 프로그래밍 언어로 작성되었습니다.
이들은 포함합니다
기본적으로 이것들은 필수 하드웨어 구조이지만 의도 된 패러다임에 더 잘 적응하기 위해 특수한 하드웨어 기능이나 마이크로 프로그래밍 된 인터프리터로 완화됩니다.
실제로 특정 패러다임에 특화된 하드웨어는 장기적으로 성공한 것으로 보이지 않습니다. 그 이유는 바닐라 하드웨어에서 패러다임을 구현하기위한 컴파일 기술이 점점 더 효과적이어서 특수 하드웨어가 그다지 필요하지 않기 때문입니다. 또한 하드웨어 성능이 빠르게 향상되었지만 기본 소프트웨어의 발전을 포함한 개선 비용은 특수 하드웨어보다 바닐라 하드웨어에서 더 쉽게 상각되었습니다. 특수 하드웨어는 장기적으로 경쟁 할 수 없습니다.
그럼에도 불구하고, 이것에 대한 정확한 데이터는 없지만, 이러한 벤처 기업이 기계, 메모리 및 명령 세트 아키텍처의 진화에 영향을 미친 몇 가지 아이디어를 남겼다고 생각합니다.
(a -> a) -> a
.