This summer, I decided to spend time learning something new. During the year, I explore lots of different media-related applications. So I thought it would be interesting to learn how these apps are created – I tackled Python.
Python (named after the famous Monty Python comedy troupe) is an “easy-to-learn” programming language that is very popular – especially for web applications. It is also the most popular programming language at the university where I teach, with classes that number in the hundreds.
NOTE: After going through this process, I strongly recommend starting with a text book, then, exploring the extensive training resources on the web. Here’s the book I used.
“Easy-to-use”, like many things in life, is in the eye of the beholder. Basic elements can be picked up in a few hours. However, figuring out the assignments – especially if you don’t have a math background – can take a lot longer.
NOTE: I confess that when I was young I really enjoyed math. But it’s been decades since I’ve used anything other than simple arithmetic. That disuse quickly became very apparent.
The last time I did any serious programming was in the mid-1980’s, when I wrote an accounting and project-tracking system for advertising agencies. It was successful enough to be acquired by another company, which is quite flattering.
These days, I don’t expect to do any serious programming with my new-found knowledge – the bar is set much too high. Still, learning how to program helps me better understand how and why programs act the way they do. Programs can only behave the way their programming language allows them to behave.
What impressed me the most, during this learning process, is Python’s raw speed. I’m very comfortable using software and marvel at how quickly a spreadsheet can calculate a vast array of numbers or compression software can convert media from one format to another. All too often we take this speed for granted.
What Python allows me to do is to go past the interface and extensive error checking to see just how fast our computer systems really are today. Their inherent speed stunned me.
For example, I needed to open a file of one million records, count the records, then average a number contained in each record. The program took about eight lines of code. The result took less than a tenth of a second to calculate!
Since then, I’ve run other programs that show a similar speed. Systems today are blisteringly fast!
This made me stop and realize how much of our CPU time is spent drawing and updating interfaces. While I’m not advocating a return to Terminal and the command line, such as back in the “bad old days” of DOS or CP/M, this summer allowed me to understand much more clearly the benefits of learning how to program: speed and customization.
What this experience also taught me is that programming takes an idea, a philosophy, and makes it real. Before you can write a program, you need to clearly understand the problem you are trying to solve and the steps needed to solve it. Every effective piece of software has a clearly-articulated philosophy of how to solve a problem behind it.
Which, unexpectedly, brought me back to the world of media.
Every good film, television program or video has a good story behind it. A story that is clearly thought through before any production starts. While the specific steps may vary during production, the end-goal is fully in view the entire time.
Just like a computer program – the more time we spend planning at the beginning, the better results we’ll have at the end.
Smile… I didn’t expect my summer sojourn into computer programming to teach me more about media, but it did. I discovered that the two are more similar than I expected. Both are deeply technical. Both require significant practice to do well. And both require a clear understanding of the story/problem we want to present before any production work begins.
Cool.
One Response to When is a Program Not a Program?
Thank you, Larry. Informative — with an elegant twist at the end.