No post anterior, vimos o que é e para que serve a stack (e o que causa a StackOverflowException). Nesse post, vamos tratar de outros dois conceitos fundamentais: ponteiros e a heap. O que são ponteiros Ponteiros são variáveis que armazenam endereços de memória. Eles foram introduzidos, em linguagens de alto padrão, na antiga PL/I com […]
Para “inovar” é preciso saber “abandonar”
Por que o Google “abandonou” o Inbox e o Google Reader? Drucker responderia essa pergunta dizendo: Questionar com regularidade a preservação em si de todos os programas e atividades, descartando os que não forem capazes de comprovar sua produtividade, faz maravilhas ao estimular a criatividade, mesmo nas organizações mais empedernidas – Peter Drucker Muitos de […]
Entendendo a Stack (e a StackOverflowException)
Todas as linguagens modernas trabalham com duas regiões distintas de memória: Stack e Heap. Entretanto, temos percebido que poucas pessoas sabem apontar a distinição entre elas. Nesse post, explicaremos a Stack, de forma incremental, a partir de seu propósito em dois cenários. DISCLAIMER: Optamos por uma abordagem didática e, com certeza, omitimos muitos detalhes de […]
Como a linguagem Rust impede, na compilação, a ocorrência de acessos inválidos a memória
Uma das características que mais gosto em Rust é que o compilador faz um enorme esforço para detectar prováveis erros de tempo de execução na compilação. O preço que pagamos por essa “ajuda” do compilador é ter de nos adaptar a alguns conceitos exóticos em programação. Os benefícios são as garantias de que “erros bobos” […]
Oito reflexões essenciais para o desenvolvimento de negócios de software
Muitos de nossos clientes são empresas que estão trabalhando em iniciativas de desenvolvimento de negócios de software. Entendemos que algumas dessas iniciativas podem não lograr êxito por ignorar algumas das reflexões que compartilhamos nesse post. #1 Um software “novo” não é fundamental para um novo negócio Temos um novo negócio quando: temos um novo software […]
The Thundering Herd Problem
I have a client who implemented the following caching strategy: In this strategy, each server maintains his own local and in-memory cache preventing repetitive requests to the original data source. The beauty of this strategy is that it is simple to understand and to implement. Of course, it has some drawbacks. For example, requests for […]
Como IoT pode ajudar a revolucionar o varejo, fidelizando clientes
Para eu poder defender meu ponto, permita-me compartilhar uma breve história, já não tão recente: Há alguns anos, por força da ocasião, me vi obrigado a comprar uma máquina que lava e seca e encolhe roupas. Quando estava concluindo minha compra (após já ter feito o pagamento), parti para uma discussão sobre como seria a […]
Como a linguagem Rust resolve o desafio de desalocação de objetos (com ownership, sem memory-leaks e sem GC)
Escrever programas que lidam bem com a memória não é tarefa fácil. Em C++, é fácil escrever programas que não desalocam objetos (os famosos memory-leaks) ou que tentam usar objetos que já foram desalocados. Em C# (e Java), é fácil sobrecarregar o GC e sofrer penalidades sérias de performance. Rust tenta resolver esse problema através […]
Conciliando Agilidade com Práticas de Arquitetura de Software
Como desenvolvedores, nosso trabalho é entregar software que o cliente quer e precisa, com o melhor tempo e custo, mitigando riscos. Muitos desenvolvedores, adeptos de processos ágeis, ansiosos em dispensar processos desnecessários no desenvolvimento, acreditam que técnicas de arquitetura de software podem ser descartadas. Infelizmente, [tweet]a busca “cega” (quando desprovida de critérios) pela agilidade tem […]
Qual é o seu trabalho?
“Qual é o seu trabalho?” Peter Drucker advertiu, ainda nos anos 60, que a forma como respondemos a essa pergunta influencia dramaticamente nos resultados que produzimos para nós e para os outros. Segundo Drucker, a maioria das pessoas, respondendo “Qual é o seu trabalho?”, relaciona as atividades que executa rotineiramente ou descreve departamentos sob seu […]