현실 세계에서 기능적 프로그래밍을 어떻게 사용할 수 있습니까? [닫은

StackOverflow https://stackoverflow.com/questions/142948

문제

기능 언어는 상태를 제거하여 버그를 피하기 때문에 좋습니다. 또한 스레드 수에 대해 걱정할 필요없이 자동으로 쉽게 병렬화 할 수 있기 때문입니다.

그러나 Win32 개발자로서 응용 프로그램의 일부 DLL에 Haskell을 사용할 수 있습니까? 그리고 만약 내가 그렇게한다면, 나를 위해 자동으로 취할 진정한 이점이 있습니까? 그렇다면이 장점을 제공하는 것은 컴파일러입니까?

F# 여러 코어와 CPU에서 작성한 기능을 자동으로 병렬화합니까? 작업 관리자의 스레드 수가 증가하는 것을 본 적이 있습니까?

기본적으로 내 질문은 어떻게 하스켈 사용을 실용적으로 시작할 수 있습니까?

도움이 되었습니까?

해결책

Real World Haskell이 당신이 찾고있는 것인 것 같습니다. 온라인에서 무료로 읽을 수 있습니다.

http://book.realworldhaskell.org/

다른 팁

F#에는 기능을 다른 CPU 또는 기계로 전달하는 매직 픽시 먼지가 포함되어 있지 않습니다. f#/haskell 및 기타 기능 프로그래밍 언어가하는 일이 생성 된 스레드 또는 CPU와 독립적으로 처리 할 수있는 기능을 쉽게 작성할 수 있다는 것입니다.

나는 여기에 내가 참여하는 팟 캐스트에 링크를 올바르게 게시하는 느낌이 들지 않지만, 조금만 보이는 것처럼 보이지만, 우리가 Matt Podwysocki와 이야기 한 Herding Code 에피소드에서 우리는 같은 질문을했고 흥미로운 답변을했습니다. 이 에피소드에서 기능 프로그래밍과 관련된 좋은 링크도 많이 있습니다. 하나의 링크 제목을 찾았습니다.기능 프로그래밍이 중요한 이유"그것은 당신에게 몇 가지 답변을 제공 할 수 있습니다.

이것은 또한 흥미로울 수 있습니다. "실제 기능 프로그래밍"

예는 F# 및 C#에 있지만 이론은 상당히 일반적입니다. 내가 읽은 내용 (프리 릴리스)에서 그것은 확실히 흥미 롭지 만 지금까지는 평행 연장과 같은 라이브러리를 사용하여 C#에 점점 더 많은 것을 고수하고 싶다고 생각합니다.

당신은 언급하지 않았지만 C ++를 사용하고 있다고 가정합니다. 기능을 수행하는 잠재적으로 쉬운 방법 중 하나는 C ++/CLI를 통해 F#입니다. C ++에는 "Magic Pixie Dust"(IJW : It It)가 포함되어있어 관리 된 코드로 호출 할 수 있습니다. 이를 통해 F# 코드를 호출하는 것은 C#에서 나온 것만 큼 간단합니다.

나는 이것을 하나의 프로그램 (FreeSwitch)에서 사용했는데, 이는 전적으로 C/C ++로 작성되었습니다. 단일 관리 된 C ++ /CLI ( /CLR 스위치 사용)를 사용하면 마술처럼 관리 된 코드로 전환되며 F# 플러그인을로드하여 실행할 수 있습니다. 배포를보다 쉽게하기 위해 F#은 모든 종속성을 정적으로 연결할 수 있으므로 F# 런타임 파일을 배포 할 필요가 없습니다. CLR 코드를 매력적으로 만드는 또 다른 점은 관리 된 코드 (대표)를 C 코드로 전달할 수 있고 런타임이 자동으로 귀하를 위해 펑크를 만든다는 것입니다.

Haskell Way로 가기로 결정한 경우 원하는 기능은 FFI : Foreign Function Interface입니다. 그러나 F#과 함께 C ++/CLI와 동일한 수준의 통합을 줄 것이라고 생각하지 않습니다.

나는 현재 Haskell을 배우고 있습니다. 당신이 그것을 배우기 시작할 때, 학습 경험은 C#과 같은 언어를 배우는 것과는 다르기 때문에 그다지 흥미롭지 않은 것 같습니다. 완전히 새로운 세상이지만 매우 복잡한 글을 쓸 수 있다는 것을 알았습니다. 몇 줄의 코드로 표현식, 코드를 되돌아 보면 훨씬 간결한 코드를 보았을 때 작고 빡빡했습니다. 나는 그것을 절대적으로 사랑하고있다! 당신은 실제로 더 작고 유지하기가 더 쉽고 대부분의 다른 언어보다 훨씬 더 복잡한 실제 프로그램을 작성할 수 있습니다.

행운을 빕니다.

Win32와 DLL을 언급하기 때문에 관리되지 않는 코드로 작업하고 있다고 가정합니다. 이 경우 GHC는 귀하에게 매우 효과적입니다. 작년 말에 나는 Windows에서 DDE 서버를 사용하여 FFI MS DDE 라이브러리와 대화하기 위해서는 놀랍게도 매우 즐거운 경험이었습니다 (특히 제닉스 사람이라는 점을 감안할 때). Haskell의 FFI는 강력합니다 (심지어 C 또는 다른 라이브러리에서 Haskell 기능으로의 콜백을 지원합니다). C 레벨 코드를 작성할 때 Haskell의 유형을 확인하는 것은 꿈이 실현되는 것과 같습니다.

마지막 요점은 Haskell의 주요 장점 중 하나입니다. 유형 시스템은 놀랍습니다. 즉, 그것은 강력한 도구와 같습니다. 그것을 잘 활용하려면 시간과 노력이 필요합니다.

그렇습니다. Haskell에 나머지 코드에 링크하는 작은 코드를 작성하는 것이 가능합니다 (다른 코드에 연결하는 작은 Haskell 프로그램으로 시작하는 것이 더 쉽지만) 지출 가치가 있습니다. 이것에 대해 배우고 가능한 곳마다 사용하는 상당한 시간. Haskell의 Windows Code (내 경우 정교한 Excel 애드 인)와 밀접하게 통합 된 상당히 주요 프로젝트를 계획하면서 나처럼 끝날 수 있습니다.

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