-
Ruslan Spivak
Ruslan Spivak
19/08/2025 12:37
Essa é uma daquelas armadilhas que até desenvolvedores experientes caem, não é? A lógica de subtrair os extremos parece certa, mas"18 - 5 = 13" ignora que estamos incluindo os limites. Então, na verdade, você deve contar todos os números de 5 a 18, resultando em 14 no total. Uma lição de como até os menores detalhes podem desviar sua contagem como um bug que aparece em um código de milhares de linhas.
-
Ruslan Spivak
Ruslan Spivak
15/07/2025 11:38
Esse primeiro capítulo da obra de Seth Braver é como aquele código que, à primeira vista, parece simples, mas na verdade tem uma estrutura por trás que chill no Processing. A frase de William Stein, "Matemática é a arte de reduzir qualquer problema à álgebra linear", deixa claro que a álgebra não é só uma lista de números, mas a base que pode transformar problemas complexos em soluções elegantes. Se você ainda pensa que um vetor é só um punhado de números, prepare-se para um ‘meme’ de revelação no seu cérebro. Vale a pena desvendar o lado sombrio da álgebra linear e ver como ela pode iluminar até o código mais nebuloso.
-
Ruslan Spivak
Ruslan Spivak
20/06/2025 11:07
Quem diria que um livro de cálculo poderia ser tão interessante? Seth Braver destaca que "onde há vida, há mudança; onde há mudança, há cálculo", uma frase que poderia muito bem ser um meme em algumas comunidades dev. Para quem está mergulhando em IA e machine learning, revisitar os fundamentos da matemática pode ser tão refrescante quanto um café bem tirado. No fim das contas, um pouco de cálculo nunca faz mal, a não ser que você esteja tentando solucionar um bug complexo sem ter revisado suas integrais.
-
Ruslan Spivak
Ruslan Spivak
09/08/2024 13:26
Crescer como engenheiro de software é quase como um jogo nível hard: sempre tem um novo boss e novas mecânicas. O autor destaca que certos princípios foram fundamentais na sua trajetória, e isso é algo que muitos devs esquecem na correria do dia a dia. O aprendizado contínuo é essencial, pois, mesmo quando se passa a ser um líder em vez de um contribuinte individual, essas lições carregam um peso enorme. Se você está se perguntando como melhorar, pode ser hora de revisitar os fundamentos e, quem sabe, fazer uma quest paralela para aprimorar suas habilidades.
-
Ruslan Spivak
Ruslan Spivak
31/07/2024 14:04
Falar sobre fundamentos é como discutir o uso de variáveis globais: todo dev sabe que são essenciais, mas poucos dão a devida atenção. A citação de John Wooden, "sem uma base forte, você não pode alcançar seu potencial completo", é tão verdadeira quanto a famosa regra de que código é lido muito mais do que é escrito. Investir nesse alicerce é garantir que você não seja apenas um programador funcional, mas um engenheiro de software que realmente entrega valor.
-
Ruslan Spivak
Ruslan Spivak
19/03/2020 09:45
Mais uma camada na complexidade dos intérpretes, e agora estamos falando de chamadas de procedimentos aninhadas. Isso é como escrever um código tão bem que até o seu debugger fica confuso. A frase de Feynman, 'O que eu não consigo criar, eu não entendo', é um lembrete martelando na cabeça de cada dev: entender é o primeiro passo para dominar. Afinal, se você não consegue fazer o que quer, provavelmente não sabe nem por onde começar.
-
Ruslan Spivak
Ruslan Spivak
01/03/2020 13:53
Essa é uma ótima lembrança sobre a natureza do EOF. Tipo aquele amigo que sempre some na festa, mas você sabe que ele está lá, apenas não pode ver. "Não há um 'caractere EOF' explícito no final de um arquivo" é uma verdade que os devs precisam abraçar, porque, no final das contas, a mágica acontece nas abstracções de alto nível que construímos. Em vez de olhar para o EOF como um personagem solitário, melhor vê-lo como o conceito que está sempre nos salvando de ter que limpar o que não lemos.
-
Ruslan Spivak
Ruslan Spivak
20/02/2020 10:00
Esta parte do tutorial é como aquele momento em que você finalmente entende que passar parâmetros em funções pode ser mais fácil do que passar por uma crise de identidade em um projeto legado. Implementar chamadas de procedimento é um passo fundamental no desenvolvimento de um intérprete, pois traz um pouco de ordem ao caos. "Faça o melhor que você pode até saber melhor" realmente se aplica aqui, especialmente quando seu código parece mais um labirinto do que um algoritmo.
-
Ruslan Spivak
Ruslan Spivak
28/08/2019 12:00
Esse episódio da saga de construção do interpretador é como um game boss em um RPG: você precisa entender a pilha de chamadas e os registros de ativação para conseguir passar de fase. A citação da Thatcher lembra que mesmo os programadores precisam persistir diante de bugs e desafios de design. Não dá para esquecer que compreender como gerenciar o estado das funções é crucial para evitar dores de cabeça no futuro, tipo aqueles erros de stack overflow que aparecem do nada. No final das contas, desmistificar a pilha é como passar de level: só traz recompensas.
-
Ruslan Spivak
Ruslan Spivak
23/07/2019 09:20
Esse episódio da série é para quem ama mergulhar nos detalhes da construção de um interpretador. Reconhecer chamadas de procedimento é como implementar um sistema de navegação em um barco — se você não sabe a direção, vai acabar remando para o lado errado. "Não avançar é recuar" nunca fez tanto sentido em programação; cada bug corrigido é quase um remédio para a frustração. Então, pegue seu paddle e bora avançar!
-
Ruslan Spivak
Ruslan Spivak
21/06/2019 06:45
Parece que a equipe está focada em aprimorar a experiência do desenvolvedor, melhorando a "relato de erros". Afinal, quem nunca se sentiu como um Jedi em treinamento quando a mensagem de erro aparece sem sentido? Essa etapa de refinar a captura de procedimentos apenas ressalta como uma boa depuração pode ser o verdadeiro sabre de luz em nossos projetos. Vamos aguardar os próximos passos sobre reconhecimento e interpretação de chamadas de procedimento.
-
Ruslan Spivak
Ruslan Spivak
08/05/2017 06:45
O artigo promete desbravar o tema dos escopos, que é algo fundamental para qualquer dev que já ficou perdido em closures. Afinal, "somente peixes mortos vão na correnteza": entender como gerenciar escopos é crucial para evitar bugs que parecem ter sido lançados por um troll. Dica: se você ainda não sabe a diferença entre escopos léxicos e dinâmicos, é hora de colocar isso na sua stack de conhecimentos.
-
Ruslan Spivak
Ruslan Spivak
27/04/2017 02:00
Esta parte traz uma boa dose de nuances sobre tabelas de símbolos e análise semântica. A frase "Anything worth doing is worth overdoing" poderia ser o lema de todo dev que se aventura em compiladores. Entender escopos e como eles funcionam é como entender as regras da Matrix: essencial para evitar bugs que poderiam transformar seu código em um verdadeiro agente Smith. Afinal, uma análise semântica bem feita pode ser a diferença entre um programa funcionando ou ele sendo só mais um looping sem sentido.
-
Ruslan Spivak
Ruslan Spivak
01/12/2016 20:20
Enquanto a frase do provérbio chinês parece ter sido escrita para desenvolvedores lidando com bugs, hoje a conversa é sobre parsing de declarações de procedimentos em Pascal. Entender esse conceito é como aprender a montar o LEGO do seu código: cada peça precisa se encaixar perfeitamente. Vamos com calma, porque cada passo conta e, considerando a complexidade de algumas linguagens, estar em movimento é mais importante do que a velocidade em si.
-
Ruslan Spivak
Ruslan Spivak
20/09/2016 22:15
Neste episódio da saga sobre como criar um intérprete, o autor propõe um resumo do que foi aprendido até agora. Até aqui, 'aprendemos a quebrar sentenças em tokens', um passo crucial para qualquer linguagem de programação decente. O olhar retroativo é sempre bacana, quase como usar um debugger para entender onde você pisou na bola, só que sem aquele senso de culpa do Stack Overflow. O que vem pela frente promete ser interessante, e mal posso esperar para ver como essa jornada se desenrola.
-
Ruslan Spivak
Ruslan Spivak
04/08/2016 10:15
Neste episódio da saga do intérprete, estamos viajando mais fundo no mundo de Pascal. Agora vamos dar um passo significativo, "atualizando nosso intérprete para analisar e interpretar nosso primeiro programa completo em Pascal". Para devs que adoram um desafio, essa é uma ótima oportunidade de rebobinar até os primórdios da programação e ver na prática como funcionam as coisas por baixo do capô.
-
Ruslan Spivak
Ruslan Spivak
01/05/2016 07:10
Este episódio do desenvolvimento de um intérprete é uma verdadeira viagem no tempo para quem passou pela escola de programação. A afirmação de que "Assembly e C eram as únicas linguagens 'reais'" é um sentimento que muitos compartilham, mas aqui fica a dica: todas as linguagens têm seu propósito, até mesmo o bom e velho Pascal. O importante é o que você consegue construir com elas, não a quantidade de ponteiros que você consegue gerenciar. Vamos ver como este intérprete vai evoluir, já estou imaginando como seria fazer isso em uma linguagem de mais alto nível...
-
Ruslan Spivak
Ruslan Spivak
18/01/2016 10:10
Hoje o foco são os operadores unários, como o famoso '+' e o traçante '-'. Esse tema é uma continuação direta do que foi discutido na Parte 7, então, se você precisar de uma revisão, é só voltar e relembrar os conceitos. Como diria um bom desenvolvedor: repetição é o caminho para a sabedoria (ou pelo menos para evitar bugs).
-
Ruslan Spivak
Ruslan Spivak
15/12/2015 11:00
Finalmente, estamos mergulhando em algo mais estrutural com as Árvores de Sintaxe Abstrata! "Uma das estruturas de dados centrais que usaremos ao longo da série" é como se o autor estivesse dizendo que já temos o esqueleto do nosso intérprete e agora é hora de colocar carne nele. É um passo essencial para quem quer entender como seu código se transforma em alguma coisa que a máquina realmente compreenda. Então, prepare-se para organizar esses nós como um verdadeiro arquétipo de dev, porque a beleza da programação está na sua lógica.
-
Ruslan Spivak
Ruslan Spivak
02/11/2015 11:00
Finalmente, estamos colocando um ponto final na nossa jornada dos operadores aritméticos com a adição de expressões entre parênteses. É quase como se tivéssemos construído a máquina do tempo do Doc Brown, mas ao invés de viajar no tempo, estamos apenas gerenciando a precedência das operações. Implementar isso não é exatamente um passe de mágica, mas certamente nos leva a um nível mais profundo de entendimento sobre como um intérprete realmente funciona. Agora, é hora de testar a profundidade do seu raciocínio lógico com aquelas expressões aninhadas - bom desafio para qualquer dev.