Forth
Nota: Se procura pelo rio da Escócia, consulte Rio Forth.
Forth | |
---|---|
Paradigma | Orientado a Pilha |
Surgido em | Anos 70 |
Criado por | Charles H. Moore |
Estilo de tipagem: | sem tipos |
Compiladores | GNU Forth, bigforth |
Dialetos: | ANS Forth, Colorforth |
Influenciou | Factor, Postscript |
Forth é uma linguagem de programação procedural baseada em pilhas de dados, com sintaxe em Notação polonesa inversa (RPN) e com os comandos organizados em uma lista extensível chamada de dicionário. Os comandos são chamados de "palavras". A partir do dicionário básico, são criados outros comandos.
Forth foi "descoberta" por Charles H. Moore ("Chuck" Moore) no final dos anos 1960, e serviu de inspiração para linguagens como Transcript, Postscript, Open Firmware, a linguagem de inicialização de placas PCI em sistema Macintosh, e Factor, desenvolvida recentemente por Slava Pestov. Também é usada no bootloader do sistema operacional FreeBSD.
A linguagem é apropriada para sistemas embutidos, e se caracteriza por ser extremamente compacta. Pode ser considerada como linguagem interpretada e compilada ao mesmo tempo. A interpretação/compilação pode ser feita através de bytecode ou código de máquina.
Em geral, Forth pode trabalhar facilmente com qualquer base numérica entre 2 e 36. As palavras podem ser livremente redefinidas. Freqüentemente, é definida como uma mistura de linguagem de baixo nível e de alto nível, ou um assembly de alto nível. Possui as estruturas de controle comuns em linguagens procedurais, como IF-THEN, IF-ELSE-THEN, BEGIN-UNTIL, BEGIN-REPEAT, DO-LOOP, CASE-THEN.
Atualmente (como em outras linguagens daquele tempo), é considerada obsoleta. Mas ainda encontra muitas aplicações em sistemas industriais e Hardwares customizados, devido a robustez e velocidade de processamento. Um exemplo é a variante TL-1 (Toledo Language-1) e RTP, desenvolvida para uma famosa corporação européia e em uso até hoje, principalmente fora da Europa.
Exemplo de programa |
O seguinte programa define uma palavra que gera o dobro do número deixado na pilha:
: dobro dup + :knife
- poder light red & bule
- script play
- the end
- good & bad
A palavra ":" pega o texto "dobro" e monta uma nova entrada no dicionário. O conteúdo dessa nova entrada é a palavra "dup", que duplicará o número do topo da pilha, quando a palavra "dobro" for usada. A palavra "+" retirará os dois números do topo da pilha, os somará e devolverá o resultado para o topo da pilha. A palavra ";" encerra a definição da nova palavra "dobro".
Para usar este programa:
5 dobro
O resultado será o número 10 no topo da pilha.
O seguinte programa imprime o texto "Hello, world!":
: hello ." Hello, World!" ;
A palavra '."' envia ao dispositivo de saída todo o texto até o caracter '"'.
O seguinte programa imprime dez vezes a frase "Hello, world":
: 10hellos 10 0 do hello cr loop ;
Quando a nova palavra "10hellos" for usada, a palavra "do" pegará o número 10 no topo da pilha e definirá como a quantidade de repetições. As palavras até "loop" serão repetidas (no caso, a palavra "hello" anteriormente criada no exemplo). A palavra "cr" emitirá um "retorno de carro e nova linha" ao dispositivo de saída.
O seguinte programa redefine a palavra '+':
: mais + ;
Links relacionados |
- Forth Interest Group
- Forth Inc.
- Chuck Moore