함수형 프로그래밍이란 무엇입니까?
함수형 프로그래밍은 계산의 기초가 표현식의 평가 인 프로그래밍 패러다임입니다. 일부 특성은 고차 함수, 참조 투명성 및 지연 평가의 사용입니다. 프로그래밍 스타일의 장점은 프로그램을 쉽게 읽을 수 있고 매우 안정적이며 구성 요소로 나눌 수 있다는 것입니다. 단점은 계산 속도가 느리고 스타일과 구문이 다른 일반적인 프로그래밍 스타일과 완전히 다르다는 것입니다. 기능적 프로그래밍 스타일은 컴퓨터 과학 전문가보다 학계에서 더 자주 수용합니다.
이름에서 알 수 있듯이 함수는이 프로그래밍 패러다임의 기본 부분입니다. 함수는 고차 함수라고하는 다른 함수 내에 중첩 될 수 있으며 각 고차 함수는 이해하고 디버깅하기 쉬운 빌딩 블록 함수로 나눌 수 있습니다. 고차 함수의 예는 Map 및 Nest입니다. 함수 맵은 함수 F와 변수 목록 (예 : (x, y, z))을 가져 와서 결과를 목록으로 제공합니다. Map [F, (x, y, z)] = (F (x), F (y), F (z)). Nest는 함수 F, 변수 x 및 반복 횟수를 사용합니다. Nest [F, x, 3] = F (F (F (x))).
순수 기능 프로그래밍은 변수의 상태를 변경하지 않고 입력을 받아 출력을 반환합니다. 다시 말해, 입력이 같은 함수는 프로그램에서 이전에 발생한 것과 관계없이 항상 동일한 결과를 제공합니다. 이것을 참조 투명성이라고합니다. 수학 함수는 참조가 투명하기 때문에 함수 프로그래밍은 많은 수학자, 엔지니어 및 과학자에게 직관적입니다.
함수의 참조 투명성은 함수 평가 순서가 중요하지 않음을 의미합니다. 따라서 결과가 필요할 때까지 기능을 평가할 필요가 없습니다.이를 지연 평가라고합니다. 이것은 프로그램이 첫 번째 명령으로 시작하고 마지막 명령까지 목록을 실행하는 명령형 프로그래밍과 완전히 대조적입니다. 지연 평가는 논리적으로 따르지 않거나 불필요한 프로그램의 일부를 건너 뛰므로 프로그램이 자동으로 최적화되고 컴퓨팅 시간이 단축 될 수 있습니다.
함수형 프로그래밍은 다른 프로그래밍 패러다임보다 많은 장점이 있습니다. 명확한 입력 및 출력 기능을 읽고 이해하기 쉽습니다. 함수가 완전히 디버깅되면 다른 응용 프로그램에서 안정적으로 사용할 수 있습니다. 멀티 코어 머신은 독립적으로 병렬로 평가되는 기능을 계산하여 프로그램 성능을 크게 향상시킬 수 있습니다.
불행하게도, 모든 프로그램이 병렬 컴퓨팅에 적합하지는 않으며, 기능적 프로그램 컴퓨팅은 다소 느릴 수 있습니다. 기능적 프로그램은 재귀에 크게 의존하기 때문에 전통적인 루프 나 반복 방법을 사용하는 것보다 덜 효율적입니다. 실제로 함수형 프로그래밍은 객체 지향 프로그래밍과 같은 다른 일반적인 패러다임과 유사하지 않기 때문에 매우 어색하고 배우기가 어려울 수 있습니다.
학계는 복잡한 실제 문제를 프로그래밍하는 명확하고 이해하기 쉬운 방법을 제공하기 때문에 기능적 프로그래밍을 선호하는 경향이 있습니다. 일부 순수한 언어는 Haskell과 Erlang입니다. Mathematica는 상징적 수학, R은 통계, J는 재무 분석을 전문으로합니다. Scala 및 F #과 같은 다중 패러다임 언어는 함수형 프로그래밍 및 기타 프로그래밍 스타일을 모두 지원합니다.