: NOME palavra_1 palavra_2 ... palavra_n ;
A definição inicia com ":" e termina com ";". 'Palavra_1' até 'palavra_n', são palavras previamente definidas pelo programador, ou palavras que compõem o núcleo do Forth. 'NOME' é a palavra, agora literalmente falando, pela qual será referenciado aquele bloco de código. O núcleo Forth é composto de palavras escritas em baixo nível, normalmente em assembly para o processador ou microcontrolador para a qual a linguagem foi escrita. As novas palavras definidas são agrupadas às palavras previamente definidas. Este agrupamento de palavras forma o dicionário Forth.
Uma vez iniciado o Forth em uma máquina (o modo como isto é feito depende da implementação), o sistema apresenta um prompt similar ao DOS. Neste momento, o sistema executa o interpretador de comando, ou interpretador interno. Este interpretador tem a função de interpretar linhas de comando. Esta linhas podem conter uma nova definição, como a apresentada acima, ou então executar uma palavra do dicionário. Isto permite que uma palavra que tenha sido definida seja logo testada, e seu resultado verificado, o que torna o Forth uma linguagem facilmente depurável.
Sempre que algo é digitado no prompt, o interpretador interno analisa o que foi digitado e decide se trata-se de uma nova definição, de uma execução de palavra previamente definida ou de um dado numérico (caso não se enquadre em nenhuma destas situações, o interpretador retorna um "?" ao operador). Novas definições são incluídas no dicionário através de um compilador interno; dados numéricos são colocados na pilha de parâmetros; e palavras previamente definidas são imediatamente executadas.
A pilha de parâmetros é o meio pelo qual o Forth passa parâmetros de uma palavra para outra. É uma LIFO: last-in, first-out, ou seja, o último dado a entrar é o primeiro a sair. O sistema faz uso ainda de outra pilha (de retorno) para o controle de execução e retorno de palavras.
Como os pequenos blocos de código (palavras Forth) se interligam, compondo o chamado dicionário Forth, chama-se a estrutura da linguagem de código alinhavado. Vários tipos de alinhavamento existem: código diretamente alinhavado, indiretamente alinhavado e alinhavado por sub-rotina são os mais comuns. Velocidade de processamento, espaço de memória, arquitetura do processador e tipo de aplicação são fatores que qualificam como mais favorável um ou outro tipo de implementação.
Além de interpretadores Forth, existem compiladores Forth e metacompiladores. Compiladores Forth funcionam praticamente do mesmo modo que compiladores de outras linguagens. Metacompiladores são compiladores executados dentro do ambiente de interpretação do Forth, que extraem do dicionário Forth apenas as palavras necessárias para a execução da aplicação escrita pelo programador. Devido a estas características, à estruturação e arquitetura da linguagem, Forth não é tratada apenas como uma linguagem de programação, mas também como um sistema operacional ou ambiente de programação. Assim, é comum referir-se ao Forth como um sistema de programação.
Forth tem sido aplicado principalmente em sistemas dedicados ou embutidos. Estes sistemas normalmente são compostos de microprocessadores ou microcontroladores, com alta escala de integração, para desempenhar funções de controle ou monitoração em robôs, automóveis, aeronaves, aparelhos domésticos etc. Nestes pequenos sistemas, características como pequeno tamanho, pouco espaço ocupado, pequena potência, alta robustez e baixo custo são determinantes, até mesmo fundamentais. Nestas aplicações, o desenvolvimento de um sistema empregando Forth tem vantagens incomparáveis: menor tempo de desenvolvimento, depuração mais fácil e rápida e interação com hardware, não necessitando usar equipamentos eletrônicos de alto custo. Ou seja, rápido desenvolvimento com baixo custo e alto desempenho.
Como desvantagens, programar em Forth exige um nível razoável de conhecimento da estrutra da linguagem, conhecimento do hardware e da arquitetura da máquina e recursos de programação.
Forth, desde sua criação, incorpora os mais alto conceitos de programação estrutura modernos. Estas desvantagens tornam a linguagem um tanto inacessível, mística e desconhecida. Instituições acadêmicas proliferam linguagens mais populares e acessíveis, divulgando ferramentas para aplicações mais gerais. Apesar desta pequena divulgação, a linguagem Forth é empregada em inúmeros países e em equipamentos altamente complexos.
Um exemplo que ilustra a utilização da notação polonesa reversa para resolver equações algébricas em Forth é mostrado abaixo: Ao receber o promtp do Forth, "ok", digite na sequência:
11 23 + . [Enter]
Os dois números digitados vão para a pilha de parâmetros. Com o operador +, o Forth retira os dois números da pilha e coloca o resultado no topo da mesma. O ponto (.) retira o número presente no topo da pilha e o imprime na tela. Assim, deve ser impresso o número 34.
Um outro exemplo ilustra a definição de uma nova palavra, a qual faz uso de palavras previamente definidas, e a imediata utilização da palavra recém definida. Neste caso, será utilizada a palavra previamente definida EMIT, a qual retira da pilha um número e imprime na tela o ASCII correspondente ao mesmo. Por exemplo, se for digitado 65 EMIT, será impresso na tela a letra A, pois 65 é o equivalente em ASCII para o A. Vamos definir uma nova palavra, chamada de 5ESTRELAS:
: 5ESTRELAS 42 EMIT 42 EMIT 42 EMIT 42 EMIT 42 EMIT ; [Enter]
Se, após esta definição, for digitada
5ESTRELAS [Enter]
5 asteriscos serão impressos na tela, visto que definimos que esta palavra, por 5 vezes, coloca o 42 (equivalente em ASCII para o asterisco) na pilha e chama o EMIT.
É importante frisar que Sistemas Forth normalmente não possuem aritmética de ponto flutuante e empregam apenas símbolos e letras maiúsculas como nomes de palavras.
Divirta-se com o Forth remoto. Ficaríamos gratos se você nos enviasse informações de como foi sua conexão.