"함수형 프로그래밍"의 두 판 사이의 차이

잔글
잔글 (봇: 위키공용분류 틀 추가)
잔글 (+분류:함수형 프로그래밍; 예쁘게 바꿈)
수학적 함수와 명령형 프로그래밍에서 사용되는 함수는 차이가 있는데, 명령형의 함수는 프로그램의 상태의 값을 바꿀 수 있는 부작용이 생길 수 있다. 이 때문에 명령형 함수는 참조 투명성이 없고, 같은 코드라도 실행되는 프로그램의 상태에 따라 다른 결과값을 낼 수 있다. 반대로 함수형 코드에서는 함수의 출력값은 그 함수에 입력된 인수에만 의존하므로 인수 x에 같은 값을 넣고 함수 f를 호출하면 항상 f(x)라는 결과가 나온다. 부작용을 제거하면 프로그램의 동작을 이해하고 예측하기가 훨씬 쉽게 된다. 이것이 함수형 프로그래밍으로 개발하려는 핵심 동기중 하나이다.
 
Hope같은 최초의 순수 함수형 언어는 상업적 소프트웨어 개발보다는 학계에서 많은 관심을 받았다. 하지만 [[커먼 리스프]], [[스킴 (프로그래밍 언어)|스킴]], ISLISP, [[클로저 (프로그래밍 언어)|클로져]], Racket, [[얼랭]], [[Objective Caml|OCaml]], [[하스켈]], [[스칼라 (프로그래밍 언어)|스칼라]], [[F 샤프|F#]] 같은 주요 함수형 언어들은 광범위한 기관에서 산업적이고 상업적인 응용 프로그램 개발에 사용되고 있다. 함수형 언어는 R (통계), [[매스매티카]] (기호와 수론 수학), J, K 와 Kx 시스템 기반 (재정 시스템)에서 나온 Q, XQuery/[[XSLT]] ([[XML]]), Opal 같은 특정 분야 프로그래밍 언어(Domain Specific Language)에서도 사용되고 있다. 많이 쓰이는 특정 분야 선언 언어인 [[SQL]]과 [[Lex|lex]]/[[Yacc]]는 특히 가변값을 회피하는데 있어 함수형 언어의 요소들을 사용한다.
 
함수형 스타일의 프로그래밍은 함수형 언어로 별도로 설계되지 않은 언어에서도 가능하다. 예를 들어, 명령형인 [[펄]] 프로그래밍 언어는 함수형 프로그래밍 개념을 적용하는 법을 설명하는 책에서 주제로 다루기도 했다. [[C 샤프|C#]] 3.0은 함수형 스타일의 쓸 수 있는 구문을 추가했다.
처음으로 만들어진 함수형 프로그래밍 언어는 [[IPL (프로그래밍 언어)|IPL]]이었다. [[존 매카시 (컴퓨터 과학자)|존 매카시]]가 만든 [[리스프]]는 훨씬 향상된 함수형 프로그래밍 언어였고, 이것은 현대적 함수형 프로그래밍의 여러 특징을 가지고 있었다. 리스프를 발전시키고 간단하게 만든 언어로 [[스킴 (프로그래밍 언어)|스킴]]도 있다.
 
1970년대에 [[로빈 밀너]]는 [[ML (프로그래밍 언어)|ML]]을 개발하였고, [[데이비드 터너]]는 [[미란다_미란다 (프로그래밍_언어프로그래밍 언어)|미란다]]를 개발하였다. ML의 여러 "방언"이 개발되었고, 현재 가장 많이 쓰이는 방언은 [[OCaml]]이다.
 
1980년대에는 그동안의 함수형 프로그래밍에 대한 연구를 바탕으로 순수 함수형 언어인 [[하스켈]]이 만들어졌다.
{{전거 통제}}
 
[[분류:함수형 프로그래밍| ]]
[[분류:프로그래밍 패러다임]]

편집

1,437,090