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.
Passos
-
Familiarize-se com a tecnologia. É impossível criar uma linguagem de programação se você não sabe como usar um computador.
-
Conheça as terminologias. 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.
-
Escolha qual problema sua linguagem vai solucionar. Seu objetivo é resolver um problema de um domínio específico ou criar uma linguagem mais geral?
-
Pense na semântica da linguagem e nos conceitos dela.
- 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.
-
Pense no que gostaria que as pessoas conseguissem fazer com sua linguagem. Por exemplo, "elas podem guiar um robô a seguir uma linha" ou "elas podem criar aplicativos de celular com ela".
-
Experimente com ideias de sintaxe (o texto da linguagem) para os exemplos acima.
- 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.
-
Escreva um documento formal para a sintaxe.
-
Defina se a linguagem vai ser interpretada ou compilada. 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á.
-
Escreva o scanner de front end e as ferramentas de análise sintática, ou encontre uma ferramenta pronta que ajude com isso.
- Pense também em como o compilador/interpretador vai avisar o usuário de erros de sintaxe e no programa.
-
Use as informações da análise sintática para escrever um código de objeto ou uma representação intermediária. 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.
-
Escreva o gerador de código que vai servir para compilar e finalizar tudo.
-
Escreva muitos programas para testar a linguagem.
- 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.
-
Pense em como os usuários vão testar os próprios programas em busca de bugs.
-
Caso sua linguagem use uma biblioteca padrão, é bom escrevê-la. 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).
-
Publique sua linguagem junto das especificações dela e exemplos do que pode ser feito nela.
- 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 37 073 vezes.
Publicidade