기능 수준 프로그래밍

Function-level programming

컴퓨터 과학에서 함수 수준 프로그래밍은 존 배커스가 수학적 객체로서 프로그램을 연구하면서 식별한 두 개의 대조적인 프로그래밍 패러다임 중 하나를 가리키며, 다른 하나는 가치 수준 프로그래밍입니다.

1977년 튜링상 강연에서 배커스는 프로그래밍 언어 [1]설계에서 다른 철학으로 전환해야 할 필요성을 설명했습니다.

프로그래밍 언어에 문제가 있는 것 같습니다.각각의 연속된 언어에는 이전 언어들의 모든 특징과 몇 가지 더 많은 특징들이 포함되어 있습니다. [...] 각각의 새로운 언어들은 새롭고 패셔너블한 특징들을 주장합니다.하지만 분명한 사실은 프로그래밍을 제작하고 사용하는 데 드는 비용을 정당화할 수 있을 만큼 저렴하거나 더 신뢰할 수 있는 언어는 거의 없다는 것이다.

그는 FP를 기능 수준의 프로그래밍 스타일을 지원하는 최초의 프로그래밍 언어가 되도록 설계했습니다.

함수 수준 프로그램에는 값 수준 정의에 필수적인 프로그램 변수가 함수 수준 프로그램에는 필요하지 않으므로 함수 수준 프로그램에는 변수가 없습니다(포인트 프리 프로그래밍 참조).

서론

기능 수준의 프로그래밍 스타일에서는 처음에 주어진 프로그램을 프로그램 형성 작업 또는 기능결합하여 직접 프로그램을 구축합니다.따라서 소정의 결과값에 도달하는 값의 연속을 형성하기 위해 소정의 프로그램을 적용하는 가치수준 접근법과는 대조적으로, 기능수준 접근법은 소정의 결과 프로그램에 도달하는 일련의 프로그램을 형성하기 위해 소정의 프로그램에 프로그램 형성 연산을 적용한다.

그 결과, 프로그래밍에 대한 함수 수준의 접근은 프로그램 형성 연산의 유용한 대수적 속성을 도출하기 위해 프로그램 형성 연산의 공간 연구를 요구한다.함수 수준 접근법은 프로그램 공간에 걸쳐 프로그램 형성 연산의 대수적 속성을 강조함으로써 프로그램 집합을 수학적 공간으로 만들 수 있는 가능성을 제공한다.

함수 수준 뷰의 또 다른 잠재적인 장점은 엄격한 함수만 사용할 수 있고, 따라서 가장 단순한 종류의 상향식 의미론을 가질 수 있다는 것입니다.또 다른 하나는 기존 가치수준의 이미지(낮은 가치수준에서 높은 기능수준으로)가 아닌 기능수준 정의의 존재입니다.이러한 (종종 간결한) 기능수준 정의는 가치수준에서는 이용할 수 없는 보다 강력한 스타일의 프로그래밍을 나타냅니다.

기능 프로그래밍과의 대조

배커스가 함수 수준의 프로그래밍 스타일을 연구하고 발표했을 때, 그의 메시지는 대부분 자신의 FP와 그 후속 FL이 아닌 전통적인 함수 프로그래밍 스타일의 언어를 지원하는 것으로 오해되었습니다[2].

Backus는 기능 프로그래밍을 응용 프로그램이라고[clarification needed] 부릅니다. 그의 기능 레벨 프로그래밍은 특정한 제약이 있는 유형입니다.

기능적 언어와의 주요 차이점은 Backus 언어에는 다음과 같은 유형의 계층이 있다는 것입니다.

  • 원자
  • 원자를 원자로 만드는 기능
  • 기능에 대해 하나 또는 두 개의 기능을 갖는 고차 함수(그가 "기능 형태"라고 함)

...새로운 함수를 생성하는 유일한 방법은 고정된 함수 형식 중 하나를 사용하는 것입니다. 즉, 고유한 함수 형식을 구축할 수 없습니다(적어도 FP(Formal FP) 내에서는 만들 수 없습니다).

이 제한은 FP의 함수가 함수형식의 대수에 대한 모듈(내장 함수에 의해 생성됨)이기 때문에 대수적으로 다루기 쉽다는 것을 의미합니다.예를 들어, 두 함수의 동일성에 대한 일반적인 질문은 정지 문제와 같으며, 결정할 수 없지만, FP에서 두 함수의 동일성은 대수에서 단지 동일하기 때문에 (백서스 상상의) 더 쉽다.

오늘날에도 람다 스타일의 언어 사용자들은 Backus의 기능 수준 접근방식을 사실상의 가치 수준 스타일인 람다 스타일의 제한적인 변형으로 오해하는 경우가 많다.사실, 배커스는 '제한적'이라는 비난에 동의하지 않았을 것이다: 그는 구조화된 프로그래밍이 프로그래밍을 일반적이고 불안정한 모든 제어 흐름 가능성의 제한된 버전으로 제한하는 과 유사한 방식으로 잘 형성된 수학적 공간이 발생할 수 있는 것은 정확히 그러한 제한에 기인한다고 주장했다.비구조화 프로그램을 테스트했습니다.

FP의 값 없는 스타일은 데카르트 닫힌 범주의 등가 논리와 밀접하게 관련되어 있다.

언어 예시

표준 기능 레벨 프로그래밍 언어는 FP입니다.기타에는 FL, J포함됩니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Backus, John (1978). "Can programming be liberated from the von Neumann style?: A functional style and its algebra of programs" (PDF). Communications of the ACM. 21 (8): 613–641. doi:10.1145/359576.359579.
  2. ^ Hudak, Paul (1989). "Conception, evolution, and application of functional programming languages". ACM Computing Surveys. 21 (3): 359–411. doi:10.1145/72551.72554. S2CID 207637854.

외부 링크