태그 보관물: comparison

comparison

F #과 Scala의 가장 큰 차이점은 무엇입니까? 강요하지 않는 기능

F #과 Scala는 개발자가 불변 데이터 유형 만 사용하도록 강요하지 않는 기능 프로그래밍 언어입니다. 둘 다 객체를 지원하고 다른 언어로 작성된 라이브러리를 사용하며 가상 머신에서 실행할 수 있습니다. 두 언어 모두 ML을 기반으로하는 것 같습니다.

F #이 .NET 용으로 설계되었고 Java 플랫폼 용 Scala로 설계 되었음에도 불구하고 F #과 Scala의 가장 큰 차이점은 무엇입니까?



답변

주요 차이점 :

  • 스칼라와 F #은 OO- 제한 프로그래밍과 기능 프로그래밍을 하나의 언어로 결합합니다. 패러다임의 통일에 대한 그들의 접근 방식은 크게 다릅니다. 스칼라는 두 패러다임을 하나로 통합 하려고 시도하지만 ( 물리적 기능 패러다임이라고 함) F #은 두 패러다임을 나란히 제공합니다. 예를 들어, F #의 대수 데이터 형식은 순전히 기능이없는 구조이며, 스칼라의 ADT는 여전히 일반 클래스 및 개체입니다. (참고 : CLR 바이트 코드로 컴파일하는 과정에서 F # ADT조차 클래스와 객체가되지만 소스 레벨에서는 F # 프로그래머에게 보이지 않습니다.)

  • F #에는 전체 Hindley-Milner 스타일 형식 유추가 있습니다. 스칼라는 부분적인 유형 유추가 있습니다. 서브 타이핑 및 순수 OO-ness를 지원하므로 Hindley-Milner 스타일 유형 유추가 Scala에 불가능합니다.

  • 스칼라는 F #보다 훨씬 최소한의 언어입니다. 스칼라는 언어 전체에서 재사용되는 매우 작은 직교 구조를 가지고 있습니다. F #은 모든 작은 일에 새로운 구문을 도입하는 것으로 보이므로 스칼라에 비해 구문이 매우 무겁습니다. (Scala에는 40 개의 키워드가 있고 F #에는 97 개의 키워드가 있습니다.

  • Microsoft 언어 인 F #은 Visual Studio 형식으로 뛰어난 IDE 지원을 제공합니다. 스칼라 쪽에서는 상황이 좋지 않습니다. Eclipse 플러그인은 여전히 ​​표시에 미치지 않습니다. NetBeans 플러그인도 마찬가지입니다. IDEA는 현재 가장 좋은 방법으로 보이지만 Java IDE로 얻는 것에 가깝지는 않습니다. (Emacs 팬에게는 ENSIME이 있습니다.이 패키지에 대해 많은 좋은 소식을 들었지만 아직 시도하지는 않았습니다.)

  • 스칼라는 F #보다 훨씬 강력하고 복잡한 유형 시스템을 가지고 있습니다.


다른 차이점 :

  • F # 기능은 기본적으로 커리입니다. 스칼라에서는 커리가 가능하지만 자주 사용되지는 않습니다.

  • 스칼라의 구문은 Java, Standard ML, Haskell, Erlang 및 기타 여러 언어의 구문입니다. F # 구문은 OCaml, C # 및 Haskell의 구문에서 영감을 얻었습니다.

  • 스칼라는 더 높은 종류와 타입 클래스를 지원합니다. F #은 그렇지 않습니다.

  • 스칼라는 F #보다 DSL에 훨씬 더 적합합니다.


추신 : 나는 스칼라와 F #을 모두 좋아하며 앞으로 각 플랫폼의 주요 언어가되기를 바랍니다. 🙂


답변

  • F #은 기능적 측면에서 정해지고, scala는 객체 지향적 측면을 기반으로합니다.
  • F #은 Visual Studio에서 더 나은 IDE 지원을 제공 하지만 Scala의 이클립스 플러그인은 오픈 소스 IDE 용이며 비교적 느립니다.
  • Scala보다 ML과 유사한 F #은 OCaml, Standard ML 및 Scheme과 같은 람다 미적분의 느낌을 최소화합니다. F #은 상당히 간단한 언어 인 것 같습니다.

답변

작지만 중요한 점은 라이센스입니다. Scala는 BSD (거의 가장 관대 한 자유 소프트웨어 라이센스)입니다. F #은 “Microsoft Research Shared Source 라이센스 계약”이었지만 현재는 상용 제품입니다 (아래 @Lorenzo에 따라, 더 구체적인 라이센스 계약을 찾을 수는 없지만).


답변