Daily Archives: December 18, 2009

Why should you learn to write programs?

This is the first section of the first chapter of a new book project I am playing with called “Python for Informatics” which is a remix of the book “Think Python” by Allen B. Downey. Comments welcome.

Writing programs (or programming) is a very creative
and rewarding activity. You can write programs for
many reasons ranging from making your living to solving
a difficult data analysis problem to having fun to helping
someone else solve a problem. This book assumes that everyone needs to know how to program and that once
you know how to program, you will figure out what you want
to do with your newfound skills.

We are surrounded in our daily lives with computers ranging
from laptops to cell phones. We can think of these computers
as our “personal assistants” who can take care of many things
on our behalf. The hardware in our current-day computers
is essentially built to continuously as us the question,
“What would you like me to do next?”.

Our computers are fast and have vasts amounts of memory and
could be very helpful to us if we only knew the language to
speak to explain to the computer what we would like it to
“do next”. If we knew this language we could tell the
computer to do tasks on our behalf that were reptitive.
Interestingly, the kinds of things computers can do best
are often the kinds of things that we humans find boring
and mind-numbing.

For example, look at the first three paragraphs of this
chapter and tell me the most commonly used word and how
many times the word is used. While you were able to read
and understand the words in a few seconds, counting them
is almost painful because is is not the kind of problem
that human minds are designed to solve. For a computer
the opposite is true, reading and understanding text
from a piece of paper is hard for a computer to do
but counting the words and telling you how many times
the most used word was used is very easy for the
computer:

python words.py
Enter file:words.txt
to 16

Our “personal information analysis assistant” quickly
told us that the word “to” was used ten times in the
first three paragraphs of this chapter.

It is this very fact that computers are good at things
that humans are not so good at is why you need to become
skilled at talking “computer language”. Once you learn
this new language, you can delegate mundane tasks
to your partner (the computer), leaving more time
for you to do the
things that you are uniquely suited for. You bring
creativity, intuition, and inventiveness to this
partnership.