문제

요즘 나는 기능적 프로그래밍에 심각하게 들어가고 있습니다.

나는 Haskell과 그것이 제공하는 가능성에 대해 정말로 흥분하지만, 배우는 데 시간이 걸릴 것임을 알 수 있습니다. 그렇게 질문에 Haskell을 배우는 방법 답은 실제로 "마스터"하는 데 몇 년이 걸리지 않으면 몇 달이 걸릴 것이라고 명시하고 있습니다.

이제 C, PHP, 일부 객체 지향적 인 물건 등을 알고 있으며 Haskell이 "실제 세계"에서 많이 사용되지 않는다고 들었습니다. 내가 아는 일반 언어로 내 기술을 향상시키는 것이 더 좋을까요? Haskell은 투쟁의 가치가 있습니까?

이 질문에서 사람들이 기능 프로그래밍이 따라갈 것이라고 생각하는 이유 결론은 기능적 프로그래밍이 "캐치"할 것이라는 것 같습니다. 그러나 확실히 절차 적 프로그래밍은 최고에 남아있을 것입니다.

편집 : Keparo는 내 질문을 다음과 같이 잘 설명합니다. 절차 적 언어와 달리 Haskell과 기능적 프로그래밍 패러다임을 연구하는 것이 가치가 있습니까?

도움이 되었습니까?

해결책

Haskell은 사람들이 배우기를 좋아하는 것만 큼 어렵지 않습니다. Haskell은 당신이 당신을 위해 존재한다는 것을 결코 알지 못했던 새로운 세상을 열어줍니다. 다른 언어만큼 배우는 것이 가치가 있습니다. Haskell 프로그래밍을 해야하는 일을 찾지 못할 수도 있지만 실제로 언어가 가치가 없다는 것을 의미합니까?

Haskell은 많은 새로운 것들을 가르쳐 줄 것이며, 당신과 함께 / 작업 / 작업하는 언어로 더 나은 프로그램을 제공하는 방법을 보여줄 것입니다. 여가 시간에 자신의 개인 프로젝트를 수행 할 수 있습니다.

"현실 세계"를 "현금 생성기"로 정의하면 Haskell은 실제로 "실제 세계"에서 많이 사용되지 않습니다. 그래서 그것이 당신의 목표라면, 당신은 목표를 다시 생각해야 할 수도 있습니다 : p

또한, 나는 선택한 "Haskell을 배우는 방법"답변의 일부를 좋아하지 않습니다. Haskell뿐만 아니라 모든 언어를 마스터하는 데 몇 달에서 몇 년이 걸립니다. "마스터"를 정의하는 방법에 따라 나는 Haskell을 꽤 좋은 효율성으로 사용할 수 있으며 한 달 동안 만 배우고 있으며 느리게 복용했습니다.

다른 팁

다른 것이 없다면, Haskell 학습이 제공하는 사고 방식의 변화는 직장에서 여전히 사용되는 절차 언어를 사용하는 것으로 되돌아 가야 할 때 도움이 될 것입니다.

기능적 패러다임은 다양한 주류 응용 프로그램과 언어로 나아가기 시작했습니다. C ++조차도 C ++ 0x에서 (Crippled) Lambda를 추가 할 것입니다.

Scala 또는 OCAML과 같은 일부 하이브리드 언어를보고 싶을 수도 있습니다. Scala는 Twitter에서 사용되고 있으며 Ocaml은 금융 거래 플랫폼의 Jane 's Street에서 사용되고 있습니다.

전문 환경에서 C 가족 언어만큼 자주 Haskell을 사용하지 않아야 할 것입니다. 질문이 Haskell과 기능 프로그래밍 패러다임을 공부하는 것이 가치가 있는지 여부라는 것이라면 대답은 예입니다. 프로그래밍에 대한 풍부한 이해를 모든 작업에 적용 할 수 있습니다.

나는 Haskell을 배웠습니다. 왜냐하면 그것은 Scala, Clojure, Ocaml 및 Stand에서 시도한 최고의 기능적 언어 였기 때문에 Haskell을 배웠지 만 일에 그것을 진지하게 사용할 것으로 기대하지는 않았습니다.

