Fantom (linguagem de programação) - Fantom (programming language)

Fantom
Fantom-logo.png
Paradigma multiparadigma
Desenvolvedor Brian Frank, Andy Frank
Apareceu pela primeira vez 2005
Versão estável
1.0.75 / 24 de agosto de 2020 ; 9 meses atrás ( 2020-08-24 )
Disciplina de digitação estático , dinâmico
Licença Licença Acadêmica Gratuita versão 3.0
Extensões de nome de arquivo .fan, .fwt, .pod
Local na rede Internet www .fantom .org
Influenciado por
C # , Java , Scala , Ruby , Erlang

Fantom é uma linguagem de programação orientada a objetos de uso geral criada por Brian e Andy Frank que roda no Java Runtime Environment (JRE), JavaScript e .NET Common Language Runtime (CLR) (o suporte .NET é considerado o status de "protótipo") . Seu objetivo principal de design é fornecer uma API de biblioteca padrão que abstraia a questão de saber se o código será executado no JRE ou CLR. Assim como C # e Java , o Fantom usa uma sintaxe de chaves . A linguagem oferece suporte à programação funcional por meio de fechamentos e simultaneidade por meio do modelo Actor . O Fantom adota uma abordagem "intermediária" em seu sistema de tipos, combinando aspectos de digitação estática e dinâmica .

Digitando

O sistema de tipos do Fantom é simples por design. Todas as variáveis ​​são digitadas estaticamente, como estão em C # e Java . Fantom rejeita tipos genéricos , devido à sua complexidade, mas ele tem um conjunto de tipos genéricos incorporados: List, Map, e Func. O Fantom também pode assumir a sensação de uma linguagem digitada dinamicamente por meio de chamadas dinâmicas e downcasting automático . O Fantom tem uma API de reflexão fácil de usar e recursos de metaprogramação .

Fantom é open source sob a Academic Free License 3.0 e está disponível para plataformas Windows e Unix-like (incluindo Mac OS X).

Pods

No Fantom, a unidade de implantação é chamada de pod . Os pods assumem o papel de namespaces , pacotes e módulos . Eles são armazenados como arquivos .pod, que são arquivos zip contendo o FCode (bytecode do Fantom), a documentação e os arquivos de recursos necessários para rodar o pod. Um pod pode definir qualquer número de tipos para uso em outras bibliotecas e aplicativos. Um nome de pod qualifica totalmente um nome de tipo. Por exemplo, fwt::Widgeté diferente de webapp::Widget. Se um pod contém um tipo denominado Main, ele pode ser executado na linha de comando com:fan <podName>

O sistema de construção Fantom pode empacotar um conjunto de vagens em um arquivo JAR através build::JarDist.

Fantom Widget Toolkit

O Fantom vem com um kit de ferramentas de janelas padrão chamado Fantom Widget Toolkit, ou FWT para abreviar. Como o Fantom, o FWT foi projetado para ser portátil em várias plataformas. Atualmente, ele é implementado na JVM usando o Standard Widget Toolkit como backend. A implementação do JavaScript é apoiada pelo elemento canvas e JavaFX , permitindo que os aplicativos FWT sejam executados em um navegador da web. Existem planos para uma implementação CLR usando Windows Forms .

Exemplo de "Hello World"

Aqui está o programa clássico Hello world escrito em Fantom:

// Hello from Fantom!
class HelloWorld
{
  static Void main()
  {
    echo("Hello, World!")
  }
}

Observe que "Void" está em maiúscula. Isso ocorre porque Void é uma classe, não um tipo primitivo no Fantom.

Mudança de nome

O nome original da linguagem de programação Fantom era Fan, em homenagem ao bairro onde os criadores vivem em Richmond, Virginia . Depois que o idioma ganhou alguma popularidade, membros da comunidade levantaram preocupações sobre a possibilidade de pesquisa do nome. Em novembro de 2009, o nome do projeto foi oficialmente alterado de Fan para Fantom.

Outras características

O Fantom possui outros recursos úteis:

  • O Fantom suporta importação de classes e módulos Java com algumas limitações.
  • O número inteiro é de 64 bits. Ao contrário de Java e C #, o Fantom não possui tipos inteiros Long ou Short.
  • Serialização e desserialização de classes de / para strings.
  • O Fantom não suporta tuplas (ou seja, tipos que são produtos cartesianos de outros tipos)

Veja também

Referências

Leitura adicional

links externos