// 25 Oct 2016 - [It’s been a while]

But I haven’t stopped studying. I completed my English 2 class yesterday (8-week online course), and I made it out with an A. My grades in my two CS courses, however, have been taking some hits, so I’m stepping up my game now that I have more time.

The idea of programming as a semiskilled task, practiced by people with a few months’ training, is dangerous. We wouldn’t tolerate plumbers or accountants that poorly educated. We don’t have as an aim that architecture (of buildings) and engineering (of bridges and trains) should become more accessible to people with progressively less training. Indeed, one serious problem is that currently, too many software developers are undereducated and undertrained. Obviously, we don’t want our tools–including our programming languages–to be more complex than necessary. But one aim should be to make tools that will serve skilled professionals–not to lower the level of expressiveness to serve people who can hardly understand the problems, let alone express solutions. We can and do build tools that make simple tasks simple for more people, but let’s not let most people loose on the infrastructure of our technical civilization or force the professionals to use only tools designed for amateurs.
—  Bjarne Stroustrup
There is a long and disreputable tradition of writing very long functions – hundreds of lines long. I once encountered a single (handwritten) function with more than 32,768 lines of code.

Bjarne Stroustrup, The C++ Programming Language, 4th Ed. 

WTF! I can believe it though… there are lots of hacks out there!

Linguagem C++ Conselhos 5˚

Ponteiros, Vetores e Estruturas

[1] Evite a aritmética de ponteiros que não são triviais; § 5.3.

[2] Tome cuidado para não escrever além dos limites de um vetor; § 5.3.1.

[3] Use 0, em vez de NULL; § 5.1.1.

[4] Use vector e valarray ao invés de vetores (C-style); § 5.3.1.

[5] Use strings ao invés de vetor de char terminado com zero; § 5.3.

[6] Minimizar o uso de argumentos de referência em tipos primitivos; § 5.5.

[7] Evite void* exceto em código de baixo nível; § 5.6.

[8] Evite literais não triviais (“números mágicos”) no código. Em vez disso, defina e use constantes simbólicas; § 4.8, § 5.4.