결과적으로, 팀에는 너무 작은 이상한 일자리에 적합하며 Java에서는 너무 많은 시간이 걸릴 것입니다. 지금까지 Ad-Hoc 데이터 마이그레이션, 즉 CSV 내보내기를 다른 형식으로 관리하는 데 사용했습니다. XML의 배치 변환 (HXT는 XSLT보다 간결하고 강력합니다), 인터넷을 포함하여 스크린 스케이프 및 모델링을 포함한 소프트웨어 프로젝트 추정. 확률 모나드를 사용하여 위험을 감수하고 역 추적을 사용하여 최적의 간트 차트를 생성합니다. 이것은 모든 일이 필요한 모든 일입니다. 나는 자바에서 며칠간의 일이 될 것이기 때문에 노력하고 시도조차하지 않았을 것입니다.

나는 텍스트 편집기에서 Haskell 소스에서 값을 Excel에 입력하는 것보다 Haskell 소스의 값 목록을 만들기위한 노력이 거의 없기 때문에 모호한 수학적으로 Excel 대신에 그것을 사용합니다. Haskell에서 일단 백 트래킹, 확률 분포 등과 같은 모든 종류의 마술을 할 수 있습니다. Excel은 할 수 없습니다. 그래프가 필요한 경우 값을 CSV (2 줄의 코드)로 뱉어 Excel에로드합니다.

유일한 단점은 능숙 해지는 데 몇 달이 걸리지 만 IMHO의 노력에 가치가 있다는 것입니다.

절차 적 언어와 달리 Haskell과 기능적 프로그래밍 패러다임을 연구하는 것이 가치가 있습니까?

확장 된 스킬 세트를 갖는 경우 가치가 있습니다. 예.

당신이 선택할 수있는 한 가지 이점 : 평행 및 동시 프로그래밍. 과거의 절차 언어는 부작용에 대한 명확한 개념이없는 경향이 있습니다. 결과적으로 평행 프로그램을 작성하는 것은 올바르게 수행하기가 어렵 기 때문입니다. 기능적 언어 (특히 Haskell과 같은 부작용을 제한하는 언어)는 생산적 병렬 프로그래밍에 대해 더 많은 언어를 가지고 있습니다.

그 기술을 소매에 올리면 아프지 않습니다.

비 기능 코드에서 사용하기가 매우 쉽다면 기능 프로그래밍이 생산 환경에서 플러스가 될 수 있음을 알 수 있습니다. MS는 그들이 F#를 생각해 냈을 때도 그것을 볼 수있었습니다.

둘 다 IL로 컴파일되므로 기능적 접근 방식을 요구하는 문제를 처리하고 절차 코드에서 해당 솔루션을 매우 쉽게 사용할 수 있습니다.

이런 식으로 기능 코드는 생산 환경에서 쉽게 찾을 수 있습니다. 한 번에 조금

따라서 MS의 사용자 기반이 크기 때문에 F#이 가까운 시일 내에 따라 잡지 않으면 Haskell도하지 않을 것입니다.

투쟁의 가치가 있다고 생각합니다. 컴퓨터 작동 방식뿐만 아니라 문제가 해결되는 방법을 이해하는 데 도움이됩니다.

어쩌면 한 가지 특별한 문제는 Haskell 자체 일 것입니다. 순전히 기능적인 언어로서, 반면에도 물건을 복잡하게 할 수도있는 "하드 코어"입니다.

기능적 프로그래밍은 대신 매우 실용적인 방식으로 매우 유용 할 수 있습니다. 많은 OO/명령 언어에는 이제 이러한 이유로 기능 요소 (LINQ, 익명 함수, 준비된 값, 기능 포인터/대표, 유형 - 상인) : 무엇에 집중할 수 있습니다. 더 적은 코드로 더 많이 표현할 수 있도록해야합니다 (오류가 적게 듭니다).

Scala 또는 F#과 같은 비 화제 언어 (표준 기능 언어)는 기존 Java 또는 .NET-Projects에 쉽게 통합 될 수 있으므로 필요한 경우 두 패러다임의 이점을 결합 할 수 있습니다. 기능 언어의 일반적인 장점은 참조하십시오 이 스레드. 매우 강력한 구문 분석 (Monadic Parser Combinators / PARSEC) 또는 기능 언어로 가능한 동시 프로그래밍을 생각하면 그들이 얼마나 유용한 지 알 수 있습니다.

