Academia WordPress

10 Artigos Que Todo Programador Precisa ler

Sendo um programador de Java e desenvolvedor de software, eu aprendi muito através de artigos intitulados “Tudo sobre programação…” eles tendem a fornecer muita informação útil e aprofundada sobre algum tópico em particular, o que seria extremamente difícil de se descobrir de outra forma. Em minha jornada de aprendizado encontrei vários artigos uteis, que eu guardei para referencia e múltiplas leituras. Eu pessoalmente acho que todos os programadores podem se beneficiar lendo esses artigos, o que me fez escrever esse post e compartilhar todos esses artigos “O que todo programador deveria saber” com vocês. Esses são da minha lista pessoal. Nesse artigo, você irá encontrar “O que todo programador deveria saber” de tópicos como Memoria, Unicode, Floating points, Networking, Orientação a objeto, Data/Hora, URL Encoding, String e muitos outros. Essa lista é muito importante para iniciantes já que eles são os que desproveem do conhecimento pratico. Também ganhando conhecimento dos fundamentos cedo na careira de programador ajuda a evitar erros, que foram feitos por outros programadores ou desenvolvedores de software durante o curso de aprendizagem dos mesmos. Apesar de que não é fácil se apropriar de todo o conhecimento apresentado nesses artigos em apenas uma leitura. Você provavelmente não vai entender alguns dos detalhes sobre “Floating point number” ou ficara confuso com detalhes sobre Memoria, mas é importante manter essas listas ao alcance para revê-las de tempo em tempo com um contexto. Então, boa sorte e aproveite sua leitura.

Ah, e não esqueça de compartilhar comigo qualquer artigo do tipo “O que todo programador deve saber” caso não esteja nessa lista.

O Que Todo Programador Deve Saber Sobre Memoria

Esse artigo é um dos mais clássicos, o que vai te levar por vários caminhos, alguns antigos, alguns novos, alguns conhecidos e outros não. Apesar apesar de ser tão essencial e onipresente, nem todo programador sabe o suficiente sobre Memoria. Conhecimento sobre memoria em sistemas modernos se tornam ainda mais importantes caso você esteja escrevendo aplicativos de alta performance. Hardware Designers inventaram modos ainda mais sofisticados de manejamento de memoria e aceleração – como caches de CPU – mas esses podem não funcionar de forma eficiente sem a ajuda do programador. Eu ainda estou lendo esse artigo, e eu não tenho palavras pra descrever o quanto eu aprendi sobre RAM, CPU Caches e.g. L1 e L2 cache, tipos diferentes de memoria, acesso direto a memoria e outros. Em resumo, uma leitura essencial para todos os programadores em todos os niveis de experiencia.

O Que Todo Cientista da Computação Deve Saber Sobre Pontos Flutuantes

Aritmética de pontos-flutuantes é um tópico complicado e difícil de se masterizar. Mesmo programadores de Java não sabem o que pode dar errado quando comparando float/double value com == operator. Muitos de nós frequentemente cometemos o erro de calcular de forma monetária floats e doubles. Esse artigo é outra gema dessa série e necessário para todos os desenvolvedores e programadores. A medida que sua experiencia cresce, é esperado que você saiba pequenos detalhes sobre coisas comuns, e aritmética de pontos-flutuantes é uma delas. Como um desenvolvedor senior de Java, você precisa saber como performar calculo monetário, quando usando Float, double ou BigDecimal classes, como arredondar números flutuantes etc. Até se você sabe os fundamentos de aritmética de pontos flutuantes, você irá aprender algo novo com esse artigo.

Programar - say what

O Que Todo Desenvolvedor Deve Saber Sobre Unicode

Character encoding, ou codificação de caracteres, é outra área onde muitos programadores sofrem e o “Absolutamente Minimo que Todo Desenvolvedor Absolutamente, Afirmativamente Deve Saber Sobre Unicode e Character Sets (Sem Desculpas!)” tenta preencher essa lacuna. Como nota de roda pé: sim, esse é o titulo do artigo. Foi escrito por Joel Spolsky, um dos fundadores do statckoverflow.com. Joel escreveu esse post no seu antigo blog a quase 10 anos atrás, mas ainda é relevante hoje. Esse artigo vai lhe ensinar o que é Unicode, o que é character encoding, como caracteres são representados usando bytes e muito mais. Um dos melhores pontos desse artigo é a linguagem e ritmo, mesmo que você não saiba nada de Unicode, você pode facilmente acompanhar. Em resumo, uma leitura essencial para todos os programadores e engenheiros de softwares.

