Quarto: Uma Linguagem de Programação Estranha. Aqui está o motivo pelo qual você pode adorar.

Divulgação: Seu suporte ajuda a manter o site funcionando! Ganhamos uma taxa de indicação por alguns dos serviços que recomendamos nesta página.


Quarto é uma linguagem incomum. É principalmente um intérprete e possui uma interface de linha de comando para que possa ser usada em tempo real. Mas também tem a capacidade de pegar conjuntos de códigos e compilá-los. Então é uma espécie de híbrido.

Por esse motivo, o Forth é comumente usado em hardware que não possui um sistema operacional tradicional. Também é amplamente utilizado para controlar máquinas e tem sido usado na exploração espacial – mesmo em Philae, a sonda que aterrissou no cometa 67P / Churyumov – Gerasimenko.

História

A Forth foi desenvolvida por Charles Moore a partir de 1968, enquanto fazia programação gráfica na Mohasco Industries. Mas a primeira implementação completa do Forth não ocorreu até 1971, quando Moore criou um sistema independente para controlar o telescópio de 11 metros no Observatório Nacional de Radioastronomia dos EUA (NRAO).

As versões anteriores do Forth haviam chamado a atenção da comunidade de programação. Mas, neste ponto, tornou-se muito popular na comunidade de astronomia. Então, em 1973, Moore fundou a FORTH, Inc com seus colegas da NRAO, Elizabeth Rather e Edward Conklin.

A empresa transportou o programa para muitos sistemas diferentes. E a FORTH, Inc continua a ser uma empresa importante, fornecendo produtos relacionados à Forth para pessoas de negócios, academia e governo.

Visão Geral da Forth

Existem vários aspectos únicos na linguagem de programação Forth. Vamos discutir os mais importantes aqui.

Quartos recursos

A seguir oferece muitos recursos exclusivos:

  • Programação interativa

  • Criação de extensões compiladas do idioma chamadas “palavras”

  • Pilhas e notação polonesa reversa

  • Conexão direta entre usuário e hardware.

Notação polonesa reversa

Em seguida, faz cálculos matemáticos usando a notação polonesa reversa. Isso depende do armazenamento de números em uma pilha.

Considere o cálculo: 2 + 3. Em quarto lugar, isso seria feito colocando o 2 na pilha, colocando 3 na pilha e adicionando-os. Isso seria algo parecido com isto: 2 3 +.

Parece um pouco estranho, mas é mais fácil para o computador analisar, porque é dessa maneira que os computadores realmente fazem cálculos. E uma vez que você se acostuma como codificador, torna-se bastante natural.

Além disso, não há necessidade de parênteses. Considere os dois exemplos a seguir. (Nota: o caractere de barra invertida inicia um comentário.)

2 3 + 5 * É o mesmo que (2 + 3) * 5
2 3 5 * + É o mesmo que 2 + 3 * 5

No primeiro exemplo, 2 é pressionado na pilha, seguido por 3. Portanto, 2 é o segundo na pilha e 3 é o primeiro. O operador “+” é aplicado aos dois primeiros elementos da pilha. Isso remove esses dois itens da pilha e deixa 5 (2 + 3) em cima da pilha.

Então nós empurramos 5 para a pilha. Isso coloca um 5 na primeira e na segunda posições da pilha. Por fim, aplicamos o operador “*”, que resulta em 25 (5 * 5) sendo colocados no topo da pilha.

No segundo exemplo, colocamos 2, 3 e 5 na pilha, de modo que 5 esteja na primeira posição, 3 na segunda e 2 na terceira. Em seguida, aplicamos o operador “*” nos dois principais elementos da pilha (5 * 3), resultando em 15 sendo colocados no topo da pilha.

Neste ponto, 15 está na primeira posição e 2 está na segunda posição. Quando o operador + é aplicado, ele deixa 17 (15 + 2) no topo da pilha.

Programa de exemplo

O programa a seguir é muito simples, mas demonstra muito do que acontece no idioma.

