Como criar uma linguagem de programação (na prática)
Vložit
- čas přidán 16. 07. 2024
- Você vai entender todas as etapas de criação de uma linguagem de programação a partir de exemplos práticos.
Vai conhecer mais sobre a história das linguagens de programação, o motivo de JavaScript ter sido criado e aprendizados que pode levar para a vida inteira.
Para o exemplo dessa aula, vou reimaginar uma linguagem interpretada que chamei de linguagem Chapolin Colorado hehe.
E aí, bora ver?
#compiladores #javascript #linguagemdeprogramação
💥 Aula gratuita sobre testes automatizados: bit.ly/metodo-tajs-aula-gratuita
🔥 Conheça o método TAJS: bit.ly/metodotajs-yt
✅ REFERÊNCIAS
github.com/dipeshpatil/simple...
github.com/childrentime/js-in...
github.com/marten-de-vries/ev...
www.lifewire.com/what-is-enia...
astexplorer.net/
/ how-microsoft-rewrote-...
código fonte: github.com/ErickWendel/simple...
💥 CHAPTERS
00:00 - O que você vai ver neste vídeo
00:24 - O que são linguagens de programação
02:07 - Entendendo a relação com código binário
03:20 - Se inscreva no canal e deixe o seu like!
03:44 - Porque criar uma linguagem de programação do zero?
04:50 - Tipos de linguagens de programação
06:45 - O que você vai fazer
07:35 - Entendendo etapas de uma linguagem de programação
08:22 - Lexical Analyzer/ Analisador Léxico
10:23 - Demo - entendendo o analisador léxico
13:31 - Alterando os tokens de operadores por palavras
17:02 - Entendendo o papel do parser
18:35 - Demo- parser na prática
20:33 - Evaluator/ Executor
21:26 - demo - evaluator na prática
23:04 - Complexidades adicionais
24:00 - Considerações finais
24:37 - Erros de gravação
26:08 - Se inscreva no canal e ative as notificações!! - Věda a technologie
Tem poucas coisas que a faculdade ensina, para todas as outras do universo existe o Erick Wendel! Gostou? Fixa aew man❤
Muito obrigadooooo tmj manoooo
cara, é sinceridade pura, até os coordenadores da faculdade gostaram, eu passei o vídeo na aula que eu sou monitor, a turma achou fodástico! bom demais \o/ !@@ErickWendelTraining
CARACAAAA que demais!! Ganhei meu dia! Muito obrigado pelas palavras@@tokioshiguerra
@@ErickWendelTraining Sou aluno dessa faculdade, voltando aqui pq gostei muito desse video, consegui criar minha própria linguagem, todo sucesso pra você meu fera.
Eu sou um cara simples, quando vejo o Erick falando de compiladores eu dou um like.
Opaaaaaaa ai simmm
Cara programo há 2 décadas , mais vc e um gênio.
Me sinto um cara que nunca programei quando assisto seus videos
Powwwww muito obrigado pelas palvras!! Sigo trazendo mais 🤩🤩
Vídeo bastente didático e bem legal! Só um ponto: Java e C# não são inteiramente compiladas. Elas são compiladas e interpretadas. Nas duas linguagens, o código escrito é transformado em uma linguagem intermediária (bytecode para o Java e Common Intermediate Language no caso do C#). Esse código intermediário então é interpretado pela Java Virtual Machine (JVM) ou o Common Language Runtime (CLR) do C#. O benefício disso é a portabilidade, pois uma vez compilado, o programa resultante pode rodar em diferentes sistemas operacionais. Se elas fossem 100% compiladas, como é o caso do C e C++, para cada sistema operacional seria necessário haver uma compilação diferente.
Alto nível! vlw cara, a internet precisa desse conteúdo!! ja tem muito CRUD por ai!
parabéns, abraço.
powwwww muito obrigado Rogerio!! Tmj demaaaais
Cara como não conheci esse canal antes, cada dia mais apaixonado pelo JS
Powwwww sensacional tmjjjj
Comecei um projeto assim há muito tempo, quando ainda estava na faculdade, mas agora com essa matéria será uma grande ajuda.
Que demais!! Me diz o que achou do video 🥳
Explicou um assunto absurdamente complexo de uma forma muito acessível !!! Excelente!
Ótima aula mano!!!! Muito boa a explicação sobre compilados e tals !!!
show!!! uma forma simples mas bem clara para as pessoas pelo menos ter uma noção de como funciona os coisas hoje em dia
This is something i've never saw before, thank you so much m8! True Knowledge 🙏🙏🙏
Thanks a lot!! Were you able to understand it by looking at the captions?
@@ErickWendelTraining i'm italian, i've lived in spain for years, with a little effort i did understand almost everything, the only problem i had is your level that is really above the average!
Adorei o vídeo.
Abração, Erick.
Fica com Deus
Sempre bom ver conteúdo de programação assim.
Mano do céu!! Quase ninguém fala disso no BR valew!
Cê é monstro bro, vídeo irado demais.
que demaaais, fico feliz que curtiu!
Que video incrível, foi o melhor video desde que o ano começou.
Powwwwww muito obrigado Domingos! Fico muito feliz, esse video deu um trabalhao! 😂
Resumiu o básico de compiladores e interpretadores em apenas um vídeo curto, massa demais, parabéns @Erick 🤟
Powwww muito obrigadooo! Esse era o objetivo 🥳🥳
Ficou brabo esse vídeo Erick, parabéns mano e sucesso.
Agora bora voltar a estudar o TAJS, fuuuuiii.
Ai simmmm bora pra cimaaaa
Muito bom mesmo. Conhecendo o canal agora.
Só uma correção, Java até é considerada uma linguagem compilada, nas ela compila para bytecode, não para linguagem de máquina, quem faz isso é a JVM, que é feita em C.
Erick, vc é referência demais. ✌🏽
Para quem quiser se aprofundar mais, há essa playlist do Curso de Sistemas de Computadores , da Pepperdine University - California: czcams.com/play/PL9o9lNrP1luVQoR25mdOPP2yKyhNLLK0W.html&si=NROV_NOXbK1jF4m0
O professor é bastante didático. No curso você aprende como os computadores processam as instruções de programas, a como fazer instruções em binário e em Assembly(pep9), e o projeto principal do curso é a criação de um Parser de Assembly(pep9) para hexadecimal feito em Java - mas pode ser adaptado para outras linguagens, como eu fiz com typescript.
Conteúdo incrível!
voce é fera demais!
Muito boa aula
Contéudo mais alto nível de programação na internet
Powwww muito obrigado!! Tmj
Valeu bro! Deu uma luz de entendimento. Sei um monte de coisa e nunca soube nada hahaha. Finalmente comecei a aprender programação com intuito de fazer games, estou seguindo um caminho conforme encontrei nos requisitos de vagas, porque mentor nunca tive.
To seguindo Python, C++, aprendi Git e mesclando no Unreal Engine, to do 0 em tudo, e o video ajudou a entender melhor algumas coisas.
Vídeo chique, elegante. Abraço!
Sensacionaaaaal! É importante aprender esses temas que abrem a cabeça para coisas novas!
Muito bom o video, estava vendo o conteúdo do porhub e vim pra cá
que isso cara AUSHUASHASUHASUAS
Se meu conteúdo passou, do maior site do mundo é um bom sinal 🤣🤣
Conteúdo de alta qualidade!
Tmj manoooo
INCRIVEL PQP QUE REPRESENTAÇÃO DO BRASIL. É ISSO QUE CHAMO DE REFERÊNCIA. AINDA BEM QUE NÃO É MEU PRIMO KKKKK SUCESSO
hahaha tmj manoooooo
Não tem como não dar like num video desse. Podia fazer um colab com o Akita
Boa Erick !
Please no proximo video voce pode falar sobre logic gates e sobre a linguagem assembly 6502
Que cara inteligente pqp
Que vídeo incrível parabéns! Me lembrou o Fábio Akita só que bem mais didático
Olocoooo que honra! Fico muito feliz! Valeuzaoooo
Muito bom!
Ai simmmmm
Lembro de pagar a cadeira de compiladores com um professor bem carrasco, mas como eu acabei gostando do assunto, me dediquei bastante e foi a única cadeira que passei com a média 10 kkkk A gente até inventou uma linguagem de programação como projeto final, foi muito legal, já tem 11 anos isso e lembro de pouca coisa
Dessa vez vc foi longe de mais. Bom d++.
Deu até vontade para aprender assembly
hahahahah dahora né? Próximo passo é criar uma pra produzir código de maquina 🔥
Monstro afff
Hahaaha tmj manoooooo
SHOW!
Super!
Vídeo assim totalmente free, esse cara é um anjo kkkkkk
Opaaaaaaaaaaa tmj demaissss
Fiz uma linguagem na matéria de Compiladores na Universidade, fui o único que fez em C#, o resto fez utilizando JavaCC, achei muita da hora todo o processo de criação.
Que demaaaaaaais!! O que usou para compilar o código?
@@ErickWendelTrainingTambém criei feat de anular códigos que nunca seriam executados, assim para deixar o processo de compilação mais rápido ainda, pois ignora códigos que nunca será chamado.
printf("Não contavao com a astúcia do ChapolinScript!!!");
Inscritos++ "Eu";
Amei_o_video = True;
crc teu comentario foi criativo
Uma das disciplinas que mais gostei na faculdade foi a de compiladores, para ser aprovado nela precisava criar um compilador em C conforme as orientações passadas no trabalho, não podia usar bibliotecas. Ali deu pra botar a cuca pra queimar kkkk foram varias horas seguidas para cumprir o desafio.
Ah e o curso que fiz foi engenharia da computação.
Ja tentei fazer na faculdade um conversor de pseudocódigos em linguagem C utilizando JFlex e Regex. Foi interessante
Top! O Mago do JavaScript. {#EW}
Opaaaa muito obrigado David!! Tmj
Gatinha essa do vídeo ❤
👀
muito bom
Valeuuuuuu tmjjj
Top dms.
Opaaaa tmj manooo
Vai ter um semestre na minha faculdade que a gente vai aprender a fazer uma linguagem de programação. Tô estudando ciência da computação
Ensina e criar um framework do js ou ts que eu mesmo acabo com o react e o vue
ja fiz um compilador na faculdade na disciplina de compiladores la em 2015, era o trabalho final. O legal de fazer sua linguagem é implementar coisas novas pq só mudar a sintaxe nao é muito produtivo e oq faria algm querer usar sua linguagem só pq vc trocou umas palavras chaves? No meu caso eu tinha implementado inferencia de tipo e um comando que sinto falta ate hj nas linguagens de programacao atuais o 'breakAll' q era um comando que eu inventei para quebrar todos os loops e nao apenas o loop mais interno. Dessa forma se vc tivesse um for dentro de for e rodasse um breakAll o processo saia dos 2 loops de uma só vez
sinto falta de ponteiros em js
@@RickandMorty-dt1md Da pra simular com referencias de objetos
@@tiagoamaral8823 sinto que isso é falta de otimização. pq tipo que deve dar um get no objeto ao invés de acessar diretamente a memoria. não sei se é bem isso. mas meio que você apontou pro objeto e no objeto apontou pro que queria.
@@RickandMorty-dt1md Sim, isso é uma das inconsistencias do JS
Qual a extensão que você usa para um "Stick" no scroll, mantendo a função fixa
23:48 Opa, Erick. É errado falar que JS é uma abstração de C++ já que a relação de ordem entre eles é bem diferente. Fora isso, vídeo bem legal.
Hmm como assim a relação de ordem é diferente? Te convido a dar uma olhada no video que recriei o nodejs do zero, nele o js é literalmente traduzido em instruções C++ por isso é sim uma abstração ao C++
@endelTrainingOpa, Erick, beleza? Acho que me expressei mal.Kkkkkkkkk
Vou explicar o que eu quis dizer de outra forma:
Mas vamos pensar o seguinte? Rust foi escrito em Ocaml, inicialmente, certo? Até Rust compilar (bootstrap) a si mesmo demorou e ele tinha chamadas do Ocaml (Ocaml tem GC e Rust não, por exemplo), mas o ponto é que o codigo gerado por ambos é diferente. Se eu partir de que a linguagem host (linguagem a qual interpretador/compilador) escrito é uma abstração da outra, vão existir falhas no argumento. Usando o mesmo argumento, boa parte das langs são abstrações de C/Lisp já que foram escritas nessas langs. O que eu quero dizer é que, não existe relação entre linguagem host (C++) e JS (linguagem criada) além do node ser escrito nela, por mais que algum I/O seja feito é justamente pro interpretador rodar mais rápido porque seria bem mais lento rodar no interpretador mesmo com JIT. Tanto que se tu tirar o codigo gerado em C++ vai ser completamente diferente do gerado em JS. Exemplo pra ilustrar o que eu digo: Se você quiser usar C++ com JS tem que fazer ffi (converter os tokens de C++ para serem compatíveis com JS) pro JS conseguir rodar o codigo. Se fosse de fato uma abstração, os códigos deveriam ser compatíveis sem ffi, como era em C e C++ antes do C++11 que código C era valido em C++. Espero que eu tenha conseguido me expressar melhor.
Edit: Digitei C++ 2x em um contexto errado. Kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
Erick Wendel Você sabe criar banco digital?
Antes de saber que o JS se baseava em C++, eu fiz uma biblioteca pra programar em C++ e o navegador convertia pra JS😂 super util
O lexer é dboa, eu travei mesmo foi no parser.
boaa!! travou no que exatamente?
Adoraria que fizessem uma linguagem de programação com comandos em português. Se eu soubesse fazer , criaria e chamaria de Linguagem Tupiniquim. 😅
hahaha ai não seria em Português seria Tupiniquim😂
tem comunidade no discord ?
KKKKKKKKKKKKKKKKKKKKKKKKKK esse final "caralho"
🤣🤣🤣🤣🤣 easter egg
Então a ideia da Marvel e DC Comics de criar o Brainiac veio do Eniac aliado a uma IA? 😮 Chocante e caliente.
na verdade a amioria do codigo de maquina que o pc entende o hexadecimal também e codigo de maquina
🤓
Conteudo true
opaaaaa tmj!!
🥳🥳🥳
Então quem sabe c hoje em dia pode fazer um programa que hackeie a máquina de outras pessoas?
Criando uma linguagem de programação no Java para criar outra línguagem de programação: ✓
Passa o link da camiseta, meu consagrado
deve ser assim que fizeram o egua
Java não é interpretada pelo motor JVM? Ela não compila pra código de maquina, certo?
JVM é o motor de execução, mas o compilador gera codigo de maquina (só olhar o arquivo.java, que vai ver que ele é binário)
@@ErickWendelTraining Showss .valeu
VC está querendo dizer que tanto o html quanto o nodeJS podem executar o Javascript ? Para a pessoa executar o javaScript basta escrever os códigos no nodeJS. É isso ? Obrigado. Hoje é dia 21-fev-2024, quarta.
If there are English subtitles, I'll have no wishes in my life😢
Oi. O nodeJS é uma linguagem ? Obrigado. Hoje é dia 21-fev-2024, quarta.
Opa! Nao, nodejs è o motor de execucao de Javascript
¿Y si existiera un lenguaje sin palabras reservadas?
Acredito que não, se não, nao tem como determinar o que a linguagem deve fazer
Escreve em codigo de maquina pra mim seria mais facil
Aí ó, a unica forma de chegar no nivel do Erick é assim, criando uma linguagem que ele não conhece. E não disponibilizar tutoriais na internet pra ele. Se não é capaz dele ficar melhor que o criador KKKKKK
javascript é a fantasia bonita do c++ haha
Exatooooo
Skrillex programador.
Tem como criar uma linguagem de programação que usa palavras em português?
Boa
Cê e doido kkskskskskskskfaz isso nao
Opaaaaaaaaaa
Porra eu jurei que vc ia se meter no c++ e criar lexer, paser e interpreter do 0. 😥
Hahaha eu até pensei em fazer isso, mas o video ficaria em 3 horas 😂😂
@@ErickWendelTraining não me importo em ver 3 horas disso.
1:41 "C++ é um exemplo de linguagem baixo nível" , mas moço C++ não é linguagem de baixo nível.
4:10 "linguagem de baixo nível como C", mas moço C também não é linguagem de baixo nível.
Apesar dos comentários que fiz achei o vídeo muito legal.
C e C++ são consideradas linguagens de programação de nível médio. Embora permitam um controle próximo do hardware e forneçam acesso direto à memória, elas também oferecem recursos de alto nível, como gerenciamento de memória mais abstrato e suporte a programação orientada a objetos no caso de C++. Linguagens de baixo nível, como Assembly, fornecem um nível mais próximo ao hardware, enquanto linguagens de alto nível, como Python, abstraem muitos detalhes de baixo nível em prol da facilidade de programação.
Se chatGPT diz eu acredito 🤣🤣🤣 valeu manoooooo
ta vendo, precisa ser binario pras coisas funcionarem, o resto é gambiarra( nao me refiro a codigo de programação)
hahaha não necessariamente gambiarra, é inviável escrever binário