절차 적 언어와 달리 Haskell과 기능적 프로그래밍 패러다임을 연구하는 것이 가치가 있습니까?

당신이 비참하고 싶지 않다면. 루크 공장은 말한다 Haskell/Python을 배우는 이유는 당신을 더 나쁜 프로그래머로 만드는 이유:

그래서 Python과 Haskell을 배우는 것을 배우고 기괴하고 이해하기 어려운 코드를 작성하도록 격려했습니다 ...

(이것은 전적으로 농담이 아닙니다.)

지평을 넓히면 현재 어떤 언어를 사용하든 더 나은 프로그래머가 될 수 있습니다. 예를 들어 LISP 매크로를 작성한 후 같은 방식으로 프로그래밍을 보지 못할 것입니다. Haskell 용어로 생각하기 시작하면 기능을 구성하고 덜 고급 언어로 폐쇄를 원할 것입니다.

Lambdas, 유형 추론, 폐쇄, 클로저, C#의 상품 판단 등등, Haskell을 배우면 주류 언어로 내일의 최첨단에 다리를 줄 것입니다.

어떤 사람들은 Haskell에서 프로그래밍을 즐깁니다. 환경을 선택할 수 있고 즐거움이 고려 사항이라면, 아마도 당신은 갈 것입니다.

많은 프로그래머는 자신의 도구를 선택할 수있는 위치에 있지 않으며 즐거움은 자신의 선택의 요소가 아닙니다. 그들 중 많은 사람들이 "핵심 프로젝트 소스"를 위해 직장에서 C/Java 등을 사용하지만, 스콘이있는 빌드 스크립트, Java 등을 생성하는 다른 스크립트와 같은 "스크립트"에 Python을 선택하거나 사용해야합니다. 코드, 테스트 시스템, 개념 증명 등 및 기타 장소에서는 Python도 "핵심 프로젝트"에 사용됩니다.

8 년 후에는 파이썬이 아닌 Haskell이 될 것입니다. 그러나 당신은 더 빨리 올 수 있습니다.

기능 프로그래밍 사용을 결합 할 수 있습니다 그리고 언어에 대해 실용적이어야합니다.

모든 현대 스크립팅 언어 SA JavaScript 또는 LUA는 기능적 패러다임을 사용할 수 있습니다.

기능적 개념이 강력하게 올라가고 있습니다. 루비 주변의 활동과 관심의 끔찍한 일에 주목하십시오. 또한 최근에 단순한 브라우저 스크립팅 언어를 넘어 JavaScript에 약간의 관심이 있음을 알았습니다. 투자 한 시간은 올해 또는 다음에 돈을 지불하지 않을 수도 있지만 지금 다이빙으로 게임을 앞서 갈 수 있습니다.

일반적인 게임 계획에 따라 다릅니다. 당신은 그 자체로 끝으로 또는 끝의 수단으로 프로그래밍에 참여하고 있습니까? 전자라면 Haskell과 함께 가십시오. 후자의 경우 "고용 가능한"언어의 주류를 고수하십시오. Haskell이 이륙 한 다음 Pounce를 기다릴 때까지 기다립니다.

객체 지향적이지 않은 절차 적, 절차 적으로 수년 동안 사용되는 절차가 C를 제외하고는 보이지 않는 이유

상업적으로 말하기. 나는 Java 또는 C#과 함께 갈 것입니다. 그들이 잘 지불하는 것은 중요하지 않으며 기술은 Python, Ruby 및 JavaScript와 같은 다른 마인드 언어와 상호 교환 할 수 있습니다.

Haskell은 시간과 노력의 가치가 있지만 매우 학문적이지만 일부 은행은이를 사용하지만 유럽과 영국의 많은 사람들은 코드 기반을 F#로 옮기고 있습니다.

나는 FOP가 상업적으로 말하면 빠른 속도로 움직일 것이라고 생각하지 않습니다. 그러나이 기술은 확실히 주요 숙박 언어로 나타나고 있습니다. 특히 멀티 코어 칩 디자인과 코드가 평행하게 실행됩니다.

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