: OUTMATH Produz um cálculo matemático
." Vamos agora calcular: (2 + 3) * 5" CR
2 3 + 5 *
." Isso é igual a: " . CR;

OUTMATH

A primeira coisa que este programa faz é definir uma função denominada OUTMATH. As linhas a seguir fazem parte da função até a linha que termina com ponto e vírgula. A primeira linha imprime o texto “Agora calcularemos: (2 + 3) * 5” e o segue com um retorno de carro.

A próxima linha executa o cálculo discutido acima, resultando em 25 sendo colocados no topo da pilha. A última linha da função gera “Isso é igual a:” seguido pelo valor no topo da pilha (representado por “.”) E um retorno de carro.

Então simplesmente executamos a função. Então, quando o programa é executado, ele gera:

Vamos agora calcular: (2 + 3) * 5
Isso é igual a: 25

Aprendendo adiante

Para a maioria dos programadores, essa é uma nova maneira de pensar. Mas é surpreendente o quão natural parece quando você começa a trabalhar com ele. Aqui estão alguns tutoriais e livros que farão você trabalhar com o idioma.

Quartos tutoriais

Existem muitos tutoriais online. Como o Forth é estranho para programadores que não são do Forth ao mesmo tempo em que é evidente para os usuários atuais, muitos dos tutoriais abordam coisas que podem ser confusas para iniciantes. Esses tutoriais não têm esse problema.

  • Fácil: este pequeno Ebook é uma excelente introdução. A única desvantagem é que não é grande em exemplos. Então confira alguns dos exemplos abaixo.

  • Um guia para iniciantes: esta é outra boa introdução. É um pouco mais técnico, mas tem mais exemplos.

  • And So Forth…: esta é uma introdução muito completa a Forth – quase tão boa quanto um livro.

Livros adiante

Muitas vezes, é mais fácil aprender um novo idioma, obtendo um livro que pode levá-lo passo a passo no processo. Existem muitos bons livros sobre Forth – especialmente desde os anos 80, quando Forth realmente decolou. Aqui está uma coleção dos melhores e mais importantes.

  • Discover Forth: Learning and Programming the Forth Language (1982) por Thom Hogan: esta é uma introdução boa e concisa ao idioma Forth.

  • Começando em frente: uma introdução ao quarto idioma e sistema operacional para iniciantes e profissionais (1982) de Leo Brodie: essa é uma maneira clássica e ótima de aprender. Está esgotado, mas as cópias usadas não são difíceis de encontrar por pouco dinheiro. Também está online gratuitamente. Os programadores do Advanced Forth podem querer conferir o mais recente, o Thinking Forth de Brodie.

  • Forth Lite Tutorial (2014) de Juergen Pintaske: este é um tutorial baseado em Kindle que se concentra em exemplos.

  • Programando uma linguagem orientada a problemas: adiante – como funcionam os internos (2014) de Charles Moore: esta é uma versão para Kindle do livro que o criador de Forth escreveu há muito tempo. Ele ainda fornece informações detalhadas sobre o idioma, mas não é a melhor opção para começar..

  • Forth Programmer’s Handbook (2007), de Elizabeth Rather e Edward Conklin: este é um livro mais avançado sobre a Forth pelos outros dois pioneiros da Forth. Veja também o livro de Rather, Forth Application Techniques (2006).

Outros recursos

  • Quarto Grupo de Interesse: este site possui todos os tipos de informações interessantes, incluindo documentos históricos antigos. Infelizmente, também possui muitos links quebrados. Mas ainda vale a pena conferir.

  • Links para os próximos programas: esta é uma ótima coleção de exemplos de programas reais, como uma planilha e um solucionador de quebra-cabeças Sudoku.

  • Quarto Grupo do Google: este é um grupo muito ativo de quarto usuários que fazem e respondem perguntas.

  • Quarto Subreddit: este não é um fórum muito ativo, mas ainda há pessoas com conhecimento nele.

Implementações

