문제

함수형 프로그래밍의 장점은 무엇이라고 생각하시나요?그리고 오늘날 프로그래머에게는 어떻게 적용됩니까?

함수형 프로그래밍과 OOP의 가장 큰 차이점은 무엇입니까?

도움이 되었습니까?

해결책

기능적 프로그래밍의 스타일은 얻는 방법보다는 원하는 것을 설명하는 것입니다. IE : 반복자 변수가있는 for-loop를 만들고 각 셀에 무언가를하는 배열을 통해 행진하는 대신,이 레이블과 동등한 것은이 기능 이이 함수의 모든 버전을 모두 말합니다. 집단."

기능 프로그래밍은보다 기본적인 프로그래밍 아이디어를 컴파일러, 예 : 목록 이해 및 캐싱과 같은 아이디어로 이동합니다.

기능 프로그래밍의 가장 큰 이점은 신호입니다. 코드는 더 간결 할 수 있기 때문입니다. 기능 프로그램은 반복자 변수를 루프의 중심으로 만들지 않으므로 코드 에서이 종류의 오버 헤드와 다른 종류의 오버 헤드가 제거됩니다.

다른 주요 이점은 동시성이며, 컴파일러가 수동으로 상태 변수를 설정 해야하는 대부분의 작업 (루프에서 반복자와 같은 반복자)을 필요로하는 대부분의 작업을 관리하기 때문에 기능 프로그래밍을 사용하기가 더 쉽습니다.

대부분의 기능 언어와 확장이 게으른 평가를 지원하기 때문에 프로그램이 작성되는 방식에 따라 단일 프로세서의 맥락에서도 일부 성능 이점을 볼 수 있습니다. Haskell에서는 "이 레이블은 모든 짝수 숫자를 포함하는 배열을 나타냅니다"라고 말할 수 있습니다. 이러한 배열은 무한히 크지 만 배열 초기화 시간 (가장 큰 가치가 필요한 것)을 알지 않고도 해당 배열의 100,000 번째 요소를 요청할 수 있습니다. 값은 필요할 때만 계산되며 더 이상 계산됩니다.

다른 팁

가장 큰 이점은 당신이 익숙한 것이 아니라는 것입니다. 체계와 같은 언어를 선택하고 문제를 해결하는 법을 배우면 이미 알고있는 언어로 더 나은 프로그래머가 될 것입니다. 그것은 두 번째 인간 언어를 배우는 것과 같습니다. 당신은 다른 사람들이 기본적으로 비교할 것이 없기 때문에 자신의 변형이라고 가정합니다. 당신이 이미 알고있는 것과 관련이없는 다른 사람들에게 노출되는 것은 유익합니다.

기능 프로그래밍이 중요한 이유
http://www.cs.kent.ac.uk/people/staff/dat/miranda/whyfp90.pdf

따라서 좋은 출발점은 명령형 언어에서는 불가능하지만 기능적 언어에서는 가능한 몇 가지 사항을 이해하려고 노력하는 것입니다.

계산 가능성에 대해 이야기하고 있다면 함수형 프로그래밍에서는 가능하지만 명령형 프로그래밍에서는 불가능합니다(또는 그 반대).

다양한 프로그래밍 패러다임의 핵심은 이전에 불가능했던 일을 가능하게 하는 것이 아니라 이전에 어려웠던 일을 쉽게 만드는 것입니다.

함수형 프로그래밍의 목표는 간결하고 버그가 없으며 병렬화 가능한 프로그램을 보다 쉽게 ​​작성할 수 있도록 하는 것입니다.

C#3.0과 같은 언어를 사용하면 각각의 가장 좋은 요소를 혼합 할 수 있습니다. OO는 클래스 수준 이상에서 대규모 구조에 사용될 수 있으며, 방법 수준에서 소규모 구조의 기능적 스타일.

기능적 스타일을 사용하면 제어 흐름 명령문 등이 혼합되지 않고도 의도를 명확하게 선언하는 코드를 작성할 수 있습니다. .

기능 프로그래밍의 필요성의 가장 실용적인 예는 동시성이라고 생각합니다. 기능 프로그램은 자연스럽게 스레드가 안전하며 멀티 핵심 하드웨어의 상승을 감안할 때 가장 중요합니다.

기능 프로그래밍은 또한 모듈성을 증가시킵니다. 종종 너무 길어지는 방법/함수를 필수적으로 볼 수 있습니다. 몇 줄 이상의 기능을 거의 볼 수 없습니다. 그리고 모든 것이 분리되기 때문에 재사용 가능성이 크게 향상되고 단위 테스트는 매우 쉽습니다.

프로그램이 커지면 우리가 사용하는 어휘의 명령 수가 너무 많아져서 사용하기가 매우 어려워집니다.객체지향 프로그래밍이 우리의 명령을 더 나은 방식으로 구성할 수 있게 해주기 때문에 우리의 삶을 더 쉽게 만들어줍니다.고객과 관련된 모든 명령을 일부 고객 엔터티(클래스)와 연결할 수 있으므로 설명이 훨씬 더 명확해집니다.그러나 프로그램은 여전히 ​​진행 방법을 지정하는 일련의 명령입니다.

함수형 프로그래밍은 어휘를 확장하는 완전히 다른 방법을 제공합니다.새로운 기본 명령을 추가하는 데 국한되지 않습니다.또한 프로그램을 생성하기 위해 명령을 조합하는 방법을 지정하는 기본 제어 구조인 새로운 제어 구조를 추가할 수도 있습니다.명령형 언어에서는 명령을 순서대로 구성하거나 루프와 같은 제한된 수의 내장 구문을 사용하여 구성할 수 있었지만 일반적인 프로그램을 보면 여전히 반복되는 구조가 많이 있습니다.명령을 결합하는 일반적인 방법

"필요"측면에서 기능 프로그래밍을 생각하지 마십시오. 대신, OOP, 템플릿, 어셈블리 언어 등과 마찬가지로 마음을 열어 줄 다른 프로그래밍 기술로 생각하십시오. 궁극적으로 기능 프로그래밍을 학습하면 더 나은 프로그래머가 될 것입니다.

기능 프로그래밍을 아직 모른다면 학습하면 문제를 해결할 수있는 더 많은 방법이 제공됩니다.

FP는 1 등석 값으로 기능을 촉진하는 간단한 일반화이며 OOP는 대규모 코드 구조화를위한 것입니다. 그러나 OOP 디자인 패턴이 일류 기능을 사용하여 직접적으로 훨씬 간결하게 표현 될 수있는 중첩이 있습니다.

OCAML, C# 3.0 및 F#을 포함하여 많은 언어가 FP와 OOP를 모두 제공합니다.

건배, Jon Harrop.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top