Skip to content

Latest commit

 

History

History
24 lines (12 loc) · 3.7 KB

why-fp-matters.md

File metadata and controls

24 lines (12 loc) · 3.7 KB

함수형 프로그래밍은 왜 중요한가


논문번역

소프트웨어가 점점 더 중요해지면서, 소프트웨어를 잘 설계하는 것은 더욱 더 중요해지고 있다. 잘 설계된소프트웨어는 코드 작성과 디버깅에 용이하며, 미래의 프로그래밍 비용을 줄이기 위한 재사용성이 좋은 모듈들을 제공할 수 있다. 전통적인 언어들은 문제를 모듈화하는 방식에 개념적인 제한을 둔다. 함수형 프로그래밍은 이러한 제한을 없앤다. 이 논문에서는 모듈화에 매우 도움이 되는 함수형 프로그래밍에 있는 두 가지 특징과, 고차함수, 지연 연산에 대해 설명한다. 예를들어, List와 tree를 조작하거나, 수치 알고리즘을 프로그래밍 하거나, 알파-베타 휴리스틱을 구현해볼 것이다. 모듈화는 성공적인 프로그래밍의 주요한 요소이기 때문에, 함수형 프로그래밍은 실세계에서 아주 중요하다고 할 수 있을 것이다.

서론

이 논문은 함수형 프로그래밍이 굉장히 중요하다는 것을 ‘현실 세계’에 설득하려는 시도이며, 함수형 프로그램의 강점들이 무엇인 지를 명확하게 함으로써 장점을 최대한 활용할 수 있게끔 한다.

함수형 프로그래밍은 프로그램 전체가 함수로 이루어졌기 때문에 붙여진 이름이다. 메인 프로그램 그 자체는 함수로 쓰여지는데, 프로그램의 input은 인자를 통해 전달받으며 그 결과가 프로그램 실행의 결과가 된다. 일반적으로 메인 함수는 다른 함수의 관점에서 정의되며, 하위 수준에서 부터 함수가 언어의 기본 요소가 될 때 까지 차례로 함수들은 다른 함수들의 관점에서 정의된다. 이러한 함수들은 일반적은 수학적 함수와 무척 비슷하며, 이 논문에서는 함수가 일반적인 방정식을 통해 정의된다.

함수형 프로그래밍의 특성과 장점은 보통 아래와 같이 요약된다: 함수형 프로그래밍은 할당문을 포함하지 않으며, 따라서 변수는 한 번 값을 갖게된 이후엔 절대 변하지 않는다. 더 일반적인 것은, 함수형 프로그램은 어떤 측면에서도 side effect(부수효과)를 발생시키지 않는다. 함수 호출은 그 것의 결과를 계산하는 것에 비해 영향을 발생시키지 않는다. 이러한 특성은 버그를 제거할 수 있으며, 또한 함수의 실행 순서를 관련성이 없게 만든다. - 부수효과들이 표현식의 값을 변화시키지 않기 때문에, 항상 평가되어질 수 있다. (= 어느 시점에 실행해도 함수 실행을 통해 얻은 값은 같기 때문에, 함수들의 실행에 있어 의존성을 갖지 않음)

이러한 특성은 프로그래머들로 하여금 흐름을 제어하는데 들이는 공수를 상당 부분 없애준다. 표현식들이 어느 때나 같은 값을 가지므로, 변수는 그들의 값이나 그 반대로 자유롭게 대체될 수있다. 즉, 이러한 경우 프로그램은 참조 투명성을 갖는다고 할 수 있다. 이러한 경우 전통적인 프로그래밍 방식에 비해 함수형 프로그래밍이 수학적으로 더 다루기 쉬워진다.

함수형 프로그래머들은 함수형 프로그래밍이 그 반대의 것과 비교했을 때 훨신 더 짧기 때문에 생산성이 더 좋다고 주장한다. 하지만 이 것이 어떻게 가능한 것일까? 유일한 그럴듯한 이유는 전통적인 프로그램들은 할당문이 90프로 이상을 차지하지만 함수형 프로그램은 이 것들이 전부 제거되기 때문이다.

https://www.cs.kent.ac.uk/people/staff/dat/miranda/whyfp90.pdf