미적분과 프로그래밍 언어의 차이점은 무엇입니까?


13

나는 미적분학과 프로그래밍 언어라는 것에 대해 혼란스러워합니다.

나는 미적분학이 프로그램의 동등성에 대한 추론을위한 공식적인 시스템이라고 생각하는 경향이있다. 프로그램에는 기계에 의해 지정된 작동 의미론이 있으며 결정적이어야합니다. 이런 식으로 언어 대한 (정확한) 미적분 은 프로그램 동등성을위한 확실한 방법입니다.

이것은 나에게 합리적인 분열처럼 ​​보이지만 이것이 일반적으로 받아 들여지는 의미입니까? 아니면 잘못 됐나요?

관련, 일부 운영 의미론이 왜 비 결정적입니까 (상당성이 있다고 가정)? 전략 선택을 열어두면 무엇을 얻을 수 있습니까?

나는 이것에 대한 설명을 정말로 고맙게 생각합니다. 더 구체적인 참조! 감사!


3
그들은 같은 것을 보는 다른 방법에 대한 다른 단어입니다.
Raphael

1
@Raphael, 질문에 어떻게 대답합니까? 이것은 철학을 할 수있는 곳이 아닙니다.
fade2black

4
때로는 어느 곳에서나 약간의 철학이 필요합니다.
André Souza Lemos

답변:


10

단어의 의미는 고정되어 있지 않지만 해석을 해줄 수 있습니다.

수학은 우리가 무언가 로 계산 저글링 방정식의 의미 (테일러 시리즈 또는 분석 적분의 계산 조작을 생각한다). 미적분학은 조작 규칙이 무엇인지 알려주지 만 주어진 상황에서 어떤 규칙을 사용해야하는지 알려줍니다.

프로그래밍 언어는 우리에게 뭔가 방법을 계산합니다. 규칙 사용법을 정확하게 알려줍니다. 일반적으로 컴퓨터는 규칙이 훨씬 빠르기 때문에 규칙을 사용합니다. 규칙은 비 결정적 일 수 있으며 규칙이 결정적이지 않은 이유는 매우 충분할 수 있습니다. 미적분의 특성상 그것이 결정적이지 않은 것 (동시 통신 프로세스를 생각하는 것)이거나 특정 전략을 고치는 것이 구현 기술 및 최적화에 해로울 수있다.

λλ

대조적으로, 표준 ML 은 프로그래밍 언어입니다. 연산 의미론, 즉 계산 규칙 측면에서 제공됩니다. 있습니다 파생 우리는 수학의 한 종류로 생각하는 그 위에 넣을 수 있습니다 평등 (문맥 동등한 관찰 등가 등)의 개념은.

물론, 미적분과 프로그래밍 언어로서의 미적분학 사이에는 종종 유용한 연결점이 있습니다. 유창한 정규화는 미적분에서 프로그래밍 언어로 전달하는 한 가지 방법 일뿐입니다 (슬프게도 일부 사람들은 그것을 일종의 종교로 만들었습니다). 계산 언어와 프로그래밍 언어 간의 상호 작용이 중요합니다. 프로그래밍 언어를 실제로 사용할 수 있지만 계산 은 프로그램의 내용을 설명 합니다.

사람들을 성가 시게하기 위해, 미적분학과 그것의 운영 적 표현 사이에 차이가없는 척하는 것은 때때로 프로그래밍 공동체 내에서 프로그래밍과 미니 종교에 대한 왜곡 된 견해를 초래한다고 언급하겠습니다. 내가 어떤 언어를 생각하고 있는지 추측 할 수 있습니다. (매우 멋진 언어입니다!)


프로그래밍 언어는 전략 / 재 작성 시스템을 갖춘 미적분학입니까?
xavierm02

'='

π

프로그램뿐만 아니라 환경 (상태 또는 전환)에 대해서도 말하는 방정식을 제시 할 수 있습니다. 그러나 나는 그런 것이 미적분학이라고 말하지 않을 것입니다. 오히려 대수 모델입니다.
Andrej Bauer

감사합니다, Andrej, 이것은 나에게 의미가 있습니다. 나는 그것이 사람마다 다를 수 있다는 것을 알고 있지만, 나는이 대답이 최선이라고 생각합니다.
Guido

2

미적분학의 목표는 프로그램의 동등성을 연구하는 것이 아니라 프로그램을 연구하는 것입니다. 환상 계산법의 예는 (통화 별 값 또는 통화별로 이름) 전략 로컬 판정 어디에. 언젠가는 프로그래밍 언어로 구현 될 수 있지만 미적분학으로 처음 연구되었습니다. 또한 calculi를 사용하여 유형 시스템을 연구 할 수 있습니다 (Martin-Löf 유형 이론의 계산 시스템과 같은 일부 미적분).


주된 차이점은 미적분학이 공식적으로 공부하기 쉬우 며 프로그래밍 언어는 (상대적으로) 사용하기 쉽다는 것입니다. 다음과 같은 차이점이 있습니다.

Calculi는 미니멀 한 경향이있는 반면 PL은 중복성을 갖는 경향이 있습니다 (이미 while 루프가있는 경우 for 루프, 이미 가지고있을 때 전환하는 경우 ... ...). 원하는 것을 쉽게 표현할 수 있습니다.

Calculi는 의미를 완전히 지정했으며 PL의 의미는 종종 기본 인터프리터 / 컴파일러에 의해 설명됩니다.


일부 운영 의미론은 다음을 허용하므로 비 결정적입니다.

  • 모든 "가칭"에 대한 것들을 증명하기 위해.
  • 구현이 선택하고 따라서 속도를 높일 수 있도록합니다.
  • 때로는 "radnom ()"연산이 있고 확률에 신경 쓰지 않고 가능한 것만 신경 쓰는 경우 비결정론이이를 나타내는 좋은 방법입니다.

값별 호출은 비 결정적입니다. 함수 또는 인수를 먼저 평가하도록 선택할 수 있습니다.


아냐, 나는 그것이 형식 화나 정교함의 수준에 동의하지 않는다.
Andrej Bauer

2

"프로그래밍 언어"및 "미적분학"은 다항식 용어입니다. 즉 문맥에 따라 다른 의미를 갖습니다.

일부 맥락에서, 프로그래밍 언어와 미적분학은 "기계적으로"적용될 수있는 일련의 공식 규칙에 기초한 재 작성 시스템 과 동일한 개념을 참조하기 위해 수렴되었다 .

이 수렴이 때때로 우리에게 수수께끼가되는 이유는 (일하는 소프트웨어 개발자 나 수학자에게는 해당되지 않음) 우리의 임무는 마치 마치 마치 마치 마치 마치 마치 프로그래밍 언어를 구체적인 프로그래밍 언어로 구상하고 구체적으로 프로그래밍 언어로 구체화하는 것입니다.

귀하의 질문에 직접 대답하기 위해, 계산 언어와 프로그래밍 언어의 혼동 (존재하는 정도)은 우연이 아니라 프로젝트입니다. 우리의 계획. 그것은 과학적 학문으로서의 우리의 상대적인 성공의 증거입니다.

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