C++ was my primary programming language when my daughter was 3, and when I was growing bored and tired of convoluted, complex programming languages. Templates were new and exciting, or were they? I had used something similar in assembly languages years before this. Exception handling was a heated debate back then, when the forbidden GOTO was the only efficient way of localized error handling. There was no such thing as global error handling. Everyone was forced to write their own, passing codes or text or something to a hand written global error handler which performed errno.h lookups.
In short, lots of time was burned doing repetitive things in supposedly great languages. At least we all got paid to do it.
Then along came Perl. Perl rocked my world for many reasons. It was interpreted, so no long compilation cycles, hooray! It was very much like many of the FSF tools I had been using in UNIX for years. It was like the ultimate super sed/awk/grep tool, introducing new meta characters for things like whitespace. Hooray again! No more hours typing sed commands which check for one or more space, followed by one or more tabs, again followed by possibly more space characters, or some convoluted combination of space/tab/space…ARGH! Perl introduced this: ‘\w’, which caused me to have what seemed like an out of body experience, because I was so damned happy.
Then a person named Lincoln Stein wrote a perl module which made me quite a bit of contract money. It was called cgi.pm, and it was stunning. It allowed me to roll out CGI based web interfaces in week instead of months. I wrote many automation tools for AT&T, Lucent, Motorola, and many other companies, one after another, and loved every bit of it. I personally thanked Lincoln via e-mail, then started to pester him with questions, and did not hear back from him. But at least I was able to express my gratitude.
I was happy for a while. To me, Perl was no more convoluted than any other piece of UNIX scripting tool I have used before, so I adjusted well. But as new Perl modules started to appear, Perl started to be used for more complex tasks, which became a bit messy. Perl was still a procedural scripting language. Granted, any experienced developer can encapsulate with the best of them, and this is how procedural languages were kept under control. But it would be so nice to have a truly OO scripting language, many of us sighed.
Then along came Python. The best of all worlds, a byte-compiled scripting language, very OO, run time type checking, small, fast, robust, full support of OS and system calls, it had it all, in one neat package. It was love at first sight for me. I started using it for simple scripting tasks, such as directory walks, file searching, simple ten line scripts. I then started to learn TkInter, then WxPython, and before I knew it, I wrote a touch screen application in three months, entirely in one language. I no longer needed different tools, and wrappers, and interfaces from C to something else. It was all here, and the syntax seems almost intuitive. I once again started to find the fun in programming. Much like a long term relationship, we all need those reminders every now and then, so we can proclaim to ourselves “Ah, yes, NOW I remember why I fell in love with you in the first place”. Python was that catalyst for me. It really changed everything.
I now only program in Python. I have yet to find the need to use anything else. Even embedded systems support thin Python ports. Life is good, and I genuinely love the language and the tools I work with, warts and all.