Como criar linguagem de programação do zero.

Continua após a publicidade

Fpiqui

New Member
Registrado
Primeiramente quero dizer entendo que isso não é mais necessário com a tecnologia que temos hoje, então essa pergunta é mais por curiosidade mesmo. Supondo que não existisse nenhuma linguagem ainda, nem sequer o assembly apenas os binários. Como seria criar uma linguagem do zero? O que deveria ser estudado? Se puderem citar livros referente ao assunto fico muito grato.
 

Continua após a publicidade

JEDI

Active Member
Registrado
O CPU vinha com uma especie de SDK pro pessoal desenvolver, e a partir disso foram criadas linguagens de programação mais amigáveis.

Acho que o ideal é estudar assembly, pra entender como funciona uma cpu, e depois parte pra estudar compiladores e aprender como criar tua própria linguagem.

Não saberia te indicar livros, mas hoje em dia é fácil achar no google.
 

Fpiqui

New Member
Registrado
O CPU vinha com uma especie de SDK pro pessoal desenvolver, e a partir disso foram criadas linguagens de programação mais amigáveis.

Acho que o ideal é estudar assembly, pra entender como funciona uma cpu, e depois parte pra estudar compiladores e aprender como criar tua própria linguagem.

Não saberia te indicar livros, mas hoje em dia é fácil achar no google.
valeu jovem JEDI
 

navossoc

New Member
Registrado
valeu jovem JEDI
Se você realmente quer começar no binário, eu acho que o melhor material que você vai achar é este:

Já adianto que é um material bem complexo e você não vai entender muita coisa logo de cara, mas continue pelo menos até terminar a primeira parte (6 primeiros), não desista.
Procure mais materiais parecidos, você começará a revisar os conceitos e as coisas começarão a fazer mais sentido.

Aparentemente existe uma versão do curso no coursera também.

[]'s
 

Fpiqui

New Member
Registrado
Se você realmente quer começar no binário, eu acho que o melhor material que você vai achar é este:

Já adianto que é um material bem complexo e você não vai entender muita coisa logo de cara, mas continue pelo menos até terminar a primeira parte (6 primeiros), não desista.
Procure mais materiais parecidos, você começará a revisar os conceitos e as coisas começarão a fazer mais sentido.

Aparentemente existe uma versão do curso no coursera também.

[]'s
valeu meu caro, muito agradecido pelo informação
 

Sonymaster

Jogador de Videogame das décadas 1980/1990.
Registrado
Tem um cara que criou o Logic Basic usando apenas o Visual Basic. Então pode criar uma linguagem usando Java ou C, só estudando para saber.

Inicialmente o Logic Basic era em Português e agora é inglês. Pode pesquisar por curiosidade.
 

JEDI

Active Member
Registrado
Tem um cara que criou o Logic Basic usando apenas o Visual Basic. Então pode criar uma linguagem usando Java ou C, só estudando para saber.

Inicialmente o Logic Basic era em Português e agora é inglês. Pode pesquisar por curiosidade.
Existe uma materia na faculdade chamado compiladores, onde ensina a criar um compilador e com isso uma linguagem.

Por curiosidade é possivel criar um compilador praticamente a partir de qualquer linguagem.

Um exemplo bem simples feito em python:
 

igormp

aaaaaaaa
Registrado
Existe uma materia na faculdade chamado compiladores, onde ensina a criar um compilador e com isso uma linguagem.

Por curiosidade é possivel criar um compilador praticamente a partir de qualquer linguagem.

Um exemplo bem simples feito em python:
Complementando isso, o livro que geralmente usam de referência é o famoso livro do dragão (que na edição mais nova não tem mais um dragão na capa):
 

Luxw

初音ミク
Registrado
Não tem como "não existir o assembly", ele faz parte da arquitetura da CPU, quando uma arquitetura é desenvolvida ela é desenvolvida com uma coisa chamada Instruction Set Architecture que define quais são as instruções, os registradores e os tipos de dados que a CPU aceita. Basicamente daí já se tira o assembly logo de cara.
Veja bem, o "assembly" não é uma linguagem de programação em si mas sim o conjunto de instruções de uma arquitetura.
Se você realmente quisesse começar do binário, isso seria equivalente a desenvolver sua própria CPU (ao contrário de desenvolver uma linguagem de programação).
Linguagens de programação são só abstrações em cima de abstrações.

Assim, tendo teu próprio instruction set, você pode, com teu próprio assembly, escrever um compilador pra alguma linguagem de programação (nova ou existente). Pode escrever um compilador pra C que vai te dar compatibilidade com o resto das linguagens, Python, etc. Ou pode criar sua própria linguagem e daí escrever um interpretador de Python na sua linguagem, e assim em diante.

É um exercício MUITO complexo, mas ao mesmo tempo muito legal. É a melhor maneira de entender como um computador funciona.

Por sinal eu adorei o nand2tetris, nunca tinha ouvido falar. Vou dar uma olhada!
 

hugohaa

Ain't no mountain high enough
Registrado
Não tem como "não existir o assembly", ele faz parte da arquitetura da CPU, quando uma arquitetura é desenvolvida ela é desenvolvida com uma coisa chamada Instruction Set Architecture que define quais são as instruções, os registradores e os tipos de dados que a CPU aceita. Basicamente daí já se tira o assembly logo de cara.
Veja bem, o "assembly" não é uma linguagem de programação em si mas sim o conjunto de instruções de uma arquitetura.
Se você realmente quisesse começar do binário, isso seria equivalente a desenvolver sua própria CPU (ao contrário de desenvolver uma linguagem de programação).
Linguagens de programação são só abstrações em cima de abstrações.

Assim, tendo teu próprio instruction set, você pode, com teu próprio assembly, escrever um compilador pra alguma linguagem de programação (nova ou existente). Pode escrever um compilador pra C que vai te dar compatibilidade com o resto das linguagens, Python, etc. Ou pode criar sua própria linguagem e daí escrever um interpretador de Python na sua linguagem, e assim em diante.

É um exercício MUITO complexo, mas ao mesmo tempo muito legal. É a melhor maneira de entender como um computador funciona.

Por sinal eu adorei o nand2tetris, nunca tinha ouvido falar. Vou dar uma olhada!
Saudades de estudar assembly na disciplina de infra de software da faculdade. (Nope nope nope nope)

Programar em assembly era um campo minado. Eu lembro que um dos projetos da disciplina era fazer um jogo de tanque meio bomberman e um dos projetos saiu tão bugado que travava o pc num nível que só puxando da tomada pra ele voltar à vida lol
 

btk

Holandês Voador
Registrado
Estude Microcontroladores, ali vc terá uma ideia.
 

Usuários que está vendo este tópico

Topo