카테고리 보관물: cstheory

cstheory

계산 이론 분야에서 람다 미적분학의 기여는 무엇입니까? 이러한 모든 기능 / 감소를 수행해야합니까?

람다 미적분학을 읽고 “알아라”는 것입니다. 나는 그것을 튜링 머신과는 다른 대안적인 계산 방식으로 본다. 함수 / 감소 (엄청나게 말해서)로 일을하는 흥미로운 방법입니다. 그래도 몇 가지 질문이 계속 나에게 잔소리합니다.

  • 람다 미적분의 요점은 무엇입니까? 왜 이러한 모든 기능 / 감소를 수행해야합니까? 목적은 무엇입니까?
  • 그 결과 람다 미적분학이 CS 이론을 발전시키기 위해 정확히 무엇을 했는가? 그것이 존재의 필요성을 이해하는 “aha”순간을 가질 수있게하는 것이 기여한 것은 무엇입니까?
  • 람다 미적분학이 오토마타 이론의 텍스트에서 다루지 않는 이유는 무엇입니까? 일반적인 경로는 다양한 오토마타, 문법, 튜링 머신 및 복잡성 수업을 거치는 것입니다. Lambda 미적분학은 SICP 스타일 강좌의 강의 계획서에만 포함됩니다 (아마도 아닐까요?). 그러나 나는 그것이 CS의 핵심 교과 과정의 일부라는 것을 거의 보지 못했습니다. 이것이 그다지 귀중하지 않다는 것을 의미합니까? 어쩌면 아니고 여기에 뭔가 빠졌습니까?

함수형 프로그래밍 언어는 람다 미적분학을 기반으로한다는 것을 알고 있지만 프로그래밍 언어를 사용하기 훨씬 전에 만들어 졌기 때문에 유효한 기여로 간주하지 않습니다. 그렇다면 람다 미적분학을 알고 / 이해하는 요점은 무엇입니까?



답변

λ

-calculus에는 두 가지 주요 역할이 있습니다.

  • 순차적, 기능적, 고차 계산 동작의 간단한 수학적 기초입니다.

  • 구성 논리의 증거를 나타냅니다.

이것은 Curry-Howard 대응 이라고도 합니다 . 공동으로, -calculus 의 이중 관점은 증명과 (순차적, 기능적, 고차적) 프로그래밍 언어로서, -calculus 의 대수적 느낌 (튜링 머신과 공유하지 않음)으로 강화되었습니다. 논리, 수학의 기초 및 프로그래밍 간의 기술 이전. 이러한 이동은 예를 들어 호모 토피 유형 이론 에서 여전히 진행 중이다 . 특히 프로그래밍 언어의 개발과 특히 타이핑 규칙은 없이는 상상할 수 없다
λ λ λ λ

λ

λ

λ

-계산법. 대부분의 프로그래밍 언어는 -calculus 의 직계 후손 인 Lisp 및 ML (예 : Lisp를 위해 가비지 콜렉션이 만들어 짐 )에 대해 어느 정도의 부채를지고 있습니다 . calculus의 영향을 크게받는 두 번째 작업 은
대화식 증명 보조자 입니다.

λ

λ

유능한 프로그래머이거나 심지어 컴퓨터 과학 이론가가되기 위해서는 -calculus 를 알아야 합니까? 아니요. 고차 기능을 갖춘 유형, 검증 및 프로그래밍 언어에 관심이 없다면 아마도 그다지 유용하지 않은 계산 모델 일 것입니다. 특히 복잡도 이론에 관심이있는 경우
기본 축소 단계 가 강력 하기 때문에 -calculus는 이상적인 모델이 아닙니다 . 에 임의의 수의 사본을 만듭니다. 따라서

λ

( λ x . M ) N β M [ N / x ] N β λ λ M N M N

λ

(λx.M)NβM[N/x]

N

β

