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?
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?
The most important skill of a true developer has nothing to do with writing code. Then what truly differentiates an excellent developer? Read how weeks of work could have been avoided by thorough analysis, spiced with a bit of laziness.