Django
Once again, no, not that one, this one! Though I am interested in the former, I'm writing about the latter. I've been toying with the idea of learning Python for a long time. I've used a number of projects built with Python (Trac, plurk, Darwin Calendar Server (okay, I never got that one to work...)) and have generally been impressed. Beyond that, I like the idea of learning a language that's used in so many areas. Beyond the web, Python is used to run desktop and server applications, in 3D tools such as XSI, in games, in your toaster (little known fact: if your toaster routinely burns your pop-tarts, it's most likely running PHP. Time to get a new toaster.)
My biggest problem with learning any new language or tool is my lack of imagination. I need a problem to solve if I'm going to try out different solutions. Thing is, there are so many good solutions out there already, it can be difficult to get motivated to spend time reinventing the wheel. Of course, if everybody thought that way, we'd still be driving around on square wheels, wouldn't we? So, now that Django, a popular web application framework for Python, has reached 1.0 status, I'm going to sit down and try to learn it.
Python is often touted for its ease of use, short learning curve, and widespread usefulness. I've been reading Dive Into Python off and on for about a year, and the core of the language does seem pretty straightforward (though it took me ages to "get" tuples - maybe it's the name? It sounds like a brand of fruit preserves.) Still, Java is also fairly straightforward in theory, but it's the library that overwhelms me. The sheer number of available classes is monumental, and Python isn't much better, from what I can tell. I'm not saying it's a bad thing to have a wealth of available libraries out there, just that it can be daunting for the newbie. Python's standard library is quite large, but it's also fairly well thought out, and with the power of the interpreter and introspection, it's fairly easy to explore on your own. That, coupled with good documentation makes Python very attractive.
I work mostly with ColdFusion and Flex. Flex (ActionScript) is a statically-typed language, whereas CF is not. Still, I tend to do type checking in my CF functions and actually like the statically typed approach in ActionScript. So, for me, Python's dynamically typed nature is not that big of a plus. It's nice and all, but I just haven't run into a situation where it'd be that much easier using a dynamically typed language versus a statically typed one. Still, it does mean Python code tends to be smaller and less cluttered, and since it's an interpreted language, it does give you a lot of power to mess with things at runtime.
Back to the main point (and title) of this post, I've decided to stick with what I know, web applications, and that's why I'm going to try and make Django my gateway drug to Python. I'm hoping I can put together a working, mildly interesting site using it, and get to know the language along the way. Maybe, just maybe, I'll get hooked, and who knows what will happen then?