Yes, I know, Python’s been around forever. I’ve even dabbled with it a bit over the last few years. To be honest though, I never really gave it a fair chance. By that, I mean I had never used it to tackle a large enough problem that it’s ease-of-use would shine.
I’ve been working on a dynamic content generator for Oyster.com over the last two weeks, and Python has shined in spades. From database access, to string manipulation, to error handling, Python is a just plain better experience than C++.
Even though I knew higher level languages, C/C++ (yes, I realize they’re different) have been by languages of choice for years. They were lean, fast, and powerful in the hands of a skilled coder. It doesn’t help that my professional background is mostly embedded. When I moved to the web world with Oyster.com, our backend servers were built in C++. Quite a nice transition to me. Different domain, but familiar tools. Now that I’m getting quite comfortable with the world of web requests, database queries, and the like, C++ seems a bit archaic.
As a die-hard lean-coding nut, C++ still has a place in my heart, but I view it now more as a special case tool, no longer my default go-to. I’m hooked on interpreted languages, and love that I can get programming tasks finished in literally one-fifth the time, and with a more stable result. Handling all of the nuts and bolts, ala C++, is really asking for trouble once the string and pointer handling get tricky. It’s not always the languages fault, but the fact that so much control is available make premature optimization quite tempting on a first pass write.
With Python there’s plenty of room to chose best-case algorithms, but the simple fact that it’s an interpretted language pretty much screams “Use our libraries first! Your version of a built-in will probably suck!” Problem solved. It’s no longer a free-form clay sculpture, but something more resembling Legos. That’s a good thing when you want to get things done fast.