함수형 프로그래밍이 필요한 이유


38

함수형 프로그래밍의 거래는 무엇입니까? 나는 그것에 대해 많은 이야기를하지만 솔직히 말해서 나는 그것들이 전혀 유용하지 않다는 것을 알았습니다. 왜 그렇게 많은 대학들이 그들에게 가르치는가?


6
AI 프로그래밍이 매우 큽니다.
아쿠아

3
@ aqua-왜 그렇게 대답하지 않아야합니까?
Martin Beckett

5
또한 전통적인 OO 언어조차도 함수형 프로그래밍의 개념을 포함하기 시작했다고 지적하고 싶습니다. Linq (.NET에서)가 그 예입니다.
apoorv020

함수형 프로그래밍은 뇌를 더 많이 훈련시키고 실제로 코드를 생성 할 수 있다고 생각합니다. 꽤 멋지다.
Adel

2
@ apoorv020 : 그리고 제네릭, 튜플 및 가비지 콜렉션 및 ... 모두 기능적 언어에서 시작되었습니다.
Jon Harrop

답변:


60

기능 프로그래밍이 중요한 이유 부터 시작하십시오 . 그런 다음 함수 프로그래밍이 중요한 이유로 이동하십시오 . 몇 가지 총알 :

  • 함수형 프로그래밍을 사용하면 문제에 대해 다르게 추론 할 수 있습니다
  • 기능적 추상화는 매우 강력하며 다른 패러다임에서는 사용할 수없는 방식으로 코드 를 건조 할 수 있습니다.
  • 멀티 코어 미래에는 기능적 언어가 동시 작업으로 분할하기가 더 쉬울 수 있습니다 (엄격히 기능적이지 않은 언어도 문제에 대해 열심히 노력하고 있지만).
  • 순수한 기능 언어로 작성된 프로그램 (부작용 없음)이 수학적으로 정확하다는 것을 쉽게 증명할 수 있습니다.

5
+1-이것들은 모두 훌륭한 점이며, 내가 시도한 것보다 더 간결하고 자세하게 설명되어 있습니다.
jmort253

1
당신의 네 번째 점으로, 당신은 평균 않은 언어가 올바른 입증 할 수있다, 또는 프로그램 작성 언어? 어쨌든, 불순한 언어와 불순한 언어로 작성된 프로그램은 모두 정확한 것으로 입증 될 수 있습니다. 훨씬 어렵고 지저분합니다.
Jörg W Mittag

1
@ Jörg W Mittag, 언어 자체의 속성에 대해서도 추론하기가 훨씬 쉽습니다. 명칭 의미론은 기능적 언어에는 사소한 것이며 명령형에는 매우 복잡합니다.
SK-logic

두 번째 링크가 어떻게 "명시적인"인수를 제공하는지, 나는 심지어 첫 번째 링크를 읽지 못한다는 것을 알고 있습니다.
jokoon

+1 : 정답입니다. 글 머리 기호 # 1과 # 2를 단어에 넣는 방법이 특히 좋습니다.
Jim G.

9

함수형 프로그래밍 개념은 생각하는 방식을 바꾸고 실제 문제를 해결하는 데 도움이되는 토대를 구축합니다.

이 개념은 우리가 경력에 특정 지식이 필요하지 않더라도 모두 다 변수 미적분학, 대수학 및 / 또는 공학 물리학을 컴퓨터 과학 전공으로 배우는 이유와 유사합니다.

이것이 바로 로스쿨이 수학 학사 후보를 좋아하는 이유입니다. 수학 공부는 논리적 인 방식으로 여러 개념에 대해 생각하도록 가르치고, 기능 프로그래밍은 문제를 분해하고 다른 시각으로 보는 데 도움이되는 추상화 및 기타 여러 중요한 개념을 가르쳐줍니다.

요약하면 기능 프로그래밍은 학습 방법을 가르쳐줍니다.


아마 실제로 이름이 필요하지 않습니까? 단순히 '정확한'프로그램 설계가 아닙니까?

4

시작할 때 기능적 프로그래밍은 최고의 사고 모델입니다. 대부분의 프로그램은 객체 지향이 필요하지 않기 때문입니다. 적어도 그것은 내 경험이었습니다.

그러나 이제는 디스플레이와 로직의 분리가 필요한 일부 앱을 시작했습니다.이 시점에서 모든 로직과 디스플레이 코드를 분리하기 시작하여 각각의 작업을보다 쉽게 ​​수행 할 수있게되었습니다.

그러나 Functional을 먼저 마스터하지 않으면 왜 그렇게해야하는지 알 수 없습니다. 나는 사람들이 나에게 OO를 내리는 것을 좋아하지 않았다. 어떤 접근 방식을 사용하든 현재 작업중인 작업에 적합하며 학습 비용이 너무 많이 들기 때문에 학습 비용이 너무 많이 들지 않아야합니다.


1
+1-작업에 가장 적합한 기술을 사용하는 것이 좋습니다.
jmort253

1
안타깝게도 업계에서는 상식이 거의 없습니다. 우리 각자가 완전히 다른 경험을 가지고 있기 때문에, 실수로 인해 서로 다른 습관이 생겨나 고, 우리는 서로 다른 습관을 겪게됩니다. 그리고 왜 우리가 행동을하는지 ... 소스 제어를 적응시키는 것과 같이, 그들 자신.
crosenblum

"상식은 세상에서 가장 공평하게 분배 된 것입니다. 각 사람은 자신이 그 책에 너무 잘 부여되어 있다고 생각하기 때문에 다른 모든 문제에서 가장 만족하기 어려운 사람들조차도 이미 그 이상을 원하는 습관이 아닙니다 있다." - 데카르트

3

명사가 아닌 동사를 강조하기 때문입니다. 때로는 중요한 동사입니다.


OOP는 명사를 강조합니다. 때로는 그것이 명사 인 것이 중요합니다. 우리는 어떻게 알 수 있습니까? – 거짓 딜레마. 시스템 정지

3

일반적으로 동일한 작업을 수행하기 위해 더 적은 코드를 사용하기 때문입니다. 작성할 코드가 적을수록 유지 관리하는 코드가 줄어 듭니다. 코드가 적을뿐 아니라 상태도 적기 때문에 추론하기가 조금 더 쉽습니다 (한 번 익숙해지면).


그래서 그것은 단순히 '더 나은'의 정의가 아닙니까? 당신이 묘사 한 것 이외의 다른 일을하고 싶은 이유는 무엇입니까?

2

대학은 모든 프로그래밍 패러다임에서 무언가를 가르치기를 원하기 때문에 특정 기능의 경우 기능적 프로그래밍이 더 좋습니다 (게임 캐릭터 움직임 설명 및 애니메이션 설명 등)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.