Houve muitas implementações da Forth ao longo dos anos. O Forth Interest Group tem uma longa página do Forth Compilers. Portanto, se você tiver uma configuração PDP-11 em sua garagem, poderá obter um compilador Forth! Mas para sistemas mais modernos, aqui estão as opções mais comuns.

bigFORTH

Em meados da década de 1980, Dietrich Weineck, Georg Rehfeld e Klaus Schleisiek desenvolveram o volksFORTH para máquinas de 16 bits como o 8086 IBM PC e o 6502 Apple, Commodore e Atari..

Eventualmente, eles criaram uma versão de 32 bits para o Atari ST (barramento de 16 bits) baseado em 68000. Embora o volksFORTH estivesse progredindo, o projeto praticamente morreu (embora tenha sido reiniciado mais tarde).

Bernd Paysan estava suficientemente interessado nesta versão do volksFORTH (chamada turboFORTH até então), no entanto, que ele a tornou a base do bigFORTH.

Sua primeira versão foi lançada para o Atari ST em 1990. Em 1995, o bigFORTH havia sido portado para o 386 e, no ano seguinte, estava disponível no Windows NT, OS / 2 e Linux.

Interface Gráfica

Nesse ponto, Paysan começou a trabalhar no MINOS. (Tecnicamente, é “MINOS”, mas normalmente é chamado simplesmente “MINOS”.)

É uma interface gráfica para o bigFORTH. Pode ser mais fácil pensar nisso como “Visual bigFORTH” como o Visual Basic, porque é mais ou menos o que é. Foi criado pela primeira vez para o sistema X-Windows. Mas logo estava disponível para Windows também.

O desenvolvimento no bigFORTH e no MINOS parece ter parado por volta de 2010. No entanto, eles são facilmente disponíveis e bastante úteis (o bigFORTH é compatível com ANSI). De fato, o MINOS é muito divertido de jogar.

Recursos bigFORTH

Se você deseja usar o bigFORTH ou até mesmo desenvolver para ele, terá todas as ferramentas necessárias:

  • Código-fonte: este é o código do último lançamento oficial em 22 de março de 2010, versão 2.4..

  • Pacote Debian: um pacote facilmente instalado para qualquer distribuição Linux baseada no Debian (por exemplo, Ubuntu, Mint). Ele instala em / usr / local / bin e inclui MINOS, embora seja chamado xbigforth.

  • Executável de instalação automática do Windows: o mesmo que o pacote Debian, mas para o Windows. MINOS é mesmo chamado xbigforth.exe.

  • Documentação (PDF): este livro de quase 300 páginas funciona como um tutorial e uma referência, escritos por JL Bezemer. Muito disso está no Forth genérico e é o que “And So Forth…” é retirado de.

  • Página inicial de Bernd Paysan: esta página tem muitas informações e exemplos interessantes relacionados à Forth. É importante destacar a linguagem de marcação baseada em Fays de Paysan.

  • Repositório bigFORTH: o destino final para todas as suas necessidades bigFORTH.

Gforth

Gforth é a implementação GNU do Forth. Tem um pedigree distinto.

O projeto Gforth foi iniciado em 1992 pelo criador do bigFORTH, Bernd Paysan e Anton Ertl, com contribuições substanciais de Jens Wilke.

Era uma combinação de bigFORTH e a muito mais antiga fig-FORTH (veja abaixo). Mas a história é distorcida, já que o bigFORTH veio do volksFORTH, que foi baseado na fig-FORTH.

Sendo um projeto GNU, muito trabalho foi feito desde o início. Agora é totalmente compatível com ANSI e alcançou todos os seus objetivos originais. A versão mais recente é 0.7.3, com a última entrada (por Paysan) em 25 de fevereiro de 2013.

Em termos de implementações gratuitas do Forth, o Gforth é o mais usado. Parte disso é apenas porque faz parte do projeto GNU e de sua disponibilidade. Mas é também porque é poderoso e rápido.

Recursos Gforth

