문제

아시는 모든 분들께 람다 미적분학:프로그래밍과 관련하여 어떤 이점을 얻었습니까?사람들에게 배우라고 권하고 싶나요?

도움이 되었습니까?

해결책

어떤 프로그램이든 하고 싶다면 함수형 프로그래밍 언어, 그것은 필수적입니다.내 말은, 튜링 기계에 대해 아는 것이 얼마나 유용한가요?글쎄, C를 작성한다면 언어 패러다임은 튜링 기계와 매우 유사합니다. 명령 포인터와 현재 명령이 있고 기계는 현재 상태에서 어떤 조치를 취한 후 다음 명령을 따라 진행합니다.

함수형 언어에서는 그렇게 생각할 수 없습니다. 그것은 언어 패러다임이 아닙니다.람다 계산법과 거기에서 용어가 어떻게 평가되는지 다시 생각해야 합니다.람다 미적분학을 모른다면 함수형 언어를 효과적으로 다루기가 훨씬 더 어려울 것입니다.

다른 팁

람다 미적분학의 장점은 Turing 기계와 동등한 매우 간단한 계산 모델이라는 것입니다.그러나 Turing 기계는 어셈블리 언어에 더 가깝지만 람다 미적분학은 고급 언어에 더 가깝습니다.그리고 배우면 교회 인코딩 이는 프로그래밍 기술을 배우는 데 도움이 될 것입니다. 연속 통과 스타일, 이는 역추적 검색 및 기타 깔끔한 트릭을 구현하는 데 매우 유용합니다.

실제로 람다 미적분학의 주요 용도는 다음과 같습니다. 새로운 프로그래밍 언어 아이디어를 연구하기 위한 훌륭한 실험실 도구입니다..새로운 언어 기능에 대한 아이디어가 있다면 다음을 수행할 수 있습니다. 람다 미적분학에 새로운 기능을 추가하세요 그리고 당신은 뭔가를 얻습니다 프로그래밍하기에 충분한 표현력 있는 동안 아주 철저하게 공부할 수 있을 만큼 간단하다.이 용도는 실제로 프로그래머보다는 언어 디자이너와 이론가에게 더 많이 사용됩니다.

람다 미적분학은 그 자체로도 매우 멋집니다.어셈블리 언어를 아는 것과 마찬가지로 계산에 대한 이해를 깊게.특히 재미있네요 만능 튜링 기계 프로그래밍 람다 계산에서.그러나 이것은 실용적인 프로그래밍이 아닌 기초 수학입니다.

솔직히 말해서, 함수형 프로그래밍 이전에 람다 미적분학을 배우면서 C와 명령형 프로그래밍이 서로 관련이 없는 것처럼 이 둘도 관련이 없다는 사실을 깨달았습니다.

람다 미적분학은 함수형 프로그래밍 언어, 난해한 언어, 원하시면 Turing tarpit 등을 사용하실 수 있습니다.우연히도 처음이군요.

대부분의 함수형 프로그래밍 언어에서는 람다 미적분학을 '학습'할 필요가 없습니다. 그것이 무엇을 의미하든 람다 미적분학은 엄청나게 최소화되어 한 시간 안에 공리를 '학습'할 수 있습니다.고정 소수점 정리와 같이 그 결과를 알기 위해서는 Church-Rosser 정리 등이 함수형 프로그래밍과 관련이 없습니다.

또한 람다 추상화는 종종 '함수'로 간주됩니다. 나는 이에 동의하지 않습니다. 함수가 아닌 알고리즘이며 사소한 차이점입니다. 대부분의 '함수 언어'는 고전 수학과 같은 방식으로 함수를 처리합니다.

그러나 예를 들어 Haskell을 효과적으로 사용하려면 다음 사항을 이해해야 합니다. 유형 시스템, 람다 계산과 관계없이 시스템 F 유형 시스템은 모든 '함수'에 적용될 수 있으며 람다 추상화가 전혀 필요하지 않습니다.수학에서는 일반적으로 f라고 말합니다.R^2 -> R :f(x) = x^2.우리는 이렇게 말할 수 있었습니다:f(x) = x^2 ::R -> R -> R.사실 Haskell은 이 표기법에 꽤 가깝습니다.

람다 미적분학은 이론적인 형식주의입니다. Haskell의 함수는 실제로 f와 마찬가지로 '람다 추상화'가 아닙니다.f(x) = x^2 실제로 람다 추상화를 흥미롭게 만드는 것은 일반적으로 '상수'로 표시되는 것을 '함수'로 정의할 수 있다는 것입니다. 엄청난 계산 오버헤드 때문에 함수형 언어는 그렇게 하지 않습니다.Haskell과 그 유사품은 시스템 F의 제한된 형태일 뿐입니다. 유형 시스템 일상적인 고전 수학에서 사용되는 함수에 적용됩니다.Haskell의 함수는 확실히 람다 미적분학에서처럼 익명의 공식적으로 상징적인 축소 지원자가 아닙니다.대부분의 함수형 프로그래밍 언어는 기호 축소 기반 재작성 시스템이 아닙니다.Lisps는 어느 정도 있지만 그것은 그 자체로 하나의 패러다임이고 그것의 '람다 키워드'는 실제로 그것을 람다 미적분학이라고 부르는 것을 만족시키지 못합니다.

