Este artigo não cita fontes confiáveis. (Maio de 2011) |
Forth | |
---|---|
Paradigma | Procedural,Orientado a Pilha,Reflexivo,Concatenativo |
Surgido em | Anos 70 |
Criado por | Charles H. Moore |
Estilo de tipagem | sem tipos |
Principais implementações | GNU Forth, bigforth |
Dialetos | ANS Forth, Colorforth |
Influenciada por | LISP,APL |
Influenciou | Factor, Postscript,RPL,REBOL |
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.