Fator

Fator
Paradigmas : multiparadigmático
Ano de publicação: 2003
Designer: Slava Pestov
Desenvolvedor: Slava Pestov
Versão atual  : 0,98   (31 de julho de 2018)
Digitando : dinâmico
Influenciado por: Forth , Lisp , Smalltalk , Joy
Licença : Licença BSD
factorcode.org

Factor é uma linguagem de programação gratuita projetada por Slava Pestov e desenvolvida desde 2003. Ele adota conceitos de Forth , Lisp e Smalltalk-80 . Pretende ser o sucessor prático do Joy e uma implementação está disponível sob uma licença BSD .

Palavras e Pilha

Todas as funções lêem seus argumentos da pilha , gravam seus resultados na pilha e são chamadas de palavras . Um programa é uma sequência de léxicos para objetos colocados na pilha e palavras aplicadas à pilha.

! Kommentar
2 3 + .

Primeiro, 2 e 3 são colocados na pilha. +  tira dois números da pilha e coloca a soma dos dois na pilha. .  pega o objeto de cima da pilha e o imprime. Os comentários começam com  ! e vá para o fim da linha.

: add2 ( n -- n' ) 2 + ;
5 add2

Novas palavras são definidas com :. add2 adiciona 2 ao número do topo da pilha.

As palavras são resumidas em vocabulários . Com USE: é indicado, em que palavras do vocabulário pesquisadas e IN: em que todas as palavras do vocabulário definidas a seguir são armazenadas.

Quaisquer objetos como números, sequências (arrays, vetores, strings, ...) etc. podem ser colocados na pilha. Uma representação lexical é definida para todos os tipos de objetos.

SYMBOL: foo
"Hello" foo set
foo get

Os nomes das variáveis ​​são definidos com SYMBOL :, definido com set e lido com get e armazenado na pilha. A memória para os objetos é automaticamente alocada e liberada novamente pela coleta de lixo .

Programação funcional

As funções anônimas são escritas entre colchetes e são chamadas de citações .

{ 1 2 3 } [ 3 + ] map
10 [ "Hello world" print ] times
4 [ 2 + ] [ 3 * ] bi
10 0 < [ "yes" print ] [ "no" print ] if

map obtém uma matriz e uma cotação da pilha. A cotação é aplicada a cada elemento da matriz e os resultados são retornados a uma matriz na pilha. vezes recebe um número ne uma cotação da pilha. A cotação é então executada n vezes consecutivas. bi tira um objeto e duas citações da pilha. Ambas as cotações são aplicadas ao objeto e os dois resultados são colocados na pilha. if leva um valor verdadeiro e duas aspas da pilha. Se o valor for verdadeiro , a primeira cotação é realizada, caso contrário, a segunda cotação.

Orientação do objeto

Quando se trata de orientação a objetos, Factor adota conceitos do Common Lisp Object System . Classes e métodos são definidos independentemente uns dos outros.

TUPLE: rectangle width height ;
: <rectangle> ( width height -- rectangle ) rectangle boa ;

GENERIC: area ( object -- x )
M: rectangle area [ width>> ] [ height>> ] bi * ;

10 20 <rectangle> area

Para o encapsulamento de dados , uma classe de tupla com o nome retângulo e a largura e altura dos dois slots é definida. A seguinte palavra de construção <retângulo> lê dois números da pilha e ocupa os dois slots com eles. O método de área definido para retângulo pega um objeto retângulo da pilha e calcula a área. Se houver um objeto de tupla na pilha, os dados podem ser lidos com slot >> e os dados podem ser gravados no slot do objeto com >> slot .

Biblioteca

Uma biblioteca abrangente de funções predefinidas está incluída no Factor . Existe uma interface para bibliotecas C para extensões.

Ouvinte

Image
Fator Listener 0,92

O ouvinte é o ambiente de desenvolvimento interativo da Factor. Tudo o que você digita é lido, compilado e, se necessário, executado imediatamente. Com control-h você obtém ajuda abrangente e com control-w você pode percorrer cada linha em um processo de uma única etapa. Todas as definições atualmente na memória e o código compilado são salvos em um arquivo de imagem com o salvamento .

implementação

A VM do Factor é escrita em C ++ . A maior parte do Factor, como o analisador e o compilador, é escrito no próprio Factor. Existem implementações para FreeBSD , Linux , macOS e Windows , bem como os processadores x86 , x86-64 e PowerPC . No início do projeto, a VM foi escrita em Java . Isso foi inicialmente substituído por uma implementação em C devido à sua inferioridade técnica .

Auto-hospedagem

Como o próprio Factor é escrito principalmente em Factor, o sistema básico deve primeiro ser criado com uma imagem de inicialização. Uma imagem de inicialização adequada pode ser encontrada na página inicial do Factor.

$ factor -i=boot.<cpu>.image

O fator.image criado depende do sistema e contém o sistema básico do Factor, que é carregado a cada inicialização.

Links da web

Evidência individual

  1. Factor / Java Factor ( en ) Em: concatenative.org . Recuperado em 23 de maio de 2012.