Lab C++

Codificação Eficiente

Não basta conhecer a sintaxe, é preciso conhecer a linguagem, saber a melhor forma de fazer.

Categoria: Dicas Profissionais

As Bases da Filosofia Unix – Parte 2

Dando continuidade ao último post, hoje vamos conhecer mais quatro regras das bases da filosofia Unix, conforme Eric S. Raymond em seu livro The Art of Unix Programming.

(mais…)

Bases da Filosofia Unix – Parte 1

Um sistema operacional que se mantém vivo há quase 50 anos, se manteve firme e estável desde então, concorrendo com diversos sistemas operacionais. Iniciado em 1973, chegando ao mainstream do desktop em 2001 com o MacOS X; chegando aos smartphones em 2008, com o Android; e indicado por alguns especialistas como o futuro dos sistemas operacionais.

Com tantos atributos de sucesso, vale a pena estudar sua filosofia de desenvolvimento. O livro The Art of Unix Programming, de Eric S. Raymond (ESR), é um dos estudo mais completos sobre o assunto. Logo nos primeiros capítulos define 17 regras que resumem as bases da filosofia Unix.

Hoje vamos começar uma série de quatro posts diferentes aonde vamos abordar as bases da filosofia Unix, conforme ESR, em 17 regras.

(mais…)

Atenção à Documentação

Já trabalhei em equipes que eram extremamente detalhistas, mas também trabalhei em equipes que praticamente não tinham documentação, nem mesmo funcional, ou mesmo manuais. Mas a falta de atenção a documentação pode causar problemas de qualidade e estabilidade em um sistema.

(mais…)

Argumentos da Linha de Comando – Parte 1: main()

Na plataforma MS Windows pouco se usa a linha de comando, mas C/C++ é muito utilizado para back end, e nesse caso a linha de comando é muito mais comum. Pra começar vamos entender como a linguagem C recebe as informações do sistema operacional. Vamos também entender quais cuidados temos que ter com argumentos de linha de comando.

(mais…)

Macro ou Função com Template?

Desde o C é comum utilizar macros para funções genéricas que podem executar a mesma operação em diversos tipos. Macros como MAX, MIN, AVG (média), dentre outros. Com C++11 é possível implementar juntamente com templates e inferência de tipo com typeinfo funcionalidades bem mais complexas.

(mais…)

Índice TIOBE e o Sobe-Desce da Linguagem C/C++

Índice TIOBE é um índice mensal holandês criado em 2002 que mede a popularidade das linguagens através de pesquisas automatizadas em diversas fontes, muito respeitado no meio de desenvolvimento, apesar de estar no centro de algumas controvérsias nos seus 18 anos de existência.

No mês de Out/2020 o índice indicou algumas tendências interessantes. A começar pela linguagem C, que continua relevante e se estabelecendo como linguagem mais relevante segundo o índice. Enquanto que a linguagem C++ vem se mantendo estável, porém desde 2018 vem consistentemente perdendo espaço para a linguagem Python. Veja o gráfico:

(mais…)

Declaração de Funções Old School

Pra uma linguagem de programação que nasceu em 1973 e rapidamente ganhou popularidade, falar de Old School significa voltar 40 anos atrás. Em mais de quatro décadas até a linguagem C evoluiu bastante, mas ainda assim existe muita coisa, principalmente em códigos antigos, ou em documentação antiga, que utiliza a sintaxe antiga de declaração de funções.

(mais…)

A Importância das Estruturas de Dados

Qualquer curso de desenvolvimento, seja curso livre, técnico, ou superior, começa a ensinar desenvolvimento ensinando algoritmos. Natural, uma vez que a maioria das pessoas não conhece como funciona código estruturado.

O que raramente é ensinado é a importância das estruturas de dados para o desenvolvimento de software, isso reflete em muitos projetos, muitas vezes profissional, que sofrem pela falta de estruturação dos dados.

(mais…)

Retorno de Ponteiro para Variável Local

Tá aí uma falha que pode causar problemas intermitentes e consequentemente muitas horas de desenvolvimento para corrigi-la. Vamos aprender a identificá-la e como evitar esse problema.

Abertura de Escopo

Tem muito programador C/C++ por aí que não sabe como abrir um escopo novo. Basicamente qualquer par de chaves abre um novo escopo em C/C++, e as variáveis ali declaradas somente tem validade dentro desse escopo. Em tempo de compilação isso serve para determinar a validade de cada variável.

(mais…)

Vazamento de Memória

Já trabalhei em várias equipes, algumas tinham um cuidado extremo com a gestão da alocação de memória, outras não se preocupavam tanto assim. Independente da atitude da equipe é importante saber como evitar vazamentos, e quais as consequências.

Para quem não sabe o que é vazamento de memória: é a manutenção de memória alocada dinamicamente após seu uso de forma que não possa ser recuperada, utilizada ou desalocada. O mesmo pode-se dizer de outros recursos. O programa funciona perfeitamente, porém em algum momento a memória acaba, e aí começam os problemas.

(mais…)