Skip to main content

기능 프로그래밍이란 무엇입니까?

functional 프로그래밍은 계산의 기반이 표현식 평가 인 프로그래밍 패러다임입니다.일부 특성은 고차 기능, 참조 투명성 및 게으른 평가를 사용하는 것입니다.프로그래밍 스타일의 장점은 프로그램을 읽기 쉽고 신뢰할 수 있으며 구성 요소로 나눌 수 있다는 것을 포함합니다.단점은 계산이 느리고 스타일과 구문이 다른 일반적인 프로그래밍 스타일과 완전히 다르다는 것입니다.기능적 프로그래밍 스타일은 컴퓨터 과학 전문가보다 학업에 의해 더 자주 수용됩니다.함수는 고차 함수라고하는 다른 함수 내에 중첩 될 수 있으며, 각 고차 기능은 이해하고 디버그하기 쉬운 빌딩 블록 함수로 분해 될 수 있습니다.일부 고차 함수의 예는 맵과 둥지입니다.함수 맵은 함수 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#과 같은 Multiparadigm 언어는 기능 프로그래밍 및 기타 프로그래밍 스타일을 모두 지원합니다.