Python! Here I come!

Life is full of surprises and irony. Or at least it looks so to me. Especially now.

It’s been more than two years since I planned to learn Python programming language. At first I really wanted to do so, but didn’t have any free time. Then I came across a couple of tasks at work that made me write a few patches here and there, but the complexity just wasn’t there and I didn’t learn anything beyond the simpliest things. Then a lot of time passed by and I forgot those simpliest things too.

Recently I found myself looking at Python code more often than I used to. But I still didn’t have to write any code. Just read and understand.

Then I had to write few more patches. Again, the complexity wasn’t there.

And so on and so forth.

Until today I realized that I have a somewhat complex project to implement and there is practically no choice of programming language. Hooray! I’ll finally have to learn to use Python!

P.S.: I’m glad I was saving up all those Python bookmarks.

The answer to “Why Not Python?”

Collin Park has written an article in four parts (one, two, three, and four) titled “Why Not Python?”. I’ve read through the first couple of parts and scrolled through the rest.

In all that text that passed in front of my eyes I haven’t found the answer to the question. I guess, it wasn’t actually the question after all then.

Well, in case you read asked yourself “Why Not Python?”, I’ll give one of the possible answers. Because it is too complicated. Python might do OK as the first progarmming language for those of you who want to learn programming concepts. But if you have a problem at hand that needs solving, Perl is the way to go in most of the cases.

Example. Collin Park uses the Sudoku game solver as one of the examples. Fine task. Nice one to learn how to program too. But if you just have a Sudoku game to solve (or a few for that matter), than it would be much faster to do it in Perl. Here is how.

  1. Navigate your browser to search.cpan.org.
  2. Type in “sudoku”, choose “Modules” and press “Search CPAN”.
  3. With this particular example, any module from the search result can be used. With other examples, you want really want to review the module description (one line that says what module does). So, this step is, choose the one module that seems to be appropriate for your problem.
  4. Install chosen module, by running cpan command from root shell and typing in install module::name (substitute “module::name” with the name of the module you chose in the previous step).
  5. Run perldoc module::name to see module documentation and example of used.
  6. Copy the code from SYNOPSIS are of documentation in your favourite editor.
  7. Save the file
  8. Run the script

Tada! You’re all done.

If it takes you more than 15 minutes, chances are – you are doing something wrong. Of course, your mileage may vary, but 15 minutes is somewhere near the lighthouse.

Dive into Python

Once in a while I need to write a couple of lines in Python. When that happens I histerically run around the web looking for some quick introduction or tutorial on the language. There are plenty of those, of course. But just to have something handy, I’ll put a link here to Dive Into Python. What is so different about this tutorial is that it is very practical. There are many examples of code and very little explanations and theoretical crap that everyone knows already or can guess from the code. Simply use table of contents and jump to the needed part, where example awaits for you. Great!

PHP, Zope/Python, and Perl

There is an article at kuro5hin.net called “Switching from PHP to Zope/Python“. This should provide for an interesting read for all those poor PHP souls.

As for me – I use Perl and I am not planning to change any time soon. There are two major bonuses in Perl for my programming tasks:

  1. CPAN – Comprehensive Perl Archive Network. This is a huge collection of modules that help me to avoid as much programming as possible. And that’s pretty much.
  2. Perl’s scalability to all sorts of tasks. I am using Perl for one-line long utility scripts, log analyzing, mail searching, graph building, database maintenance, web programming and anything else that pops up. The broadness of tasks makes PHP way underpowered and Java way too complex. There are tools that might come handy (like Python), but why change if Perl works for me?

Said that, I am familiar with other languages, since it’s not rare at all that I need to patch someone else’s code. PHP being a widely used language for web development comes to my hands pretty often. My Python familiarity is more on the system level and GUI programming.