(This is another thing I found myself writing on Quora and wanted to keep. The question was “Does Python have any scalability limitations?") “Scalability” is a term people like to throw around, but the less specific you are as to what you mean by it, the less substantial the answers will be. It is not a simple linear measure on which languages can be given some numerical score. Languages and their implementations do have certain inherent performance characteristics, but in order to understand their relevance to your needs you have to get specific about your needs.
“I’m a PHP programmer and I want to check out this Django thing. What should I do?” I’ve been seeing this kind of question pop up more and more, and I have a few answers. First-hand experience as well as many conversations with developers online have led me to the same conclusion: the curious person behind such a question should be encouraged and assisted. (I’ll call that person “Pat” for the rest of the post, for convenience and conscientious gender-neutrality.
In 2007, I took a whack at learning Haskell as my Language of the Year. It was an educational experience on more levels than I had expected. I didn’t get as far with the language as I might have hoped, but I did have the essential mind-opening experience of dealing with a purely functional, “lazy” language. My approach and style in my primary day-to-day language (Python) changed in a positive way.
The latest This Week in Django podcast, out today, has an interview with me. I really enjoyed talking with Michael and Brian, and hope I didn’t come off sounding too dorky (or long-winded – I haven’t yet listened to the show, but based on the timestamps in the show notes I could probably use an edit!). I think they do a very good job with the show, and in fact I think that the structure Michael came up with – Tracking Trunk, Branching & Merging, Community Catchup, Tip of the Week – is one that other open source projects would do well to emulate in their news missives.
After the frameworks post I kept thinking about this. Of course any generalizations I make are heavily colored by my own direct experience, but the progression seems to go along these lines: Make static web pages. Make modular pages using simple includes (in SSI, PHP, ASP, or what have you). Make pages with more involved functionality (form submissions to database, basic CRUD). Get sick of re-building dynamic stuff for every project; write your own kinda portable library or framework.