Learning to program:
Thinking Computer Thoughts
What is a language? I’ll stay on the conservative side and say that languages are well-structured messages used to represent ideas. Once the ideas are stored outside of your head you can share them, develop them, and better remember them. Natural languages have evolved over some huge period of time to serve the every-day needs of humans. They allow us to share and express our experiences of the world, the universal and the specific.
In contrast, computer languages were designed by people to bridge the gap between human thinking and computer execution, sometimes in only a few weeks. They are not designed to communicate the human experience, they are designed to represent and translate algorithms into machine code. All the most reader-friendly features of programming languages (comments, variable names, objects, functions, …) are the result of programming language designers trying to make life easier for us. These features are not how computers think – talking directly to a computer without programming languages to translate is a huge pain. Any poetic exprapolations you’d like to make about well-written code ultimately relies on you understanding the algorithm that code represents.
“A hypothesis, first advanced by Edward Sapir in 1929 and subsequently developed by Benjamin Whorf, that the structure of a language determines a native speaker’s perception and categorization of experience.”
“The proper use of comments is to compensate for our failure to express ourself in code.” – Bob “Uncle” Martin
- Why do some people “Get it” and others don’t?
- What are successful strategies for teaching beginner programmers?
- What is a good way to practice programming?
- How can good programmers learn different programming languges so easily?
- Just what are programming paradigms?
- How do programming languages change your programming?
Learning to code is not an easy thing! The biggest favor you can do for yourself is to start your journey with purpose. This post will help you set out on the right path.
Learn how to turn your favorite open-source project into a personal tutor.
“Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live.”
Easy advice, but how do you do it?