It must have been the influence of a few brilliant pythonist friends (particularly Lawrence and Valentino), but over the last few weeks I’ve been dusting off my Python skills.
While in my opinion it’s not as elegant as Ruby in terms of language design, Python has better implementation (it’s faster and its libraries are usually better). After being exposed to the brilliance of Ruby for such a long time, I was expecting a different reaction, but writing Python code again turns out to be a pleasurable experience. If you are shopping for programming languages, I highly suggest learning both Python and Ruby. Python documentation is excellent as well, with the tutorial and Dive into Python being two great starting points.
Python has a few nice web frameworks, but I’ve fallen in love for Django. This is an amazing framework similar to Rails, but with a few different design principles. The differences between the frameworks are mainly due to the fact that they were born in different environments (Django was developed as part of a newspaper online, while Rails grew out of Basecamp). The Web has plenty of comparison between the two, so I won’t debate the usual flames here. I’ll simply state that I like what I’m seeing and that the developers clearly know their stuff very well.
A few things that I particularly like:
- Applications can be plugged and unplugged in one or more projects in no time;
- A typical project has a very clean structure with only a few files and folders;
- The Admin interface that’s provided “for free” is very handy for most web applications;
- Internationalization support is excellent;
- Django is relatively fast and well optimized in terms of queries and interaction with the supported databases;
- The template system allows designers to define the UI without having to know how to program in Python. This is a key point. DHH has the opposite philosophy: “My perspective is that designers won’t be creating templates from scratch anyway. Not unless they more or less become programmers.”. I disagree. I recently worked with a brilliant artist, who is a talented Web designer but did not have any experience with Ruby or Rails, and this affected the “agility” of development because she couldn’t just focus on her job, she had to get a bunch of Ruby/Rails skills through out the process;
- Django documentation is well written and above all much better organized than that of RoR;
On the other hand, Ruby’s syntax and Rails’ magic make the code more readable, but Django/Python code looks pretty good anyways, so it’s not such a big concern.
Speaking of programming languages, lately I’ve shown quite an interest in Haskell and Erlang. With these we can really speak of paradigm shifts, but time is a constraint therefore I’ve only spent enough time to master the basics of Haskell, and enough to whet my appetite with Erlang. At least for the moment, I doubt I will have a chance to go too in depth. Nevertheless I highly suggest them as well, at least to those who have already programming experience and are not afraid to take on new challenges.
For the moment I’ll focus on Ruby on Rails and Django.
If you haven’t done it yet, give Django a shot, following this nice tutorial.