Alan-Gauld

By Sudarshana Banerjee

Alan Gauld was an engineer with British Telecom for some 38 years. He is the author of ‘Learning To Program’ (Addison-Wesley), a widely popular book on programming, that has been translated into multiple languages, besides having a Web version, that has crossed two million unique visitors. That is not why you are reading about him here.

Over the last 14 years, Mr. Gauld has been answering questions on Python, as part of the Python community. He tries to respond to at least one thread a day; most days there are multiple questions which he will address. How many developers has he helped? “I’ve solved at least 6,000 queries”, is Mr. Gauld’s rather modest estimate. The number could well de double. Could well be more than double…

The Python community plays a pivotal role in helping developers stuck with code. In return, the Pythonists, Pythonistas, and Pythoneers, get no monetary compensation. Just the satisfaction of helping people, and a problem well solved.

We feature Mr. Gauld on TechTaffy to respect his contribution to Python, and as a homage to hackers like him, who help thousands and thousands of people, but remain mostly unsung heroes.

>>>How did you enter the world of programming? 

I started programming back in the 1970s, on the local university mainframe via a paper punch tape machine, in our high school as part of our Math classes.

Later at work as a telecoms technician I came across “stored program control” equipment which further piqued my interest. Eventually I took a degree in electronics and during summer vacation worked on a major programming task using C and the newly available IBM PC. After university, I found a job in IT working as a programmer, where I used many languages.

>>>What drew you to Python?

After playing with Perl and liking its power but not its syntax, I looked into Python at the suggestion of a colleague. I liked Python a lot. When I needed a language to use in my programming tutorial – originally written for two friends – Python became the natural choice.

>>>’Learning To Program’ started out as a Web-based tutorial, and is now a widely-read publication, both as an on-demand book and a Web tutorial. ‘Learning To Program’ has also been translated in multiple languages. How was the journey? What is the road ahead?

‘Learning To Program’ started as a “short” introduction to programming, for two friends who wanted to learn. I couldn’t find much on-line for complete beginners – everything expected you to know another language, usually C or Basic.

When I was writing, I expected the total content to be about 20-30 pages worth, but it quickly grew into something much bigger – currently around 500 pages of printout!

Around the same time I found the Python Tutor mailing list and started contributing. The two activities had natural synergy and I incorporated many of the common questions into my tutorial. Eventually some of my ‘students’ suggested turning it into a paper book and I approached a couple of publishers and was accepted at the third attempt. The process of publication, with its many review cycles, was extremely helpful in clarifying the  material and improving the writing.

The paper book is static however, so the Web version has moved on several stages and incorporated many more topics than the paper version and is more up to date.

I’ve now semi-retired and have more time to spare so hopefully I will finish off the update to Python v3 in the coming few months. I might even sound out the publishers about a second edition of the paper version.

Python

>>>What are some of the advantages/disadvantages of using Python?  

Python has lots of advantages. Its syntax is very powerful and compact while remaining easy to read. That’s incredibly important when you go back to a project after a long gap. It also integrates easily with other languages so its easy (relatively speaking) to integrate with other libraries and consequently there is a huge array of third party modules available.

The interactive prompt is a huge benefit too, similar to the famous Smalltalk workspace where you can quickly try out code snippets and interact with new modules. This makes informal testing and experimentation a natural part of the development process.

The fact that Python supports procedural, OOP and functional styles is also helpful. Those styles map to different programming problems and allows the programmer to freedom to pick the solution style that best fits the problem.

>>>Should developers use Python 2.7 or Python 3.x for their projects?

They should use the version that supports their solution. If they need a library that hasn’t been ported yet then they must use 2.7. Otherwise I’d say move to 3.x. But the similarities are greater than the differences and its not a big issue.

If I’m honest, I still use 2.7 for most things but that’s just because its the default on my Linux system. However, its worth pointing out that I primarily use Python as a testing/prototyping environment.

In most of the projects I work on I am the project architect and other people code up the final system, usually in C++ or Java. So my interest in Python, other than as a teaching language, is limited to fairly short, quick and dirty type programs rather than industry quality finished systems.

>>>You have been a prolific member of the Python community; ballpark how many user queries have you answered till date? Tell us a bit about the Python community please.

I’ve been involved with the Python Tutor mailing list for about 14 years now. Over that time I’ve contributed to at least one thread most days, usually more. So I guess its safe to say I’ve contributed to solving well over 6,000 queries maybe even double that.

The Python community in general is a very helpful one, with very little of the bitchiness I’ve found in some other places. Of course its not alone in that but it definitely helps.

Even guru level Pythonistas will pop up on the tutor list answering detailed questions in an approachable manner when the list regulars get stumped. And even the main Python list covers a wide range of queries in a pretty tolerant manner.

Its not a huge jump for someone to migrate from the tutor list to the main list after gaining some experience. The same applies to the Web site maintainers. I’ve had occasion to interact with a few of those folks and its always been very amiable.

>>>Going ahead, what do you think will be the most dramatic change in programming languages in the next five years?

Scripting languages like python are definitely in the ascendancy at the moment and ways of making them faster (I’m thinking of initiatives like Cython etc) will only help that. But I’m always hopeful that a new paradigm will emerge that changes programming significantly. Visual programming has been tried a few times and Scratch is currently popular, if something like that an be developed but aimed at pro’s rather than kids it might be interesting.

The other trend I see is the emergence of higher level specialized languages like R and Rebol. These include general purpose constructs but are really targeted at a particular problem space (stats and networking for the examples above) and they are almost going back to the original idea behind scripting languages like awk and the Unix shells. There could be a growth in those areas too.

>>> What would be your advice to programming newbies?

Write code and read about the theory. Don’t get hung up on a particular language, instead focus on the principles. Python is great but you can learn a lot from Lisp, Prolog, SQL and Smalltalk to name but four.

Write more code. Also debugging other people’s code can be a great learning exercise and Open Source provides great opportunities to have a go.

>>> Python apart, you spent a lot of time hillwalking. Could you tell us a bit about what that is, and how amateur hill walkers can get started?

Hill walking is what the British call hiking up mountains. Its a great workout for the heart and lungs and if the weather is clear you get great views too.

The summit of most UK mountains can be reached by walking, no ropes or climbing technique is needed just a string pair of boots and weatherproof clothing.

I usually recommend that beginners start of on a low to medium hill with a good track to the top. After a few of those try bigger hills and eventually read up on map reading and navigation before heading off track. Eventually you can head off pretty much anywhere and extend into the wilder areas of the world.

I’ve walked in the US and Europe and found my UK experience adequate except where you encounter jungles or glaciers or dangerous wildlife – we don’t have too many of those!

Editor’s Note: The Python programming language was developed in the late 1980s by a Dutch gentleman called Guido van Rossum. It is the main scripting language used at Google; other industry heavy weights who use Python include Industrial Light and Magic, NASA, SGI, Nokia, Quora, Disney, and IBM, just to name a few. Python is free to use, even for commercial products.