Programming

Notes on the practice of programming, mostly learned from Bjarne Stroustrup's "Programming 2nd Edition" (2014).

Purpose

Programming is always about producing useful systems.

Ideals

As programmers we always prefer to work at the highest feasible level of abstraction. The ideal is to express solutions in as general a way as possible.

In broad terms, when programming we strive for:

Practice

We develop programs in four phases:

  1. Analysis
  2. Design
  3. Programming
  4. Testing

The development phases are not a linear procedure: they are more like a pyramid where the latter depends on the former. Code problems arise when testing, design problems arise when coding, analysis problems arise when designing. We go back to our previous steps and refine them in order to arrive at a finished program.

Analysis

Programming is understanding - to solve a problem you must begin by understanding the problem itself.

Design

The difference between an experienced programmer and a freshly starting programmer is how they use the tools at their disposal in order to solve the problem.

Programming

When writing the code itself you must especially focus on the maintainability of your solution. Imagine someone who has never seen your program trying to fix a bug in its code, extending one of the program's components or maybe even replacing a core dependency.

Testing

We try to structure our programs so that we can convince ourselves that they are correct, but proving the correctness of a program is extremely complicated.

Testing is not to be looked down upon. Being an excellent tester means you have the power to teach yourself how to write good code.