If you want to learn how to write computer programs, one of the first steps is to choose a language. There are a huge number of them out there now, and if you’ve been on the internet for any length of time, you may have heard of some of them. Several of the articles that I’ve read for people who want to begin learning programming are particularly unhelpful on this score, because, apparently the enlightened view is that what language you should learn depends on what you know already, and what you want to do. Someone who does not know a programming language may not be in a good position to answer this question and get on to the important part of their learning.

I’m currently learning Java. My reason for learning Java is because it is a language that I have heard about a lot, and I therefore assume it is popular, and because in a number of half-understood articles and websites I’ve read, I seem to understand that I can do some of the things I most want to be able to do using that language, or, at worst, some other language that uses a very similar syntax. And also because I enjoy Stanford’s CS106a course, made available on YouTube.

Another language that is currently in the top three of possibilities for a good language to learn early on is Python.

Here is a website that makes the case for Python as a first programming language:


On this page there are the following fascinating observations about why everyone should learn programming:

… Anyone who uses a computer to do any significant authoring, whether it be for a website, a spreadsheet, a database, or a traditional programming language, is essentially engaged in a form of programming. Thus, ordinary computer users can become better users and consumers of computer technology by learning how to program, in the same way that the average car user will be a better driver by learning more about how their car’s engine works.

This is not the traditional computer science or engineering perspective. The implicit assumption in traditional computer science is that students are aiming to become software engineers, or want to be involved on a daily basis with the construction of large software programs such as operating systems, databases, or compilers. These are the bread and butter tools of all programming, and are certainly things that software engineers need to know about, but in the new world of programming not all programmers want to be, or in fact need to be, software engineers. Everyone does programming, in the same sense that everyone drives a car. Every day, web developers write mark-up, or a few lines of scripting code (in addition to doing many other things that do not look anything like programming or computer science). System administrators need to write scripts and master the dozens of options for installing and configuring networks and software. Business people use spreadsheets that look very much like a graphical form of programming. Databases and web search engines have query languages that, even if they are not full-blown computation schemes, can be seen as a limited form of programming. Many complex application packages even come with their own scripting languages.

If we agree that essentially all students should learn to program, then the question is what to teach them in their first programming course. …

If you take this understanding of programming as an essential skill for being effective in today’s world, and consider also the observations from my previous post on the subject, then programming, and perhaps Python as a programming language in particular, looks like an essential tool also for thinking and learning.

Let me take just one example. I take for granted that we agree that understanding a number of mathematical ideas is essential to being effective in the modern world. This is true whether you are working on your own to produce a technical or artistic product, or whether you are working for an employer. It isn’t enough to read or listen to someone talking about a math concept, to learn it you have to do it. You have to apply the formulas, you have to work through the algorithms. But perhaps you would understand the formulas and algorithms even better if you could explain them to someone else? Perhaps certain formulas would be more useful if you could run through the steps much more quickly?

“The Art and Science of Java” by Eric S. Roberts

The text for the programming course I’m in the middle of is “The Art and Science of Java,” and in the first few chapters the book gives readers programming projects that deal with concepts in mathematics that I was never introduced to in school. Things like the Fibonacci sequence, factorials and the mathematics of combinations. None of these are very difficult in terms of the steps it takes to produce them. Just adding and multiplying a certain number of times. The programs that implement them are extremely short, smaller than this paragraph.

As I see it, knowing how to write a program is the same kind of skill as the ability to use a calculator or adding machine. An older generation would consider using them equivalent to using a slide rule. Writing your own programs can enhance not only the speed of your calculations, and the scope of mathematical ideas you can use, but also your understanding, as you translate what you know of a process into instructions and terms that the computer can use to produce an answer. As long as we are all going to be carrying around multimedia, GPS-enabled smart phones with touch screens, voice recognition or full QWERTY keyboards, we may as well be able to use automated math and logic to help us answer questions about our world.

Categories: Uncategorized
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: