Executando verificação de segurança...
13

Estou criando uma linguaguem de progamação do zero (Uranus)

Olá, me chamo Gustavo progamo em Lua(no qual sou mestre) Ontem de ontem tive a ideia de criar uma linguaguem de progamação do zero até agora não pesquisei nada sobre o assunto mas ontem de ontem eu tive resultados consegui fazer meu codigo ler o arquivo e meio que interpretar, ontem eu restruturei todo o código e ja pode chamar funções e bota os parâmetros, ainda tenho que adicionar tipo strings e number, támbem ja tem um sistema de erro que é quando falta um parantese para fechar uma função.

Gif mostrando funcionando
https://github.com/GustavoFatality/Uranus/blob/main/exemplo.gif

Código fonte : https://github.com/GustavoFatality/Uranus/blob/main/main.lua

Como Funciona?

Como eu disse eu to progamando sem nenhuma referência apenas achando como uma linguaguem de progamação funciona, o jeito que fiz é o seguinte:
Algoritimo

  • Ele pega a string do arquivo e separa cada linha em uma tabela
  • Fazendo dois fors um dentro do outro ele acha as possibilidades
  • dentro da tabela da linha temos os seguintes elementos: inFunc(pra saber se esta fazendo uma função), started(Se uma função ja começou), finished(se uma função ja terminou), args(parâmetros/argumentos de uma função), funcIndex(quando inicia uma função indica a index na tabela de funções do sistema), annotation(Quando achar um "--" para parar o for da linha e servir como anotação),

Recursos que ja fiz

  • Da para chamar funções, porêm se você de uma olhada no main.lua vera
    que o print no caso a função write é em uma table, da pra criar novas funções
    e ja tem como usar , pra mais de um parâmetro
  • Támbem fiz um -- para anotações

Código Fonte: https://github.com/GustavoFatality/Uranus/
To muito feliz aos 15 anos de idade conseguir fazer coisa do tipo progamando desde os 10 anos idade sem fazer nenhum curso algo do tipo apenas observando código(poucas vezes olhava videos para entender algumas coisas mais para termos), planejo adicionar bibliotecas gráficas orientada a objetos ao Uranus.

Em algum momento em breve vou iniciar um canal em https://www.youtube.com/channel/UCCjF3u3eh3NRYOiMdTT7bcQ
E vou falar sobre a linguaguem em algum video.
Você pode deixar sugestões nos comentários.

Carregando publicação patrocinada...
2

Seguinte, amigo, aconselho antes de tudo a vocẽ tentar adquirir conhecimento e predefinir algumas coisas antes.

Conhecimento necessário:

  • Liguagem Interpretada vs Compilada: Compreender a diferença entre esses dois tipos de linguagens é fundamental para tomar decisões sobre a implementação de sua linguagem.
  • Estudo de linguagens: Conhecer os conceitos de análise léxica, análise sintática, árvores de sintaxe abstrata (AST) e otimização é essencial para projetar e implementar um compilador ou interpretador.
  • Backus–Naur form: É uma notação útil para descrever a gramática da sua linguagem.
  • Fases de um Compilador: Frontend, Backend
  • LLVM: O LLVM é uma infraestrutura de compilador de código aberto que pode ser usada para criar compiladores. Conhecê-lo pode ser útil na implementação de sua linguagem.
  • Just-In-Time Compiler (JIT): Se você planeja suportar compilação just-in-time, entender como o JIT funciona e como ele pode ser implementado é importante.
  • Turing Complete: Saber o que significa que uma linguagem é Turing completa é relevante para entender a expressividade da sua linguagem.

Predefinições

  • Objetivos: Definir claramente os objetivos e foco da sua linguagem é o primeiro passo importante. Isso ajudará a orientar todas as decisões de design e implementação.
  • Design: Especificar a sintaxe, semântica, palavras-chave e estruturas de controle da sua linguagem é uma parte crítica do processo de criação.
  • Documentação: A documentação é essencial para ajudar os desenvolvedores a entender e usar sua linguagem de forma eficaz. Isso inclui manuais do usuário, guias de referência e exemplos.
  • Suporte: Considere como você fornecerá suporte técnico, resolverá problemas e atualizará sua linguagem à medida que ela evolui.

Aqui estão algumas fontes que irão lhe ajudar na construção de sua linguagem:

1

Parabéns. É assim que se desenvolve. Parece estar indo no caminho certo.

Embora hoje tenha muita informação, se restringir um pouco pode ajudar bastante a desenvolver a criatividade, instigar a curiosidade e desenvolver as habilidades de adaptação.

Eu comecei desse jeito, mais ou menos mesma idade eu tinha feito um "compilador" sem saber direito o que é isso. Era simples e não era bem como se faz de verdade, só dava o resultado esperado, mais ou menos como o seu. Não importa. Depois aprende o certo, só não pode treinar muito o errado. Eu tinha um computador com 16KB para fazer tudo isso.

Você é um exemplo que muita gente deveria se inspirar.


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

1
1
0

Achei interessante sua iniciativa, mas acho que falta um pouco de base no seu código. Lembre-se que sempre que você for fazer algo, muito provavelmente alguém já fez aquilo antes, e o que eu quero dizer com isso, é que o mais sensato seria pesquisar sobre pra achar dicas sobre boas práticas, arquitetura, design patterns e tudo mais. Assim você evitaria frustrações futuras com seu código, por ter feito de um jeito e depois ter que refatorar tudo.

Minha recomendação é você estudar um pouco sobre compiladores e interpretadores, a diferença entra cada um, e como eles funcionam. Ter conhecimentos sobre Linux também ajudaria muito nesse processo.

A sua lógica precisa de muitos aprimoramentos, mas levando em consideração que você não é gênio da programação, isso é completamente normal. Mas para criar uma linguagem realmente relevante você precisa de algoritmos e estruturas de dados muito mais complexas, como por exemplo árvores binárias. Senti a falta de orientação a objetos no seu código também, que são muito importantes pra você conseguir escalar a aplicação e não desistir do projeto.

Recomendo pra você o vídeo do Fábio Akita sobre compiladores e interpretadores, vai dar uma visão muito maior pra você do que esse comentário. Do mais creio que se você continuar estudando e principalmente fazendo auto-críticas a si mesmo, imagino que você terá uma visível evolução. Não conheço de Lua mas talvez futuramente eu tente contribuir com algo no projeto. E é isso, espero que o comentário seja de alguma forma motivador pra você.

Bons estudos!🚀

1

Obrigado pela sugestão, eu vou fazer uma separação por que o código está somente no main.lua então pode ficar confuso na hora de outra pessoa entender o código(ou eu até mesmo entender kk)

0