ti-enxame.com

Quais são as maiores diferenças entre F # e Scala?

F # e Scala são ambos os idiomas funcionais de programação que não forçam o desenvolvedor a usar apenas tipos de dados imutáveis. Ambos têm suporte para objetos, podem usar bibliotecas escritas em outras linguagens e executadas em uma máquina virtual Ambos os idiomas parecem basear-se no ML.

Quais são as maiores diferenças entre F # e Scala apesar do F # ser projetado para .NET e Scala para o Java = plataforma?

59
Jonas

Principais diferenças:

  • Ambos Scala e F # combinam programação imperativa de OO e programação funcional em uma linguagem. Porém, sua abordagem para a unificação de paradigmas é muito diferente. Scala tenta Funde os dois paradigmas em um (chamamos de paradigma funcional do objeto), enquanto F # fornece os dois paradigmas lado a lado.Por exemplo, tipos de dados algébricos em F # são construções puramente funcionais sem OO'ness nelas, enquanto os ADTs em Scala ainda são classes e objetos regulares. (Observação: no processo de compilação para o bytecode do CLR, até mesmo os FT ADTs se tornam classes e objetos)). mas eles não são visíveis para o programador F # no nível da fonte.)

  • O F # possui inferência completa do tipo Hindley-Milner. Scala possui inferência parcial de tipo. O suporte para subtipagem e OO-pura) torna impossível a inferência de tipo de estilo Hindley-Milner para o Scala.

  • Scala é uma linguagem muito mais minimalista que o F #. Scala possui um conjunto ortogonal muito pequeno de construções que são reutilizadas em todo o idioma. O F # parece introduzir uma nova sintaxe para cada pequena coisa, tornando-se muito pesado quanto à sintaxe em comparação com o Scala. (Scala tem 40 palavras-chave, enquanto F # tem 97. Isso deve lhe dizer uma coisa. :-)

  • F # sendo uma linguagem da Microsoft tem um excelente suporte IDE na forma do Visual Studio. As coisas não são tão boas no lado Scala. O lado do Scala $ ===. O plugin Eclipse ainda não é O mesmo vale para o plug-in NetBeans. IDEA parece ser a sua melhor aposta no momento, apesar de nem sequer chegar perto do que você recebe Java IDEs. (Para os fãs do Emacs, existe o ENSIME. Ouvi muitas coisas boas sobre este pacote, mas ainda não o testei.)

  • O Scala possui um sistema do tipo muito mais poderoso (e complexo) que o F #.


Outras diferenças:

  • As funções F # são exibidas por padrão. Em Scala, o curry está disponível, mas não é usado com muita frequência.

  • A sintaxe do Scala é uma mistura da Java, Standard ML, Haskell, Erlang e muitas outras linguagens. A sintaxe do F # é inspirada nos de OCaml, C # e Haskell.

  • O Scala suporta tipos e classes superiores. F # não.

  • Scala é muito mais acessível a DSLs que F #.


PS: Eu amo ambos Scala e F #, e espero que eles se tornem idiomas predominantes de suas respectivas plataformas no futuro. :-)

61
missingfaktor
  • O F # se baseia em aspectos funcionais, enquanto scala se baseia em aspectos orientados a objetos.
  • O F # tem um suporte IDE melhor com o Visual studio while O plug-in Eclipse do Scala é para código aberto IDE e comparativamente mais lento.
  • O F #, sendo mais parecido com o ML do que o Scala, tem uma sensação lambda mínima de cálculo da mesma forma que OCaml, Standard ML e Scheme. F # parece ser uma linguagem consideravelmente mais simples.
9
Ayush Goyal

Um ponto pequeno, porém importante, é a licença: Scala é BSD (praticamente a licença de software livre mais permissiva que existe), o F # costumava ser "contrato de licença de fonte compartilhada de pesquisa da Microsoft", mas é um comercial hoje em dia (de acordo com @Lorenzo abaixo, embora eu não tenha encontrado contratos de licença mais específicos em nenhum lugar).

0
Joonas Pulakka