O Gforth possui todos os recursos necessários para utilizá-lo de qualquer maneira:

  • Código-fonte: esta página fornece o código-fonte Gforth da versão 0.2.1 até a atual, 0.7.3.

  • Pacotes Debian: existem vários pacotes disponíveis para a distribuição Debian Linux. Observe que, dependendo do pacote escolhido, pode ser necessário instalar um ou mais outros pacotes primeiro.

  • Executável de instalação automática do Windows: esta é uma versão anterior (0.7.0) do Gforth, mas é um modo rápido de começar.

  • Documentação (PDF): este livro de 250 páginas se aplica à versão 0.7.0 de Gforth. Também está disponível no formato HTML.

  • Repositório Gforth: praticamente tudo relacionado a Gforth pode ser encontrado aqui.

pbForth

O pbForth não parece mais ser suportado, mas é uma implementação tão interessante do Forth que vale a pena conferir.

Como discutimos, a Forth sempre foi associada ao controle de hardware. Portanto, não surpreende que tenha sido criada uma implementação Forth para o kit de robótica LEGO MINDSTORMS – especificamente, o RCX de 16 bits lançado em 1998.

Parece que nunca foi atualizado para funcionar com a segunda geração, a série NXT, lançada em 2006, nem o atual MV3, lançado em 2013.

Embora não exista um site oficial para o pbForth, ainda é possível aprender e até usá-lo. No entanto, pode haver uma curva de aprendizado acentuada, porque não há muita informação. E claramente, você precisaria de um LEGO MINDSTORMS RCX (eles não são tão difíceis de encontrar usados).

O NXT usa um processador completamente diferente (e de 32 bits), portanto o pbForth certamente não funcionaria com ele. Ainda assim, pode ser divertido. E se você estiver disposto, poderá transportá-lo para kits de segunda e terceira geração.

Recursos pbForth

Quais informações estão disponíveis na Internet normal geralmente são concisas e sempre estão vinculadas à Página inicial do pbForth, que não está em operação desde pelo menos 2010. Somente graças ao Arquivo da Internet, grande parte delas está disponível.

  • História da LEGO Robotics: embora não seja sobre o pbForth, ele fornece uma visão geral rápida dos produtos LEGO MINDSTORMS.

  • Introdução ao pbForth
    (PDF): este tutorial de 30 páginas permitirá que você inicie o idioma.

  • Código Fonte phForth
    : observe que o pbForth está escrito em linguagem assembly e Tcl, portanto, você precisará ter essas ferramentas disponíveis.

  • GUI do Windows
    : esse arquivo é executado, embora fazer com que ele faça qualquer coisa possa ser mais complicado. Se você quiser o pbForth para Linux ou Mac, precisará usar o código fonte.

  • Página Inicial do phForth Cerca de 2009
    : esta página fornece links para informações bastante interessantes sobre o pbForth, mais notavelmente meia dúzia de scripts de amostra.

Outras implementações

  • fig-FORTH: essa foi uma das primeiras implementações da quarta, criada pelo Forth Interest Group. É uma implementação de 16 bits. Está disponível para alguns computadores antigos maravilhosos, como o Data General Eclipse e o Alpha Micro, além de computadores baseados em 8086 e 6502. O problema é que não há arquivos executáveis ​​- apenas código da linguagem assembly. E, na maioria dos casos, apenas arquivos PDF de bitmap do código. O código real parece disponível apenas para 8088/8086, PDP-11 e 6800. (O 6800 é um processador de 8 bits, portanto, aparentemente, havia uma versão de 8 bits do fig-FORTH.)

  • SP-Forth: esta é uma implementação Forth gratuita para Windows e Linux.

  • 4tH: é uma implementação Forth fácil de usar que está disponível para uma grande variedade de hardware (incluindo o Raspberry Pi) e inclui boa documentação.

  • SwiftForth ™: este é o compilador Forth da empresa original que trouxe o Forth ao mundo. É um produto comercial, mas tem preços razoáveis.

Sumário

A quarta é uma linguagem de programação fascinante e incrivelmente útil. Isso é especialmente verdade se você deseja controlar o hardware. Usando os recursos aqui, você deve estar a caminho.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map