• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

David Pintassilgo

Construção de novas linguagens de programação.

13 mensagens neste tópico

Boas, tenho andado a pensar no assunto e nunca li muitas opiniões sobre o assunto nem nada de uma forma geral sobre o tema.

Como se cria uma linguagem de programação? Por exemplo,.. os gajos do KPL,.. lembraram-se e tal... "vamos fazer uma linguagem com uma sintaxe nova" Como se constroi uma linguagem de programação?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se houver prai mais documentação mas em PT 'apitem'! ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Lê o "livro do dragão", embora haja melhores creio que ainda continua a ser a referência.

Para coisas "simples", como uma linguagem procedimental como Pascal ou C, "basta" perceberes de compiladores, se souberes mexer em Lex e Yacc é suficiente para fazeres uma linguagem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a parte mais importante é definir a sintaxe e a semântica da linguagem (habitualmente através de uma gramática com acções semânticas).

depois podes usar um gerador de parsers (o yacc/bison deve ser dos mais usados) para criar um compilador ou interpretador (se bem que acho que deve ser mais fácil um compilador).

um texto em português sobre especificação e processamento de linguagens (não necessariamente de programação): http://www.di.uminho.pt/~jas/Teaching/LectureNotes/esp_proc_ling.ps.gz

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isto normalmente faz alguma confusão ao pessoal, convem explicar alguns conceitos básicos:

Uma linguagem de programação é escrita noutra linguagem de programação de mais baixo nivel, normalmente o objectivo é simplificar o processo de programação.

Por exemplo: o PHP foi escrito em C.

O C tanto quanto sei terá sido escrito praí em assembly.

O assembly foi escrito em linguagem máquina ( números ) .

A linguagem máquina não foi escrita, foi implementada no hardware.

Para explicar isto bem era preciso escrever muito mais. Qualquer duvida existencial que tenhas afixa aí.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hunn ;) então se eu bem estou a perceber para criar uma linguagem de programação "é só" pegar numa outra qualquer que já exista e criar software para reconhecer novos comandos/nova forma de os aplicar, e mete-los a trabalhar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma linguagem de programação é escrita noutra linguagem de programação de mais baixo nivel, normalmente o objectivo é simplificar o processo de programação.

as linguagens (de programação ou não) não são escritas noutra linguagem de programação, são especificadas (normalmente através de formalismos matemáticos com gramáticas ou expressões regular, para linguagens simples)!

o que é escrito em linguagem de programação é o compilador/interpretador, e nem sempre é escrito noutra linguagem, penso que o gcc é escrito em C e o GHC tem partes em C e outras em Haskell.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, formalmente é isso que acontece, ou que devia acontecer, já que algumas linguagens não sao bem planeadas como é o caso do javascript.

Na pratica o aparecimento de uma linguagem coincide com o aparecimento do seu primeiro compilador e na grande maioria dos casos único. A linguagem em si não é escrita, pois está claro, mas o primeiro compilador para essa linguagem tem que ser escrito numa linguagem que exista, a qual nao pode ser a linguagem em questao pois esta ainda nao existe. Nesse momento foi criada uma linguagem, melhor ou pior documentada, com ou sem falhas ou ambiguidades na sua especificação.

Das linguagens que uso, C e C++ são as únicas que podem ser compiladas por mais do que um compilador. Todas as outras foram criadas para um compilador/processador/interpretador/whatever especifico. A saber:

php

python

java

matlab

ok... tambem uso um pouco de javascript

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Das linguagens que uso, C e C++ são as únicas que podem ser compiladas por mais do que um compilador. Todas as outras foram criadas para um compilador/processador/interpretador/whatever especifico. A saber:

php

python

java

matlab

ok... tambem uso um pouco de javascript

Não percebi... existem vários interpretadores para Python, com backends diferentes. Alguns compilam para Python bytecode (CPython), Java bytecode (Jython), CIL (IronPython) e ainda conheço o PyPy... não confundas a especificação da linguagem com a implementação... quem cria o compilador/interpretador costuma ser a mesma entidade que cria a especificação da linguagem mas não significa que isso aconteça em todos os casos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Das linguagens que uso, C e C++ são as únicas que podem ser compiladas por mais do que um compilador. Todas as outras foram criadas para um compilador/processador/interpretador/whatever especifico. A saber:

php

python

java

matlab

ok... tambem uso um pouco de javascript

Não percebi... existem vários interpretadores para Python, com backends diferentes. Alguns compilam para Python bytecode (CPython), Java bytecode (Jython), CIL (IronPython) e ainda conheço o PyPy... não confundas a especificação da linguagem com a implementação... quem cria o compilador/interpretador costuma ser a mesma entidade que cria a especificação da linguagem mas não significa que isso aconteça em todos os casos.

Confesso que nao sabia que existia mais do que uma implementação do python, aparentemente existem umas poucas:

http://www.python.org/dev/implementations.html

De qualquer das formas o python foi criado aquando da sua primeira implementação o que só vai precisamente ao encontro do que eu tentei explicar.

Eu nao estou a confundir a especificação com a implementação muito menos disse que isso acontece em todos os casos.

Regra geral é criado um compilador/interpretador/processador/whatever que usa uma determinada linguagem que nao existia. Para mim é esse o momento da criação. Muitas linguagens nem chegam a ser documentadas ou especificadas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Muitas linguagens nem chegam a ser documentadas ou especificadas.

mesmo que não seja disponibilizada uma especificação, não quer dizer que ela não exista.

duvido que alguém se meta a criar uma linguagem de programação se recorrer a uma gramática antes. é que criar um processador a partir da gramática é fácil, sem ela, só se a linguagem for simples (também já criei um interpretador de lambda-calculus sem recorrer a gramáticas, mas tinha a especificação da linguagem numa gramática).

isso de começarmos logo a programar quando nos dão um problema para resolver é coisa de quem (ainda) não sabe programar, não me parece que seja o caso das pessoas que desenvolvem linguagens de programação (que funcionem).

é claro que isto é uma questão de pontos de visto, pois o meu conceito de linguagem é o conceito matemático. outros terão outras definições para linguagens...

quanto ao número de compiladores, penso que o gcc também compila Java, o Prolog tem vários interpretadores, o Haskell tem vários interpretadores e certamente várias outras linguagens têm mais do que um interpretador/compilador.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora