Baixe em PDF Baixe em PDF

Muitas pessoas sofrem e se frustram com as linguagens de programação existentes atualmente. Elas podem preferir controles mais abstratos ou simplesmente não gostam de implementar funções que acreditam que deveriam existir por padrão. Não importa se trabalha com Sistemas de Informação ou simplesmente gosta de mexer em computadores, se quer saber mais sobre como criar sua própria linguagem de programação, veio ao lugar certo.

  1. É impossível criar uma linguagem de programação se você não sabe como usar um computador.
  2. Os compiladores normalmente escrevem utilizando terminologias pouco conhecidas pelos usuários médios de computador. Antes de prosseguir, estude os compiladores e aprenda tudo o que puder sobre eles.
  3. Seu objetivo é resolver um problema de um domínio específico ou criar uma linguagem mais geral?
    • Você vai permitir acesso direto aos ponteiros ou não?
    • Quais são os tipos de dados na sua linguagem?
    • Trata-se de uma linguagem estática ou dinâmica?
    • Qual é o modelo de memória? Você vai utilizar um coletor de lixo ou um gerenciamento manual de memória? Se for a primeira opção, escreva seu próprio coletor de lixo ou adapte um existente.
    • Como sua linguagem vai lidar com a simultaneidade? Vai utilizar um modelo de threads/locks ou algo mais complexo, como Linda ou o modelo de atores, já que os computadores hoje em dia têm vários núcleos?
    • As funções primitivas vão ser embutidas na linguagem ou vão vir de uma biblioteca?
    • Quais são os paradigmas da sua linguagem? Ela é funcional? Orientada a objetos? Baseada em protótipos (como o JavaScript)? Orientada a aspectos? Orientada a modelos? Algo completamente novo e único?
    • Como sua linguagem vai interagir com bibliotecas e linguagens já existentes? Isso é importante se está criando uma linguagem em um domínio específico.
    • Algumas das respostas a essas perguntas vão ser respondidas pelo Passo anterior. Elas também vão ajudá-lo a seguir no próximo Passo.
  4. Por exemplo, "elas podem guiar um robô a seguir uma linha" ou "elas podem criar aplicativos de celular com ela".
    • Tome cuidado: faça o possível para manter sua linguagem na categoria livre de contexto ou similar. Você vai se agradecer no futuro, acredite. Seu compilador de compilador também terá menos trabalho assim.
  5. O que isso significa? No campo interpretado, o usuário vai editar seus programas em editores e os executará diretamente no interpretador. No campo compilado, o usuário editará os programas, os compilará, salvará executáveis resultantes no computador e os executará.
    • Pense também em como o compilador/interpretador vai avisar o usuário de erros de sintaxe e no programa.
  6. Faça com que a ferramenta de análise sintática crie uma árvore sintática abstrata. Em seguida, crie o código de objeto a partir da árvore, utilizando um código de três endereços ou um SSA. Por fim, crie uma tabela de símbolos para definir as funções, as variáveis globais, etc.
    • Dependendo da linguagem, é uma boa ideia criar uma vtable ou tabelas de informação para as classes, ajudando no suporte de RTTI.
    • Crie programas que forcem ao máximo a gramática da sua linguagem para ver se o compilador aceita tudo que está dentro de suas definições e rejeita o que está fora delas.
  7. Escreva também o coletor de lixo e outras funções de runtime necessárias.
    • Por exemplo, se vai escrever um compilador, você precisará de códigos que o sistema operacional pode executar para rodar o código de usuário (por exemplo, alocando todas as variáveis globais).
    • Lembre-se de documentar possíveis integrações com bibliotecas e linguagens existentes, além de explicar como usar as funções de runtime ou a biblioteca padrão.
    Publicidade

Dicas

  • Comece projetando a linguagem, sem escrever nenhum código enquanto não estiver satisfeito. É importante responder todas as perguntas e resolver todos os problemas relacionados ao design da linguagem antes de programar, já que é mais fácil fazer modificações no começo.
  • Defina quais plataformas (sistemas operacionais e bibliotecas) vai usar como compilador/interpretador, afinal, você vai usá-las e manipulá-las.
Publicidade

Avisos

  • Avalie se realmente precisa de uma nova linguagem de programação e o que ela tem para oferecer que outras linguagens existentes não têm (pode ser uma combinação de opções ou uma única opção, tanto faz!).
  • Se não souber o que está fazendo, vai ser bem difícil criar uma linguagem de programação. Esse tipo de projeto exige muita prática.
  • Prepare-se para investir um bom tempo no design da sua linguagem, já que não vai ser possível modificá-la após escrever o compilador dela.
  • Não tente basear os recursos da sua criação em uma combinação de diferentes linguagens. Por exemplo, não diga que sua linguagem será uma mistura da Linguagem X com a Y. Outros já tentaram seguir por esse caminho, sem sucesso. No fundo, todo mundo prefere trabalhar com as linguagens originais do que com outros produtos baseados nelas.
Publicidade

Materiais Necessários

  • Paciência.
  • Conhecimento sobre linguagens de programação e design (uma boa ideia é ler o livro Programming Language Design Concepts , de David A. Watt).
  • Conhecimento sobre a teoria dos compiladores — já que você precisará escrever um compilador/interpretador para sua linguagem, e sua implementação servirá como referência para futuros programadores.
  • Usos para sua linguagem — lembre-se de que as linguagens mais utilizadas hoje em dia foram criadas para fazer algo específico, como criar o Unix ou executar computação simbólica.

Sobre este guia wikiHow

Esta página foi acessada 35 216 vezes.

Este artigo foi útil?

Publicidade