O Que Todo Programador Deve Saber Sobre Data/Hora

Aparte de Character encoding, hora e data é outra área onde muitos programadores sofrem, eu incluso. Até mesmo desenvolvedores seniors se perdem entre GMT, UTC, horario de verão e saltos de fuso. Francamente, não é facil lidar com fuso horarios e não cometer erros, e então adicionar horario de verão. Os problemas ficam ainda piores caso você tente usar tentativa e erro como metodo, porque você (praticamente) nunca vai ser capaz de resolver seu problema assim. Há tantas coisas que podem dar errado e um numero igual de enganos frequentes. Coisas do tipo, a data conter time-zone ou não pode te confundir absurdamente, convertendo UNIX time para outra time-zone pode ser um trabalho gigante, sincronização de relogio nem se fala. Eu espero que se livre de suas duvidas sobre data/hora e que possa construir você mesmo o fundamental sobre Tempo, lendo esse classico artigo.

O Que Todo Desenvolvedor Web Precisa Saber Sobre URL encoding

Esse artigo descreve erros comuns sobre Uniform Resource Locator (URL), depois tenta clarificar condificação URL para HTTP, antes de apresentar problemas frequentes e suas soluções. Esse artigo não é específico para nenhuma linguagem de programação, porem, ele ilustra os problemas em Java e então termina explicando como corrigir problemas de URL em Java e em aplicação web de vários niveis. Voc~e irá aprender o basico de gramatica URL, sintaxe basica de URL em HTTP e outros protocolos. Esse artigo também explora precipicios de URL como codificação de caractere (character encoding), caractere invertido em diferentes partes da URL, e problemas de codificação/decodificação URL. Caso você seja um programador de Java, então você aprenderá sobre como administrar URLs em Java, do jeito certo. Como construir URL e usando bibliotecas do client HTTP comum do Apache. Finalmente ele também sugere melhores habitos ao lidar com URLs ex: você deve URLs quando você as cria, tendo certeza que seu filtro URL-rewrite administre bem sua URL e muitos outros.Em resumo, uma leitura essencial para todos os programadores e desenvolvedores web.

O Que Todo Programador Deveria Saber Sobre Desenvolvimento Web?

Esse é um artigo interessante para programadores, sobre o que todo programador deve considerar antes de tornar um site publico em detalhes tecnicos. Isso inclui coisas como Design de interface e experiencia do usuario, Segurança, Web standards, Performance, Optimização para mecanismos de busca (SEO), Tecnologia envolvida, e sobre vários recursos importantes. Já que o mundo de hoje é fortemente dependente de internet e programação tendo seus sites pessoais, blogs são muito comuns. Experiencia adquirida nesse artigo irá não só lhe ajudar profissionalmente mas pessoalmente também. Você irá aprender sobre todas as tecnologias chave (HTTP, HTML, XML, CSS, JavaScript etc), dicas para reduzir o tempo para carregar seu site, e outros detalhes importantes.

O Que Todo Programador Deve Saber Sobre SEO

Esse é outro artigo que é muito importante para desenvolvedores web, programadores e bloggers. SEO é muito grande pra se ignorar, já que muitos programadores também são bloggers, é importante aprender alguns básicos de Optimização de Mecanismo de Busca (SEO) para ajudar o Google a encontrar conteúdo e apresenta-lo para nossos amigos programadores. Já que nenhuma empresa pode sobreviver sem presença web hoje em dia, SEO se tornou ainda mais importante. Se você possui uma start-up que vende qualquer produto, SEO é algo que você deve se preocupar. Todos os programadores, especialmente os de web podem se beneficiar muito desse artigo. Lembre-se, SEO é um topico vasto e muito dinâmico e também varia de acordo com o mecanismo de busca (Google, yahoo, bing etc). Então, para masterizar esse tópico você vai precisar atualizar seu conhecimento.

O Que Todo Programador Em C Deve Saber Sobre Comportamento Indefinido # 1/3

Programando em C existe o conceito de “comportamento indefinido”. Comportamento indefinido é um grande tópico com varias nuancias e essa é uma das razões do porque eu gosto de Java, menor numero de comportamentos indefinidos, menos confusão, mais estabilidade e mais paz. Muitas coisas que aparentam razoáveis em C na verdade tem comportamento indefinido, e isso é uma fonte comum de bugs em programas. Fora isso, todo comportamento indefinido em C da direito ao implementador (compiler and runtime) para produzir códigos que formatam seu HD, faz coisas completamente inesperadas, ou pior. Leia esse excelente artigo para mergulhar fundo num mar de comportamentos indefinidos.

