실제 세계에서 함수형 프로그래밍을 어떻게 사용할 수 있습니까? [닫은]
함수형 언어는 상태를 제거하여 버그를 피할 수 있기 때문에 유용 할뿐만 아니라 스레드 수에 대해 걱정할 필요없이 자동으로 쉽게 병렬화 될 수 있기 때문에 좋습니다.
하지만 Win32 개발자로서 내 응용 프로그램의 일부 dll에 Haskell을 사용할 수 있습니까? 그리고 내가 그렇게한다면, 저에게 자동적으로 주어질 실질적인 이점이 있습니까? 그렇다면 무엇이 나에게 이점을 제공합니까?
F #은 여러 코어와 CPU에서 작성하는 함수를 자동으로 병렬 처리합니까? 작업 관리자의 스레드 수가 증가하는 것을 본 적이 있습니까?
기본적으로 내 질문은 어떻게하면 실용적인 방법으로 Haskell을 사용할 수 있고, 그렇게하면 실제로 몇 가지 이점을 볼 수 있습니까?
Real World Haskell이 당신이 찾고있는 책인 것 같습니다. 온라인에서 무료로 읽을 수 있습니다.
http://book.realworldhaskell.org/
F #에는 다른 CPU 또는 컴퓨터로 기능을 전달하는 마법의 픽시 먼지가 포함되어 있지 않습니다. F # / Haskell 및 기타 함수형 프로그래밍 언어가 수행하는 작업은 생성 된 스레드 또는 CPU와 관계없이 처리 될 수있는 함수를 쉽게 작성할 수 있도록합니다.
내가 참여한 팟 캐스트 링크를 여기에 게시하는 것이 옳지 않다고 생각합니다. 조금 어색한 것 같지만 Matt Podwysocki와 이야기를 나눈 Herding Code 에피소드에서 같은 질문을했고 그는 흥미로운 답변을했습니다. 그 에피소드에는 함수형 프로그래밍과 관련된 좋은 링크도 많이 있습니다. 링크 제목 " 함수형 프로그래밍이 중요한 이유 " 라는 제목의 링크를 찾았습니다 . 여기에서 몇 가지 답변을 얻을 수 있습니다.
이것은 또한 흥미로울 수 있습니다. " 실제 함수 프로그래밍 "
예제는 F # 및 C #으로되어 있지만 이론은 상당히 일반적입니다. 내가 읽은 (사전 릴리스)에서 확실히 흥미롭지 만 지금까지는 Parallel Extensions와 같은 라이브러리를 사용하여 C #을 점점 더 많이 사용하고 싶다고 생각합니다.
당신은 언급하지 않았지만 나는 당신이 C ++를 사용하고 있다고 가정합니다. 잠재적으로 쉽게 작동하는 한 가지 방법은 C ++ / CLI에서 F #으로 연결하는 것입니다. C ++에는 관리 코드를 호출하거나 호출 할 수 있도록 "마법의 픽시 먼지"(IJW : It Just Works라고 함)가 포함되어 있습니다. 이를 통해 F # 코드를 호출하는 것은 C # 에서처럼 간단합니다.
나는 이것을 하나의 프로그램 (FreeSWITCH)에서 사용했는데, 이것은 전적으로 C / C ++로 작성되었습니다. 관리되는 단일 C ++ / CLI (/ clr 스위치 사용)를 사용하면 마술처럼 관리되는 코드로 전환되고 거기에서 F # 플러그인을로드하여 실행할 수 있습니다. 배포를 더 쉽게하기 위해 F #은 모든 종속성을 정적으로 연결할 수 있으므로 F # 런타임 파일을 배포 할 필요가 없습니다. CLR 코드를 매력적으로 만드는 또 다른 점은 관리 코드 (대리자)를 C 코드로 전달할 수 있고 런타임이 자동으로 썽크를 생성한다는 것입니다.
Haskell 방식을 사용하기로 결정한 경우 찾고있는 기능은 FFI : Foreign Function Interface입니다. 그러나 F #을 사용하는 C ++ / CLI와 동일한 수준의 통합을 제공하지 않을 것이라고 생각합니다.
저는 현재 Haskell을 직접 배우고 있습니다. 배우기 시작하면 학습 경험이 C #과 같은 언어를 배우는 것과 같지 않고 완전히 새로운 세계이기 때문에 그다지 흥미롭지 않은 것 같습니다.하지만 매우 복잡한 글을 쓸 수 있다는 것을 알았습니다. 몇 줄의 코드로 표현할 수 있습니다. 코드를 다시 살펴보면 훨씬 간결하고 작고 빡빡했습니다. 나는 그것을 절대적으로 좋아한다! 실제로 다른 대부분의 언어가 허용하는 것보다 더 작고, 유지하기 쉽고, 훨씬 더 복잡한 실제 프로그램을 작성할 수 있습니다.
행운을 빕니다.
Win32 및 DLL에 대해 언급 했으므로 관리되지 않는 코드로 작업하고 있다고 가정합니다. 이 경우 GHC가 매우 잘 작동합니다. 작년 말 저는 MS DDE 라이브러리와 통신하기 위해 FFI 를 사용하여 Windows에서 DDE 서버를 작성했으며 놀랍게도 매우 즐거운 경험이었습니다 (특히 제가 Unix 사람이라는 점을 감안할 때). Haskell의 FFI는 강력하며 (예를 들어 C 또는 다른 라이브러리에서 Haskell 함수로의 콜백을 지원하기도 함) C 수준 코드를 작성할 때 Haskell의 유형 검사를 사용하는 것은 꿈이 실현되는 것과 같습니다.
마지막 요점은 Haskell의 주요 장점 중 하나입니다. 유형 시스템은 놀랍습니다. 즉, 강력한 도구와 같습니다. 그것을 잘 활용하려면 시간과 노력이 필요합니다.
그렇습니다. 나머지 코드로 연결되는 Haskell에서 작은 코드를 작성하는 것이 가능합니다 (다른 코드로 연결되는 작은 Haskell 프로그램으로 시작하는 것이 더 쉬울 수 있습니다). 이것에 대해 배우고 가능한 곳에서 사용하는 데 상당한 시간이 걸립니다. 나처럼 하스켈에서 Windows 코드 (제 경우에는 정교한 Excel 추가 기능)와 긴밀하게 통합 된 상당히 중요한 프로젝트를 계획 할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/142948/how-can-i-use-functional-programming-in-the-real-world
'Programing' 카테고리의 다른 글
| ASP.NET MVC3 : packages.config의 용도는 무엇입니까? (0) | 2020.08.17 |
|---|---|
| Java 프로그램에서 다른 jar 실행 (0) | 2020.08.17 |
| Tmux 대 iTerm2 분할 창 (0) | 2020.08.17 |
| SELECT… FOR UPDATE를 언제 사용합니까? (0) | 2020.08.17 |
| 강력한 이름의 어셈블리를 사용하는 이유는 무엇입니까? (0) | 2020.08.17 |