미세한 계산 비용을 고려할 때 비현실적인 기본 개념입니다. 이것이 이론 A가 -calculus에 매혹되지 않는 주된 이유라고 생각합니다 . 반대로, 튜링 머신은 프로그래밍 언어 개발에 큰 영감을주지 않습니다. 머신 컴포지션에 대한 자연스러운 개념이 없기 때문에 calculus에서는 과 이 프로그램이면 마찬가지입니다 . 이 대수 계산 계산법은 실제로 사용되는 프로그래밍 언어와 자연스럽게 관련되어 있으며 많은 언어 개발은 ​​새로운 프로그램 구성 연산자를 찾고 조사하는 것으로 이해 될 수 있습니다.

λ

λ

M

N

MN

-calculus 의 역사에 대한 백과 사전 개요는 Cardone 및 Hindley의 Lambda-calculus 및 조합 논리의 역사를 참조하십시오 .

λ


답변

나는 -calculus가이 분야에 많은 방법으로 기여했으며 여전히 그것에 기여한다고 생각합니다. 세 가지 예가 뒤 따르는 것은 아니며 철저하지는 않습니다. 나는 -calculus 의 전문가가 아니기 때문에 몇 가지 중요한 점을 분명히 놓칩니다.λ

λ

λ

  • 첫째,이 기능의 동일한 집합을 의미 판명 계산의 다른 모델을 가지고 생각하는 것은의 기원에 있었다 교회 튜링의 논문 및 -calculus은 튜링 기계와 함께, 중요한 역할을했다 -recursive 기능.μ

    λ

    μ

  • 둘째, 함수형 프로그래밍 언어와 관련하여 나는 타당한 기여 로 이해하지 못합니다 . 기본적으로 모든 계산 모델은 컴퓨터 과학에서 어떤 일이 일어나기 오래 전에 발명 되었습니다! 따라서 -calculus는 어떤 의미에서 튜링 머신과 직교하는 계산에 대한 또 다른 관점을 가져 왔습니다.

    λ

  • 마지막으로,보다 구체적인 예로, 전용 언어를 사용하여 복잡한 클래스를 특성화하는 것을 목표로하는 암시 적 계산 복잡성을 생각합니다. Bellantoni-Cook의 정리 와 같은 첫 번째 결과 는 recursive 함수 와 관련하여 언급 되었지만보다 최근의 결과는 -calculus 의 어휘와 기술을 사용합니다 . 자세한 내용 이나 DICE 워크샵 의 진행 사항에 대해서는이 암시 적 계산 복잡성에 대한 짧은 소개를 참조하십시오 .λ

    μ

    λ


답변

λ

CS 이론을 발전시키기 위해 람다 미적분학은 정확히 무엇을 했습니까?

λ

λ

λ

λ

λ


답변

여러 측면에서 질문에 접근 할 수 있습니다. 나는 역사적이고 철학적 인 측면을 남겨두고 당신의 주요 질문을 다루고 싶습니다.

람다 미적분의 요점은 무엇입니까? 왜 이러한 모든 기능 / 감소를 수행해야합니까?

부울 대수, 관계 대수, 1 차 논리, 유형 이론 또는 기타 수학적 형식주의 / 이론의 요점은 무엇입니까? 답은 디자이너가 어떤 목적 으로든 다른 목적 으로든 만들었더라도 그들에게 고유 한 목적 이 없다는 것입니다. 부울 대수의 기초를 세울 때 라이프니츠는 특정한 철학적 프로젝트 를 염두에 두었습니다. Boole은 자신의 이유로 그것을 연구했습니다. 관계형 대수학에 관한 de Morgan의 연구는 그의 다양한 프로젝트에 의해 동기를 부여 받았다. Peirce와 Frege는 현대 논리를 만드는 데 동기를 부여했습니다.

요점은 람다 미적분학을 만들 때 교회가 가질 수 있었던 이유에 관계없이 람다 미적분학의 요점은 실무자마다 다릅니다.

  • 누군가에게 이것은 계산에 관해 이야기하기에 편리한 표기법 입니다. Turing Machines 등의 대안.

  • 또 다른 방법 으로는보다 정교한 프로그래밍 언어 (예 : McCarthy, Stanley)를 구축 할 수 있는 확실한 수학적 기초 입니다.

  • 세 번째 사람에게는 자연과 프로그래밍 언어 (예 : Montague, Fitch, Kratzer)의 시맨틱을 제공하기위한 엄격한 도구 입니다.

람다 미적분학은 스스로 공부할 가치가있는 공식 언어라고 생각합니다. 형식화되지 않은 람다 미적분학에는 ‘Y-combinators’라는 작은 짐승이 있으며 재귀 함수를 정의하고 결정 불가능한 증거를 그렇게 우아하고 간단하게 만드는 데 도움이되는 방법을 배울 수 있습니다. 당신은 친밀한 존재한다는 놀라운 사실을 배울 수있는 대응 사이에 간단하게 입력 람다 계산법 과의 유형 직관 논리를 . 탐구해야 할 다른 흥미로운 주제가 많이 있습니다 (예 : 람다 미적분 의 의미론 을 어떻게 제공해야 합니까? 람다 미적분을 FOL과 같은 연역적 시스템으로 어떻게 바꿀 수 있습니까?)


Hindley & Seldin의 컴비 네이터 소개 및 λ–Calculus 소개를 확인하십시오 . Barendregt의 Lambda 미적분학 은 성경이므로 Hindley & Seldin에 매료되면 의미와 구문 적 성격에 관한 많은 주제가 있습니다.


답변

튜링은 수학이 유한 세트에서 선택된 읽기 / 쓰기 기호와 유한 한 수의 정신적 ‘상태’사이의 전환으로 조합 될 수 있다고 주장했다. 그는 자신의 Turing Machines에서 이것을 테이프의 셀에 기록하고 오토 마톤은 상태를 추적합니다.

그러나 튜링의 기계는 이러한 감소에 대한 건설적인 증거가 아닙니다. 그는 어떤 ‘유효한 절차’가 일부 Turing Machine에 의해 구현 될 수 있다고 주장했으며 Universal Turing Machine은 다른 모든 기계를 구현할 수 있지만 실제로 수학을 구현하는 일련의 기호, 상태 및 업데이트 규칙을 제공하지는 않았 음을 보여주었습니다. 그가 주장하는 방식으로. 다시 말해, 그는 우리가 수학을 적는 데 사용할 수있는 표준 기호 세트가있는 ‘표준 Turing Machine’을 제안하지 않았습니다.

반면에 람다 미적분학은 바로 그 것입니다. 교회는 구체적으로 우리 수학을 기록하는 데 사용 된 표기법을 통일하려고했습니다. LC와 TM이 동등한 것으로 밝혀지면 LC를 ‘표준 Turing Machine’으로 사용할 수 있으며 모든 사람이 우리의 프로그램을 읽을 수 있습니다 (이론적으로;;)).

이제 LC를 TM 방언이 아닌 원시로 취급하는 이유를 물을 수 있을까요? 답은 LC의 의미론이 부정적 이라는 것입니다. LC 용어는 ‘내재적’의미를 갖습니다. 교회 숫자가 있고, 더하기, 곱하기, 재귀 등을위한 함수가 있습니다. 이렇게하면 LC가 (공식) 수학이 수행되는 방식과 매우 잘 일치하므로 많은 (기능적) 알고리즘이 LC에 직접 표시됩니다.

반면에 TM 프로그램 의 의미는 작동합니다 . 의미는 기계의 동작으로 정의됩니다. 이런 의미에서 테이프의 일부 섹션을 잘라 내고 “이것은 추가입니다”라고 할 수 없습니다. 상황에 따라 달라지기 때문입니다. 테이프의 해당 부분에 닿을 때의 기계 동작은 기계의 상태, 길이 / 오프셋 등에 따라 다릅니다. 인수의 결과, 결과에 사용될 테이프의 양, 이전 작업으로 인해 테이프의 해당 섹션이 손상되었는지 등이 있습니다. 이는 끔찍한 작업 방식 ( “아무도 튜링 머신을 프로그래밍하고 싶지 않습니다”)입니다. 많은 (제국적인) 알고리즘은 의사 코드로 표시됩니다.


답변

