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
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
- site oficial (inglês)
- Wiki sobre o Factor (inglês)
- Instruções (Inglês)
Evidência individual
- ↑ Factor / Java Factor ( en ) Em: concatenative.org . Recuperado em 23 de maio de 2012.