Digamos, eu queria criar minha própria linguagem de programação. Supondo que eu tomei todas as decisões sobre como eu quero que pareçam e ajam, eu só preciso escrever um compilador para isso?
Não. Tomar todas as decisões sobre como você deseja que a linguagem pareça e aja é criar sua própria linguagem de programação. Você não precisa de um compilador ou intérprete para criar uma linguagem de programação. Você não precisa de um compilador ou intérprete para escrever programas em sua linguagem de programação.
Você só precisa de um compilador ou intérprete se realmente deseja executar os programas que escreve.
Minha pergunta é: a criação de uma linguagem de programação é feita através de um compilador? Alto nível é bom.
Não. A criação de uma linguagem de programação é feita através da criação de dois conjuntos de regras:
- como é um programa jurídico (sintaxe)
- o que um programa jurídico faz (semântica)
É isso aí.
Existem linguagens de programação que não têm implementação. Ou que não teve implementação por um longo tempo.
Por exemplo, Konrad Zuse criou o Plankalkül em meados da década de 1940, mas devido à guerra, ele nunca foi capaz de implementá-lo. Foi implementado pela primeira vez como parte de uma dissertação em 1975. Mas certamente existia nas décadas de 1950 e 1960.
O LISP foi originalmente projetado como uma alternativa mais tratável ao cálculo λ para o estudo da computação. Foi implementado por Steve Russell, um estudante de John McCarthy. O próprio McCarthy até duvidava que o LISP pudesse ser implementado!
O APL foi originalmente projetado como uma notação para o ensino de matemática. Mais tarde, foi estendido para servir como a linguagem de especificação do IBM System / 360. As implementações vieram mais tarde, depois que o idioma já havia sido usado.
PLANNER era uma linguagem muito influente, que na verdade só foi implementada depois de já ter influenciado outras línguas; foi projetado em 1969 e implementado em 1973, quando já havia influenciado Smalltalk e Prolog (ambos em 1972).
Estrutura e Interpretação da Mecânica Clássica é um livro de física que usa Esquema em vez de matemática para descrever sistemas dinâmicos; o fato de o Scheme ter intérpretes e compiladores não é essencial para o livro, ele é usado como uma linguagem para transmitir pensamentos, não para executar programas.
Como você pode ver, as linguagens de programação podem ser úteis mesmo sem implementações. "Os programas devem ser escritos para os humanos lerem, e apenas para os computadores executarem", é uma citação famosa de Estrutura e interpretação de programas de computador. Linguagens de programação são linguagens formais para descrever inequivocamente processos complexos. O fato de que se você descrever um processo com precisão suficiente para um ser humano entender, também será executável por uma máquina é um efeito colateral. É um efeito colateral muito desejável, útil, poderoso, mas é um efeito colateral.
As primeiras "linguagens de programação", λ-cálculo, SKI-cálculo, Turing Machines, funções μ-recursivas, não foram criadas para execução. Eles foram criados para entender questões fundamentais da lógica e da matemática.