다른 답변이 좋습니다. 여기에 다른 메쉬와 메쉬가 더 명확 할 수 있다는 추가 고려 사항 / 이유가 있습니다. 그럼에도 불구하고 오래된 기원은 시간이 지남에 따라 다소 손실되므로 명확하게 기억하기가 더 어려울 수 있습니다.

역사적 우선 순위!

람다 미적분학 은 다음의 심판 에서 적어도 1932 년 초 에 도입 되었습니다 .

  • A. 교회, “논리의 기초에 대한 가정”, Annals of Mathematics, Series 2, 33 : 346-366 (1932).

튜링 기계 에 도입 된 1936 ~ 람다 계산법이 몇 년으로 TM의 모습을 간직한, 그래서!

  • 튜링, AM (1936). “Entscheidungs ​​문제에 대한 응용 프로그램이있는 계산 가능한 숫자” London Mathematical Society의 절차. 2 (1937) 42 : 230-265. doi : 10.1112 / plms / s2-42.1.230

다시 말해, 기본 답은 Lambda Calculus가 여러면에서 TCS 의 궁극적 인 레거시 시스템이라는 것 입니다. 코볼 이 언어에서 새로운 개발이 많이 진행되지는 않았지만 여전히 똑같습니다 . 그것은 최초의 Turing Complete 계산 시스템으로 나타 났으며 심지어 Turing Completeness의 기본 아이디어보다 앞서 있습니다. 람다 미적분학, 튜링 머신 및 포스트 대응 문제가 동등하고 튜링 동등성 및 교회 튜링 논문 의 개념을 도입 한 것은 단지 후 향적 분석이었습니다 .

람다 미적분학은 단순히 수학 중심논리 및 수학 공식 및 논리 공식 파생 등으로 표현하는 관점에서 논리 중심 POV 로부터 계산을 연구하는 방법 입니다. 또한 계산과 재귀 사이의 깊은 관계 와 수학적 유도 와의 밀접한 결합을 보여줍니다 .

이것은 여러 가지 측면에서 컴퓨팅 의 (적어도 이론적 인 ) 기원이 기본적으로 논리 / 수학에 있다고 제안했기 때문에 Davis가 그의 저서 인 Logic / Mathematicians의 엔진과 컴퓨터 . (물론 대수 대수학 의 기원과 기본적 역할은 그 개념적 역사적 틀을 더욱 강화시킵니다.)

따라서 극적으로, Lambda 미적분학은 컴퓨팅의 기원을 탐구 하는 교육 시간 기계 와 조금 비슷하다고 말할 수도 있습니다 !


답변

방금이 게시물을 보았고 내 게시물이 늦게 (년!) 늦어 졌음에도 불구하고 내 “페니의 가치”가 다소 유용하다고 생각했습니다.

대학에서 과목을 공부하는 동안 나는 그 문제에 대해서도 비슷한 생각을했습니다. 그래서 나는 “왜”라는 질문을 강사에게 제기했고 그 대답은 “컴파일러”였습니다. 그녀가 언급하자마자 축소의 배후의 힘과 그것을 조작하는 최선의 방법을 평가하는 기술은 왜 그것이 잠재적이고 유용한 도구인지에 대한 전체 목적을 갑자기 만들었습니다.

음, 그렇게 말하는 것은 나의 “아하”순간이었습니다.

제 생각에 우리는 종종 고급 언어, 패턴, 오토마타, 알고리즘 복잡성 등을 유용한 ‘태스크’와 연관시킬 수 있기 때문에 유용하다고 생각합니다. 반면에 lamdba 미적분학은 너무 추상적 인 것처럼 보입니다. 그러나 저급 언어로 작업하는 사람들이 여전히 있습니다. 람다 미적분학, 객체 미적분학 및 기타 관련 공식화로 인해 일반 프로그래머가 이익을 얻을 수있는 새로운 이론과 기술을 이해하고 개발하는 데 도움이되었다고 생각합니다. 실제로, 그것은 그런 이유로 핵심 모듈이 아닐 수도 있지만 (내가 언급 한 이유로) 학계 이외의 다른 사람들은 컴퓨팅에서 선택한 경력 경로에 필수 요소가 될 수 있습니다.