O Que Todo Programador Precisa Saber Sobre Networking

Diretamente do artigo “Você é um programador. Já imaginou como um jogo multi-player funciona? Pelo lado de fora parece magica: Dois ou mais players dividindo uma experiencia consistente via rede como se eles existissem juntos no mesmo mundo virtual. Mas como programadores nós sabemos que na verdade o que acontece por baixo é bem diferente do que se vê. Tudo ali é uma ilusão.” Esse é um artigo muito interessante sobre networking, escrito para programadores de jogos mas eu acho que todo programador e developer pode se beneficiar com ele.

O que Todo Desenvolvedor em Java Deve Saber Sobre String

Esse meu artigo sobre java.lang.string e o que eu particularmente acho que todo programador de Java deveria saber. String é muito importante no dia-a-dia de um programador em Java e é por isso que conhecer é necessário para qualquer developer que use Java. Esse artigo toca muitas areas importantes de String incluindo string pool, string literal, comparar String usando == vs equals(), convertendo bytes em Strings, porque String é imutável, concatenando Strings e muito mais. Programadores avançados podem já saber todas essas coisas mas ainda assim é bom revisa-las.

O Que Todo Programador Deve Saber Sobre Segurança?

Essa pergunta foi feita por um estudante de programação no StackOverFlow. Assim como nós aprendemos muito sobre conceitos gerais de programação e.x. Sistema operacional, algoritimo, estrutura de dados, arquitetura computacional e outras coisas, é também importante saber sobre segurança. Apesar de Segurança ser um topico vasto que alcansa desde encriptação/desencriptação, SSL, segurança da web, ofuscação, autenticação, autorização etc, o conhecimento basico minimo é necessario para todo programador. Eu pessoalmente não sabiai muito sobre segurança quando comecei minha carreira, foi quando eu comecei a escrever aplicações em web com Java (Servlet/JSP) que comecei a conhecer sobre segurança web e varias outras como SQL injection, Denial of Service, XML Injection, Cross site scripting e outros. Como um desenvolvedor em Java, agora eu sigo formas seguras de programar em java provindas pelo Fortify, PMP e outros provedores de analise de codigos estaticos. Esse artigo é uma coleção muito boa de topicos e links sobre Segurança e mesmo caso você esteja programando ou não, você vai se beneficiar desse recurso.

Números de Latência Que Todo Programador Deve Saber

Esse é um artigo de bônus, mas essencial para todo programador. Para escrever programas de alta performance em qualquer linguagem (ex: Java ou C++), você deve saber números fundamentais de latência (ex: quanto tempo leva para ler uma variável de memoria, do Cache L1, do cache L2, de uma leitura aleatória em SSD e de um HD quanto tempo leva para liberar ou travar no mutex, para enviar um pacote de data de uma cidade para outra.) Esses números de latência são independentes de qualquer linguagem de programação e parte do conhecimento fundamental, um desenvolvedor precisa escrever aplicativos com alta frequência e baixa latência. O bom desse link é que também lhe provê analises comparativas de como esses números de latência evoluíram com o passar dos anos. Você pode ver quais eram os números em 2006 e quais são agora.

Isso é tudo nessa lista de artigos que todo programador precisa ler. Lendo esses artigos, você ganha conhecimento apurado sobre tópicos em particular. Falando francamente existem coisas demais sobre programação para se aprender, aprender uma linguagem de programação como Java é só a ponta do iceberg, mas não é por isso que muitos de nós tem paixão por aprendizado?
Programar é um trabalho desafiador, e só aquilo que pode te ajudar durante a caminhada são conhecimentos básicos (ex: conhecimento sobre Memoria, Unicode, Data/hora, segurança) Poucas coisas são específicas de linguagem (ex: meu post sobre Java String) mas ainda assim são importantes para muitos iniciantes e desenvolvedores.

Texto de  em 15 de Maio 2014 em http://www.javacodegeeks.com/2014/05/10-articles-every-programmer-must-read.html 

Daniel Leal

Daniel Leal

Eu escrevo para facilitar o aprendizado de outros daquilo que eu tivesse dificuldade em aprender. WordPress, WooCommerce e desenvolvimento de novas tecnologias são meus focos principais, mas marketing de conteúdo, negócios digitais e (mais recentemente) fintechs também ocupam uma parcela das minhas ideias e projetos.

Adicionar Comentário

10 Artigos Que Todo Programador Precisa ler

Share via
Send this to a friend