종료되었습니다. 이 질문은
주제에서 벗어남 입니다. 현재 답변을 받고 있지 않습니다.
댓글
답변
실용적 을 원하므로 언어 :
Haskell과 Lisp가 업계에서 다른 것보다 더 많이 사용되고 있음을 알 수 있습니다. 최근 Clojure와 F #에 관심이있었습니다.
하지만 Scheme을 믹스에 추가하면 어떻게되는지보세요 :
흠, 지금은 학문적 언어처럼 보이지 않습니까?
사실 위 그래프는 아마도 거짓말 일 것입니다. “scheme”이라는 단어가 도움말에 나타날 수 있습니다. 프로그래밍 언어 외에 다른 맥락에서 광고를 원했습니다. 🙂
여기에 아마도 (조금) 더 대표적인 또 다른 그래프가 있습니다.
Scheme의 진짜 방언을 탐구하고 싶다면 라켓.
댓글
Answer
함수형 프로그래밍을 배우고 싶다면 먼저 Haskell을 배우고 원하는 언어를 사용하는 것이 더 나을 수 있습니다. 다른 언어를 사용하여 함수형 프로그래밍을 배울 수 있지만 여전히 명령형 및 객체 지향 코드를 허용합니다. Haskell로 실제 프로그램을 작성하면 다른 패러다임은 대체 할 수 없기 때문에 함수형 프로그래밍을 더 빨리 배울 수 있습니다.
Haskell 프로그램을 작성한 후에는 모나드 및 기술과 같은 도구를 갖게됩니다. 선택한 언어로 가져 오는 점없는 코딩과 같은 개념입니다. 개념은 특히 Scheme에 잘 매핑되는 것 같습니다.
댓글
답변
사실, Scheme에서 상당히 복잡한 시스템을 구현할 수 있었다면 일하고 싶은 회사에서 상당히 바람직합니다. 제 경력 초기에 저는 Scheme에서 상당한 양의 작업을 수행 한 학생들을 만났습니다. 단점은 자신의 작업을 설명 할 수 없거나 기본 데이터를 구현할만큼 충분히 이해하지 못한 경우였습니다. 저는 항상 후보자들이 선호하는 언어로 그러한 질문에 답할 수 있도록했습니다. 쉽게해야 할 일로 꽤 힘들어하는 Scheme에서 최고라고 생각하는 사람들을 만났습니다. 링크드리스트에 요소를 추가하는 것과 같은데, 저를 어리둥절하게 만들었습니다.
하지만 일반적인 웹 앱도 작성할 수있을만큼 Scheme을 “가져올”수 있었다면 그것은 기껏해야 좋은 판매 포인트가 될 것입니다. 진지한 소프트웨어 회사입니다.
“blub”상점에서 인터뷰를했는데 개발자가 Scheme이나 Haskell 또는 F #에 능숙해서 당신이 이상하다고 생각했다면 아마 그곳에서 일하고 싶지 않을 것입니다. 대부분의 경우 유능한 개발자는 자신이 원하는 공연을 선택할 수 있으므로 미래에 상상할 수있는 유일한 옵션이 기업이 아니라면 “실용성”에 땀을 흘리지 마십시오. 유능하고 유연하며 문제를 해결하기 위해 노력하십시오.
대학은 실용성에 관한 것이 아닙니다. 이것은 탐험하고 배울 수있는 안전한 환경을 만드는 것입니다. 사실은 여러분이 남은 커리어 동안 평범한 소프트웨어를 작성하더라도 실제로 유용합니다.
그렇습니다. 그렇게 빨리 이러한 선택 중 하나에 만 제한하려는 이유를 확인하십시오. 약 4 주 만에 네 가지 언어를 모두 쉽게 이해할 수 있으며 현재의 변덕에 가장 잘 어울리는 언어 중 하나를 선택하여 집중할 수 있습니다. 다른 옵션으로 돌아가서 비슷한 것을 구현해보세요. 더 복잡한 것으로 넘어 가서 옵션을 다시 고려하세요. 실험은 좋습니다. 다음 달에 생계를 꾸리려고하지 않는 한 아직 전문가가 되세요.
저는 Scheme, F #, Emacs Lisp, Common Lisp에 글을 썼고, 적어도 지난 몇 년 동안 적어도 가끔은 Haskell을 조금 읽었습니다. 내가 전문가라고 말할 수는 없지만 이러한 언어로의 각 여행은 내가 전문적으로 작업하는 다른 모든 언어 (C #, Java, Ruby, 때로는 Boo, Perl 및 Python)에서 도움이되었습니다. 호기심은 그 무엇보다 더 오래 지속되고 성취감을주는 경력을 쌓을 것입니다.
댓글
답변
한동안 Haskell에 뛰어 들었지만 결론은 너무 학문적이라는 것이 었습니다. 실용적인 일을하는 것은 매우 어려웠습니다. 순수한 기능적 언어에서 IO와 같은 것은 모델에 맞지 않으므로 모나드를 처리해야합니다. 거의 유능하기 위해 엄청난 시간을 투자해야한다고 결정 했으므로 계속 진행했습니다. .
저는 대학에서 Scheme을했습니다. 사소하게 들릴 수도 있지만 모든 괄호는 정말 산만하고 성가신 일입니다. Python과 같은 언어를 사용한 후에는 다시 돌아 가기가 어렵습니다.
최근에는 F #을 탐색했습니다. 기능적이지만 원할 때 명령형 및 객체 지향적 일 수도 있습니다. 이는 모든 .NET 라이브러리를 사용할 수있는 것과 함께 순수 기능적 부분을 다음과 같은보다 실용적인 부분과 쉽게 혼합 할 수있게합니다. GUI, IO 및 네트워킹. F #의 독립 실행 형 버전을 얻을 수 있습니다.
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=effc5bc4-c3df-4172-ad1c-bc62935861c5&displaylang=en
댓글
답변
실용적인 범용 함수형 프로그래밍 언어를 원하는 관점에서 1 ~ 2 년 전에 모든 주요 함수 언어를 평가했습니다.
결국 Clojure 를 선택하게되었고, 그 결과 훌륭한 선택이되었습니다.
대부분의 주요 이유는 다음과 같습니다.
-
도서관 생태계 -언어가 유용하려면 액세스 권한이 필요합니다. 좋은 도서관에. JVM에 있다는 것은 가장 큰 오픈 소스 라이브러리와 도구 생태계에 쉽게 액세스 할 수 있다는 것을 의미하므로 JVM 언어를 사용하는 것은 실용적인 관점에서 생각할 필요가 없습니다. Scala도 여기서 높은 점수를 받았습니다.
-
매크로 메타 프로그래밍 -이 측면 of Lisp는 항상 저에게 호소력이있었습니다. 특히 꽤 많은 코드 생성을 기대했기 때문입니다. Paul Graham의 짧은 에세이 “ 평균을 뛰어 넘는 “에 나오는 주장을 매우 감사하게 생각합니다. 다양한 Lisps가 모두 여기에서 높은 점수를 받았습니다.
-
성능 은 “좋은 충분하다 “-Clojure는 항상 컴파일되며 JVM JIT 옵티 마이저 및 우수한 GC의 이점을 얻습니다. 항상 그렇듯이 기능적 언어를 사용하는 데 약간의 오버 헤드가 있지만 Clojure를 사용하면 약간의 노력으로 Java 속도에 가깝게 접근 할 수 있다는 것이 분명해졌습니다 (Clojure는 필요한 경우 Java 기본 형식과 선택적 정적 유형을 지원합니다). 내 추정치는 Clojure가 최적화 된 Java 또는 C ++ 코드로 달성 할 수있는 것보다 2 ~ 5 배 더 느리다는 것입니다. 이는 결함이있는 벤치 마크 에서 볼 수있는 것과 일치합니다. , 그리고 시간이 지남에 따라 그 격차가 더 좁아 질 것으로 예상합니다. 또한 순수 Java로 특히 성능에 민감한 코드를 작성하고 Clojure에서 호출하는 것도 쉽습니다.
-
동시성 -Clojure는 특히 멀티 코어 동시성에 대해 상당히 독특하고 강력한 동시성 접근 방식을 제공합니다. 설명하기는 조금 어렵지만 이 동영상은 원칙을 맛보기에 훌륭합니다. Clojure는 현재 “함수 프로그래밍 언어에서 공유, 동시 및 가변 상태를 어떻게 관리해야합니까?”라는 까다로운 질문에 대한 최상의 답변을 가지고 있다고 생각합니다.
-
언어 디자인 -Clojure는 IMO는 매우 신중한 언어 디자인입니다. 예를 들면 일반 Lisp 괄호 외에 벡터 [] 및 맵 {} 리터럴, 변경 불가능한 영구 데이터 구조 사용, 시퀀스 추상화를 통해 언어 전체에서 게으름 지원, 프로그래머에게 다양한 문제 해결을위한 다양한 직교 기능 제공 등이 있습니다. . 추상화 기술 및 간단한 간편성 을 참조하세요.
-
커뮤니티 -항상 주관적이지만 Clojure 커뮤니티에서 본 것을 좋아했습니다. 그 태도는 매우 도움이되고 건설적이며 실용적이었습니다. 많은 Clojure 직원 (Rich Hickey 자신 포함)이 복잡한 엔터프라이즈 시스템을 구축 한 경험이 있다는 사실을 반영하는 강력한 “작업 완료”가 강조되어 있습니다. Clojure 커뮤니티가 Java 커뮤니티에 대한 강력한 링크를 가지고 있다는 사실은 Clojure가 “틈새 시장”에 갇힐 위험이 없다고 확신하는 데 중요했습니다.
Clojure의 몇 가지 사소한 단점을 언급해야한다면 다음과 같습니다.
-
동적 입력 -종종 이것은 생산성 측면에서 이점이지만 평균적으로 더 강력한 유형 검사 및 추론을 위해 이것을 교환 할 것이라고 생각합니다. 대부분 이것은 좋은 자동화 된 테스트 스위트를 사용함으로써 완화되지만, 컴파일러에 의해 정적으로 검증 된 타입이 마음에 든다면 Haskell 또는 Scala가 더 나은 차 한잔 일 수 있습니다.
-
최첨단 -Clojure는 매우 빠르게 발전하고 있습니다. “sa 많은 혁신이 진행되고 있습니다. 단점은 실험이 많고 일부 라이브러리와 도구가 아직 미성숙하며 Clojure 주요 버전 사이에 간혹주의해야 할 주요 변경 사항이 있다는 것입니다.
하지만 전반적으로 훌륭하고 실용적인 현대 함수 언어를 원한다면 Clojure를 잘못 사용할 수 있다고 생각하지 않습니다!
댓글
Answer
It 숙제를 마친 것처럼 보이므로 이미 알고있을 것입니다.하지만 Scheme은 Common Lisp와 마찬가지로 Lisp의 방언입니다. Scheme에 대해 많은 것을 좋아하지만 학문적 성격이 마음에 들지 않으면 Common을 시도해보세요. Lisp. TIOBE 색인 에 따르면 26 위에있는 Scheme에 비해 13 번째로 인기있는 언어입니다.
여러 언어 중 몇 가지 언급 한 내용이 최근에 본 직업 설명에 나와 있지만, 그것은 단지 내 작은 샘플 세트 일 수 있습니다. 나는 개인적으로 Haskell을 배우게 될 것입니다. 비록 내 직업에서 그 언어를 직접 사용할 것이라고 기대하지는 않습니다. 함수형 프로그래밍의 개념은 언어 자체의 직접적인 시장성보다 미래의 프로그램 설계에 더 가치가 있습니다.
댓글