문제

나는지 궁금하다면 나는 계속해야를 배우 여러 스 F#나이터베이스를 저장합니다.

여기에 조건을 나는 대부분의 관심에서:

  • 수명

    • 어떤 언어를 더 오래 지속됩니다?나는 원하지 않는 무언가를 배울 수 있는 포기는 몇 년에 의 사용자와 개발자입니다.
    • 이 Inria,Microsoft,글래스고 대학을 지원하기 위해 계속 자신의 각각의 컴파일러를 위한가?
  • 실용성

    • 다음과 같은 기사 나를 무서워하게 사용이터베이스를 저장합니다.해시 테이블에 최선의 구조에 대한 신속한 검색이 가능.는 메인 지지자가 사용하는 것이 좋은 데이터.지도는 바이너리 나무입니다.
    • 내가 좋아하지 않는 연결되는 부피가 큰 것입니다.NET framework 지 않는 혜택이 큽니다.
    • 고 싶어 개발할 수있는 보다 더 파서 및 수학 프로그램입니다.
  • 잘 설계

    • 나는 나의 언어를 일관성이 있어야하는 것입니다.

을 지원하십시오 귀하의 의견으로 논하고 인용문 기사입니다.감사합니다.

도움이 되었습니까?

해결책

장수

  • Haskell입니다 사실상 기능적 프로그래밍 연구의 지배적 인 언어. Haskell 98은 몇 년 동안 안정적인 형태로 지속될 것이며 Haskell이라는 것은 10 년에서 30 년 동안 지속될 수 있습니다. 그러나 언어는 계속 발전 할 것입니다. 커뮤니티는 Haskell에 대한 주요 투자를하고 있으며, 주요 GHC 개발자가 내일 버스에 부딪 히더라도 (케임브리지의 유명한 버스 오류 "문제), 판에 올라갈 수있는 다른 많은 사람들이 있습니다. 덜 정교한 컴파일러도 있습니다.

  • CAML은 프랑스 국립 실험실 인 INRIA의 소규모 그룹에 의해 통제됩니다. 또한 상당한 투자를하고 다른 사람들도 CAML에 투자하고 코드는 오픈 소스이며 컴파일러는 너무 복잡하지 않으므로 오랫동안 유지 될 것입니다. INRIA 사람들이 더 이상 새로운 언어 아이디어를 탐색하기위한 수단으로 사용하지 않는 것처럼 보이기 때문에 CAML은 Haskell보다 훨씬 안정적이라고 예측합니다 (또는 적어도 과거보다 작은 속도로 그렇게하고 있음).

  • 회사가 무엇을할지 누가 알겠습니까? F#이 성공하면 Microsoft는 20 년 동안이를 지원할 수 있습니다. 성공하지 못하면 2012 년에 플러그를 뽑을 수 있습니다. 추측 할 수없고 시도하지 않을 것입니다.

실용적인 사항

해시 테이블은 빠른 검색을위한 가장 좋은 구조입니다. Haskell 지지자는 이진 트리 인 Data.map을 사용하는 제안을 제안합니다.

그것은 당신이 검색하는 것에 달려 있습니다. 열쇠가 끈 일 때 3 배 검색 트리 종종 해시 테이블보다 빠릅니다. 열쇠가 정수 인 경우 오카사키와 길 이진 패트리샤 나무 해싱과 경쟁합니다. 정말로 원한다면 IO 모나드를 사용하여 Haskell에 해시 테이블을 만들 수 있지만 필요하지는 않습니다.

게으른 평가에 대한 성과 페널티가 항상있을 것이라고 생각합니다. 그러나 "실제"는 "가능한 빨리"와 동일하지 않습니다. 다음은 성능에 대해 사실입니다.

  • CAML 프로그램의 시간과 공간 동작을 예측하는 것이 가장 쉽습니다.

  • F#은 중간에 있습니다 (.NET과 JIT가 무엇을 할 것인지 실제로 알고 있습니까?)

  • Haskell 프로그램의 시간과 공간 행동을 예측하는 것은 가장 어렵습니다.

  • Haskell은 최고의 프로파일 링 도구를 보유하고 있으며 장기적으로는 최고의 성능을 제공합니다.

나는 단순한 파서와 수학 프로그램 이상을 개발할 수 있기를 원합니다.

Haskell에서 가능한 범위에 대한 아이디어는 Xmonad 창 관리자와 광대 한 배열의 패키지 ~에 hackage.haskell.org.

혜택이 크지 않으면 부피가 큰 .NET 프레임 워크에 묶는 것을 좋아하지 않습니다.

나는 댓글을 달 수 없다 :

잘 설계되었습니다

나는 내 언어가 일관되기를 좋아합니다.

일관성을 평가할 수있는 몇 가지 사항 :

  • Haskell의 콘크리트 구문은 매우 잘 설계되었습니다. 나는 Haskell Committee의 좋은 일에 지속적으로 깊은 인상을 받았습니다. OCAML 구문은 괜찮지 만 비교하여 고통받습니다. F#은 CAML Core 구문에서 시작하여 많은 유사성을 가지고 있습니다.

  • Haskell과 Ocaml은 모두 운영자 과부하에 대한 매우 일관된 이야기를 가지고 있습니다. Haskell은 자신을 확장 할 수있는 일관되고 강력한 메커니즘을 가지고 있습니다. OCAML은 어떠한 종류의 과부하가 없습니다.

  • OCAML은 가장 간단한 유형 시스템을 가지고 있습니다. 특히 객체와 기능을 작성하지 않는 경우 (많은 CAML 프로그래머가하지 않는 경우가 많지만 ML을 작성하는 경우 기능을 쓰지 않는 것이 미쳤습니다). Haskell의 유형 시스템은 야심적이고 강력하지만 지속적으로 개선되고 있습니다. 이는 역사의 결과로 약간의 불일치가 있음을 의미합니다. F#는 본질적으로 .NET 유형 시스템과 ML 유사 Hindley-Milner 다형성을 사용합니다 (질문 참조 "Hindley-Milner는 무엇입니까?".)

  • OCAML은 변형이 정적으로 입력되거나 동적으로 입력되어야한다고 생각하는지 여부에 따라 일관성이 없으므로 ( "대수 데이터 유형"및 "다형성 변형")를 모두 제공합니다. 결과적인 언어에는 많은 표현력이 있으며 전문가에게는 적합하지만 사용을 구성하는 것이 아마추어에게는 항상 분명하지는 않습니다.

  • OCAML의 평가 순서는 공식적으로 정의되지 않았으며, 이는 부작용이있는 언어에서 설계 선택이 좋지 않습니다. 더 나쁜 것은 구현이 일관되지 않습니다. 바이오 코딩 된 가상 머신은 한 순서를 사용하고 기본 코드 컴파일러는 다른 순서를 사용합니다.

다른 팁

해야 당신 배우 F#켈 또는 당신이 알고 있는 경우 여러분?

나는 대답은 확실히 그렇다,이상적으로 당신이 배워야 하는 세 가지 모든 언어하기 때문에 각각 제공하는 뭔가가있다하지만이 가진 단 하나 중요한 미래,당신이 할 수있는 경우에만 가능하게 배우 하나의 언어를 배우고,F#을 읽고 나 Visual F#2010 에 대한 기술적 책 컴퓨팅 또는 목욕 가운,슬리퍼 및 이 F#.NET Journal.

수명

Microsoft 을 지원하기 위해 최선을 다하고 F#때 그들의 일환으로 Visual Studio2010 년에 있습니다.그래서 F#보장 장미 빛 미래를 위해서는 적어도 몇 년 동안입니다.강력한 조합의 실질적으로 중요한 특징은 다음과 같이 높은 성능을 기본 코드의 복제,수준 높은 구조에 대한 병렬 처리를 내장할 수 있습니다.순 4 과 생산 품질 IDE 모드,F#가 방법은 앞으로 어떤 다른 기능적인 프로그래밍 언어의 관점에서 실제 적용이 지금입니다.솔직하게,아무도 심지어 작업할 수 있습니다 아무것도와 경쟁 할 수있 F#가까운 미래에 있습니다.내 자신이 오픈 소스 HLVM 프로젝트도 그렇게 하지만 그것은 멀리에서 준비합니다.

대조적으로,여러 플랫폼에 이식 가능하고켈 개발되고 있에서 매우 비생산적인 방향입니다.이것은 살인 는 지난 몇 년 동안 기대하고 있습니켈 소송을 수행하는 다음 몇 년 동안.대부분의 전문 여러 플랫폼에 이식 가능하고는 메인 프로그래머는 이미에 이동 F#(예:크레딧 스위스는,비행 개구리 컨설팅)과 나머지의 대부분이 심를 마이그레이션을 더 실제적인 대안 등 Clojure 와 스칼라에서 가까운 미래입니다.

특히,여러분의 QPL 라이센스는 것을 방지 할 수 있습니다 다른 사람결에서의 성장수의 기본적인 설계 결함(16 메가바이트 문자열 및 배열에 대한 제한 32 비트 시스템의 공유 메모리 병렬 값이 없는 종류,파라메트릭한 다형성을 통해 유형*삭제,해석되 그렇지 않으면 복잡 FFI etc.) 해야 하기 때문에 배포하는 파생 제품 의 형태에서 패치를 원래의 데비안 패키지 관리자들의 인정을 거부하는 대안을 서버로 전송한다.새로운 기능이 추가되고,언어와 같은 첫 번째 클래스 모듈에서 여러 3.12,근처으로 가치있으로 멀티코어 기능도 있었을 것입니다.

일부 프로젝트에서 시작되었을 저장하려고 하면 여러 하지만 그들은 너무 너무 늦었습니다.이 parallel GC 은 실질적으로 쓸모가 없고 다윗은 점쟁이 종료 배터리 포함 프로젝트(지만 그것이 포착되었고 발표에서 잘라운 형태).따라서,여러가 되 갔 가장 인기있는 기능을 언어에서 2007 가혹한 하락,오늘 caml 목록 트래픽을 아래로 50%이상 2007 년 이후.

켈 적은 산업보다 사용자가 여러 플랫폼에 이식 가능하고,비록 그것은 멀티 코어를 지원,그것은 아직 개발되고 있기 때문에 매우 비생산적인 방향입니다.켈 개발되는 거의 전적으로 두 사람에 의해 마이크로소프트 본사에서 소프트 캠브리지(영국).는 사실에도 불구하고 순전히 기능적인 프로그래밍을 위해 나쁜 성능에 의해 디자인,그들은 계속 시도를 개발 솔루션을 위한 병렬켈을 목표로 multicores 때 엄청난 양의 불필요한 복사 초래시 메모리의 벽을 파괴 어떤 희망의 확장 가능한 병렬 처리에서 멀티 코어입니다.

유일한 사용자는 여러 업계에서입니다 Galois 30full-time 는 메인 프로그래머를 위한 것입니다.나는 그들이 하스켈 완전히 죽을 의미하지 않는 그들은 그것을 개발할 것입으로 더 많은 일반적으로 유용한 언어입니다.

실용성

내가 쓴 문서 당신을 인용하에 대한 해시 테이블이 있습니다.그들은 좋은 데이터 구조입니다.다른 사람들이라고 순전히 기능적인 대안 같은 삼나무 나무와 패트리샤 하지만 이들은 일반적으로~10×보다 느리게 해시 테이블에 있습니다.그 이유는 단순히 캐시를 벗어났을 지배 성능 문제는 오늘날과 나무에 추가 비용이 발생함을 O(로그 n)포인터 indirections.

나 개인적인 기본 설정은 선택을 위한 게으름과 선택적 순수성 때문에 일반적으로 비효율적으로 현실 세계에서(예를들면게으름은 성능과 메모리 사용량은 격렬하게 예측할 수 없고 순수함이 심각하게 저의 평균 경우 성능 및 상호 운용성을 악몽).나는 하나의 유일한 사람을 획득에서 완전히 기능적인 프로그래밍을 통해 내의 자신의 회사입니다.말 충분하는 경우에,나는 생각이 들었다 가능한가 다양한 그것으로 년 전에 모든 연령대의 어린이를 선택하지 않기 때문에 나는 그것을 믿지 않는 상업적으로 실행 가능합니다.

당신이 말한"좋아하지 않는 연결되는 부피가 큰 것입니다.NET framework 지 않는 혜택이 큰".이 혜택은 거대합니다.당신은 생산-품질 IDE,생산-품질 JIT 컴파일러 수행하는 매우 효율적인 최적화 같은 유형-전문 제네릭,생산-품질 라이브러리를 모두에 대한 GUI 프로그래밍(참조하십시오 생활의 게임에서 32 개의 선 F# 이)번호를 재정.하지만 실제 혜택이다.NET,적어도 나를 위해,당신 판매할 수 있는 라이브러리에서 쓸 F#고 돈을 많이 벌.아무도 성공했는 판매하는 라이브러리를 여러 플랫폼에 이식 가능하고는 메인 프로그래머(그리고 나는 몇 사람 중 하나를 시도했지만)그러나 F#라이브러리 이미에서 판매하는 상당한 양입니다.그래서 부피가 큰 것입니다.NET 프레임워크는 그만한 가치가 있는 경우에 당신이 원하는 생계를 작성하여 소프트웨어입니다.

잘 설계

이 언어는 잘 설계되었지만 다른 목적이 있습니다.여러는 특별히 설계 쓰기에 대한 원리 들여오기/내보내기 플러그와켈는 특별히 설계에 대한 연구가 필요합니다.F#해결하기 위해 설계되었습니다 모두의 가장 심각한 실제적인 문제로 여러 플랫폼에 이식 가능하고켈과 같은 가난한 상호 운용성,부족한 동시에 가비지 컬렉션의 부족 성숙한 현대의 라이브러리를 좋아하 WPF 에서 가져오기 위하여 생산 현대적인 언어 있습니다.

이것은 당신의 기준 중 하나가 아니었지만 당신은 직업 가용성? Haskell은 현재 OCAML List 12 및 C# List 26,000에 144 개의 일자리를 나열합니다. 이 숫자는 완벽하지는 않지만 일단 F# 선박이 일자리 목록 수에서 Haskell과 Ocaml을 지나가기까지 오래 걸리지 않을 것이라고 확신합니다.

지금까지 Visual Studios에 포함 된 모든 프로그래밍 언어에는 수천 개의 작업 목록이 있습니다. 당신이 당신의 하루 직업으로서 기능적 프로그래밍 언어를 사용할 수있는 가장 좋은 기회를 원한다면 F#가 곧 될 것입니다.

수명

No 미래를 예측할 수 있지만,

  • 여러 플랫폼에 이식 가능하고 들었 surving 론 수년 동안,잘 예시를 위한 그들의 미래
  • 때 F#선박 VS2010,MS 가 법적 의무를 지원하는것이 적어도 5 년

실용성

Perf:가 없는 충분한 경험과 특성을 나타내지만에 기초하며,제삼 손 정보,나는 생각하는 여러 또는 F#더 많은 실용적인 의미에서 생각하는 당신을 얻을 수있을 것 같은 실시간 성능 파일에서 수행하는 것 OCaml F#.

라이브러리:서비스.Net 프레임워크는 거대한의 이익을 F#.당신은 그것을 볼 수 있으로 묶여"이 부피가 큰 것"당신이 좋아하는 경우에,그러나 잊지 마세요"당신은에 액세스할 수 있는 거대한 부피가 큰 라이브러리는 종종 매우 유용한 재료".이'연결'니다.Net 은 하나의 큰 판매하는 점 F#.F#는 젊은이고 그래서는 더 적은 타사 라이브러리,그러나 이미 예: FsCheck, FParsec, 가짜, 고,다른 사람의 무리한 라이브러리가"상자에서"니다.Net.

장식새김:가 없는 충분히 개인적인 경험을 비교하고,그러나 내가 생각하는 대한 통합과 함께 F#이 우수한 아무것도를 찾을 수 있 OCaml/켈 오늘(F#향상하는 것을 계속할 것입니다 여기에 약간 이상의 다음 연도).

변경:F#은 여전히 변경으로 접근 방식 그것의 첫번째 지원 릴리스 VS2010,그래서 거기에 몇 가지 주요 변경 내용에 대해 설명합니어 라이브러리할 수 있습을 견딜 가까운 미래에 있습니다.

잘 설계

날아다니며 확실히 아름답고 일관성입니다.지 충분히 알고 있지만 여러 나 직감은 그것은 마찬가지로 매력적이다.내가 생각하는 것이 더 큰 것보다 하나 그들의 의미하는 더 먼 모서리와 불일치(주로 결과의 중재 임피던스 불일치 사 FP 다.Net)지만,전반적으로 F#여전히 느끼는'깨끗'나와 불일치가 있는 존재가 적어도 잘 추론/의도.

전체

내 의견은 당신이 될 것입니다에서는'좋은 모양이'아는 이러한 세 가지 언어로습니다.당신이 알고 있는 경우 큰 장기 프로젝트를 당신이 그것을 사용하고 싶을 위해,하나 있습니다,하지만 많다고 생각 기술의 것 양도 불가능(자세가 쉽게 사 F#그리고 여러 이상에서 메이지만,또한 더 쉽게 이 이 세상으로,말,Java).

그 질문에 대한 간단한 대답은 없지만 여기에 고려해야 할 사항이 있습니다.

Haskell과 Ocaml은 모두 강력한 구현을 가진 성숙한 언어입니다. 실제로, Haskell에는 여러 가지 좋은 구현이 있지만, 그것이 당신의 목적에 유리한 주요 요점이라고 생각하지 않습니다.

F#은 훨씬 더 젊고 누가 Microsoft가 어디에서 가져 가기로 결정할 것인지 예측할 수 있습니까? 그것에 대해 어떻게 생각하는지는 언어에 대해 다른 사람이 당신에게 말할 수있는 것보다 Microsoft에 대한 느낌에 더 달려 있습니다.

OCAML (또는 일반적으로 ML)은 불편한 방식으로 일하도록 강요하지 않고 멋진 기능을 수행하는 것을 지원하는 좋은 실용적인 언어 선택입니다. 대수 데이터 유형, 패턴 매칭, 유형 추론 및 기타 사람들이 좋아하는 것들과 같은 것들의 모든 혜택을 얻을 수 있습니다. 아, 그리고 물체.

Haskell은 여러분에게 모든 것을 제공하지만 (객체 제외), 또한 프로그래밍에 대해 생각하는 모든 것을 다시 생각하게합니다. 새로운 것을 배우려고한다면 이것은 아주 좋은 일일 수 있지만 물고 싶은 것보다 더 많을 수도 있습니다. 나는 이것을 생산적이고 행복한 Haskell 프로그래머가되는 길을 따라 반쯤에있는 사람으로 말합니다.

Ocaml과 Haskell은 모두 컴파일러와 AI 등이 아닌 다양한 종류의 프로그램을 작성하는 데 사용됩니다. 구글은 당신의 친구입니다.

마지막 참고 사항 : OCAML은 귀하에게 해시 가능을 제공하지만 기능 프로그래밍을 실제로 수용하려면 코드로 사용하는 것이 거의 합리적이지 않습니다. 영구 나무 (예 : data.map)는 실제로 Haskell에게 올바른 솔루션이며, 좋은 속성이 많습니다. 이것은 Haskell을 데리러 갈 때 배울 수있는 멋진 것들 중 하나입니다.

F#과 OCAML은 구문에서 매우 유사하지만 F#은 .NET에서 더 좋습니다.

배우거나 사용하는 사람은 어떤 플랫폼을 목표로하는지에 따라야합니다.

VS2010에서 F#이 포함될 예정이며 .NET Bytecode로 컴파일되므로 사용한 .NET 버전을 지원하는 Windows OS에서 사용할 수 있습니다. 이것은 당신에게 큰 영역을 줄 것이지만, 현재 OCAML이 가지고 있지 않은 F#가있는 한계가 있습니다. 그리고 이것은 아직 중요하지 않은 기능 일 수 있습니다.

Erlang과 같은 다른 기능적 언어가 있지만, 기본적으로 하나의 FP 언어로 강한 경우 상당히 빨리 다른 것을 선택할 수 있어야합니다. 흥미롭고 도전적인 응용 프로그램을 개발하십시오.

결국 언어 작가는 OO 언어가 멀티 코어와 잘 어울릴 수있는 방법을 찾을 수 있으며 FP는 다시 길가에 떨어질 수 있지만 곧 일어나지 않을 것 같습니다.

이와 직접 관련되지 않는 영업 이익의 질문으로 하는지 여부를 배우 F#지만,오히려,예의 실제 세계의 여러 사용법에서 금융 분야:http://ocaml.janestreet.com/?q=node/61

매우 흥미있는 이야기입니다.

의 측면에서 장수,그것은 매우 어려운 심판의 인기는 언어로,그러나 그냥하고 확인,여기에 이들은 숫자의 질문에 태그가 적절한(기능)언어:-

2672Scala, 1936Haskell, 1674F# 1126Clojure, 709 계획 332OCaml

내가 이것을 말했다의 좋은 표시되는 언어들이 적극적으로 학습하는 순간에 따라서는 것도 좋은 표시의 사람 될 수 있습에서 인기다.

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