Want To Learn Programming? The 3 Pointers I Would Give To My 10-Years-Ago Self
#1 The goal
So—there’s really two ways in which one ‘is able to program’.
One is to being able to use a programming language to achieve a certain result (a)
The other one is to understand the underlying concepts, and being able to use them in every programming language that has them (b).
And you clearly want (b).
#2 How To Learn
Learning to program is like learning any other skill.
You want to understand a concept, then continue with very simple worked examples of programs, and work your way towards coming up with practice tests for yourself as you slowly transition form beginner to expert (per topic).
#3 What To Learn
The concepts that exist in programming languages today mostly stem from two families. One of them view programming as the art of manipulating a Turing Machine, while the other one views progamming as the art of manipulation expressions in the lambda calculus.
Those are the two paths you want to pursue in parallel. Start with:
- Learning C from the ground up: That teaches you how the machine works. Simple syscalls, pointers, memory allocation, and so on. There’s a book. For exercises, have a look here.
- Working through How to Design Programs: That teaches you how to write programs not only the machine, but also humans can understand.
That’s for starters. Have fun!