실제로 프로그래밍과 관련하여 람다 미적분학을 사용하는 것은 추상화(또는 "익명 함수" 또는 클로저)의 본질을 포착하는 아주 최소한의 시스템이라고 생각합니다.그 외에는 추상화를 직접 구현해야 하는 경우(Tetha(114646) 언급).

나는 또한 Denis Bueno의 의견에 전적으로 동의하지 않습니다.114701) 함수형 프로그래밍에 필수적이라고 말하는 사람.람다 계산 없이도 함수형 언어를 정의, 사용 또는 이해하는 것은 완벽하게 가능합니다.기능적 언어의 용어 평가(제 생각에는 기능적 언어의 사용과 다소 모순됨)를 이해하려면 용어 재작성 시스템에 대해 배우는 것이 더 나을 것입니다.

나는 람다 미적분학을 배우지 않고도 함수형 프로그래밍을 배우는 것이 이론적으로 가능하다는 사람들의 말에 동의합니다. 하지만 그 장점은 무엇입니까? ~ 아니다 람다 미적분학을 배우나요?큰 시간 투자가 필요한 것은 아닌 것 같습니다.

아마도 함수형 프로그래밍을 더 잘 이해하는 데 도움이 될 것입니다.하지만 그렇지 않더라도 여전히 배울 가치가 있는 멋진 일입니다.그만큼 Y-조합기 아름다움의 일이다.

기술자가 되어 작업을 수행하는 프로그램을 작성하고 싶다면 람다 미적분학, 유한 상태 기계, 푸시다운 오토마타, 정규식, 문맥 자유 문법, 이산 수학 등을 알 필요가 없습니다.

하지만 이 문제에 깔려 있는 더 깊은 미스터리에 대해 호기심이 있다면 이러한 질문에 어떻게 답할 수 있을지 궁금해지기 시작할 수 있습니다.컨셉은 아름답고 상상력을 넓힐 것입니다.나는 또한 그들이 한 사람을 더 나은 수행자로 만든다고 생각합니다.

나를 매료시킨 것은 Minsky의 책 Computation이었습니다.유한 및 무한 기계.

람다 미적분학은 튜링 기계와 마찬가지로 계산 모델입니다.따라서 이 모델을 기반으로 하는 언어에 대한 특정 평가기를 구현해야 하는 경우 유용하지만 실제로는 기본 아이디어만 있으면 됩니다(어.함수 본문에 의미상 올바른 인수를 배치합니까?) 그게 전부입니다.

람다 미적분학을 배우는 한 가지 가능한 방법은 다음과 같습니다.

http://en.wikipedia.org/wiki/Lambda_Calculus

또는 더 많은 내용을 원하시면 여기 람다 미적분학 및 이와 유사한 내용을 다루는 내 블로그를 참조하세요.

http://weblogs.manas.com.ar/lziliani/

계산의 모든 추상화와 마찬가지로 람다 계산을 사용하면 하위 유형 지정과 같이 대부분의 프로그래밍 언어에서 사용되는 항목을 모델링할 수 있습니다.이에 대한 자세한 내용을 보려면 이러한 의미에서 람다 미적분학을 실제로 사용하는 최고의 책 중 하나는 다음과 같습니다.

http://www.amazon.com/Types-Programming-Languages-Benjamin-Pierce/dp/0262162091/ref=sr_1_1?ie=UTF8&s=books&qid=1222088714&sr=8-1

나는 함수형 프로그래밍이 더 깊은 수준에서 어떻게 작동하는지 이해하는 데 람다 미적분학이 유용하다는 것을 알았습니다.특히 기능적 언어를 구현하는 방법.

유형 시스템 및 평가 전략(예:이름으로 부르기 대 가치로 부르기).

나는 기본적인 함수형 프로그래밍 기술을 사용하기 위해 람다 미적분학에 대해 아무것도 알 필요가 없다고 생각합니다.하지만 람다 미적분학을 이해하면 고급 프로그래밍 이론을 더 쉽게 배울 수 있습니다..

또한 NLP 영역에서 무엇인가를 하고 있다면 람다 미적분학이 구성 의미론에 관한 대규모 작업의 기초가 된다는 점을 언급하고 싶습니다.

나에게 이점은 보다 컴팩트한 시너지 프로그래밍입니다.물건은 수직보다 수평으로 흐르는 경향이 있습니다.또한 간단한 알고리즘의 프로토타입을 만드는 데 매우 유용합니다.제가 이 기능을 최대한 활용하고 있는지는 모르겠지만 매우 유용하다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top