I am already working on some software in Python but I'm having one of those days where I step back and reflect just to make sure I'm not spinning my wheels. I know that Twitter launched with RoR because it was fast to build. Then they almost moved into another language in 2008 because of scalability issues. This has caused me to step back and introspect for a moment to make sure I'm heading down the right path. I've read in some tutorials and other places that Python is "a great first language" or a "nice beginner language" as though it's not capable of larger tasks. I look at it as Python can do what Java or ASP can but with about 1/4th of the code, not to mention I don't have to build or compile, etc. I've read that Java runs quite a few times faster than Python which is important of course, but then I read everywhere that hardware keeps getting cheaper and there are projects like Unladen Swallow by Google to make Python faster. Should I be concerned or is this just the remnants of Java developers?
To answer your title, "yes". Python scales all the way from a beginner's language to running massive enterprise systems.
Python is a fine beginner language. In fact it's almost an ideal beginner language because it's fairly "pure" in the sense that it's mature, readable, well-designed and consistent so you can concentrate on learning concepts without learning exceptions to syntax.
Python is also used on larger systems. You can write Web apps, desktop apps, cloud apps (eg Google App Engine), etc on it. It's very general purpose.
Your question seems to imply that a language is either a beginner language or robust, which is a strange assertion as a language can be both and arguably robustness is a useful trait in a beginner language.
As for Twitter, yes they did switch from Ruby on Rails to Scala, something the blogosphere was quite abuzz with for awhile. It's a somewhat controversial decision because it seemed to be rooted in lack of performance of a homegrown message queue. But anyway, it's a long story.
You should ignore such things when you're just learning something. They're irrelevant distractions.
I know a company which uses Python for front-ends and C++ for backends, communicating via FastRPC protocol (seznam.cz). This is the largest national portal/freemail/fulltext/... serving milions of users daily, so I'd say it's robust enough.
Python is perhaps the best language to learn programming. And Python is a fine language even if you have several years of experience, because Python is well designed and not limiting. Really big applications (facebook) are build with the (ugly) language PHP which plays in the same performance league as Python. But the bottleneck of big web applications is typically the database and not the frontend.
So the answer is: it depends. You can be happy with Python for your life. Depending on the kind of software you develop you may need a language with more performance like Java. If so, I would look at Scala. Scala is similar concise to Python but statically typed and much faster, but Scala itself is more complex than python. Scala gives developers more liberty to do things as they want, what can be great but can also lead to cryptic code.
There are plenty of ways of making Python faster, but that doesn't matter. For the majority of code, what matters is how long it takes to develop it, not how long it takes to run... and a language that is clear and simple enough for beginners, but sufficiently expressive for large systems and flexible enough to stay out of the expert's way is a great thing for keeping the development time under control.
I'd recommend Python to someone just learning to program, and I'd recommend it to a seasoned programmer looking for a new language to learn. I'd recommend it for anyone in between, too.
You said it yourself: Google is behind Python, and that's a sign that it's not just a toy language.
If you are planning to do web stuff with python, just go ahead and have fun. Language choice is hardly ever the bottleneck in web apps. Just to quote Rasmus Lesdorf (creator of PHP):
"However, he continued to say that raw execution speed was "not a significant factor" for many applications. "Even if you double the execution speed of something that is 10% of your overall request cost, that is only a 5% overall improvement...."
Usually, the bottleneck is somewhere else, in your database or the network latency. That being said, python is just great for almost anything (except number crunching and animation).
But even these limitations will go away soon. There are many ongoing projects aimed to speed up python by a large margin. For example, Pypy's jit is already up to 9x faster in some benchmarks (see this graph: http://buildbot.pypy.org/plotone. ).
Unladen Swalow is also getting a lot of attention lately, since it seems to be merged into Cpython soon. Google is behind this project and for good reasons (Youtube is almost entirely written in python, and it is the second largest website after Google itself).
My advice: If you like Python, just enjoy it. It's a great language and a pleasure to use. Your concerns about speed or scalability will be addressed by the time you are profficient with it and making significant things.
Luis
Google and Nasa use Python. That alone should address all your concerns: if Youtube can be built using a language, you can rely on it.
Youtube is the second largest website today (only surpassed by Google). It is written almost entirely in Python. http://digg.com/programming/YouTube_is_almost_entirely_written_in_Python So I guess that Python scales well.
Note that speed is a quality of language implementations that is not constant in all situations. Python is slower than other languages in many situations, but is very fast in others (for example string handling and I/O). And guess what? The web is a whole lot of text...
Also note that many people are working hard to making it fast (google "pypy jit" or "unalden swallow"). So the situation may improve very soon.
And finally, think about what you want to do with it. Do you think you are about to create a killer web site or application that needs to scale up the wazzo anytime soon? Like, say, Youtube??
I'd say that 95% of the times, Python is fast enough and, if slower, the difference is negligible. Only in very specific situations its speed is a problem (such as 3d graphics applications or highly numeric computations), and even in these cases, there are tools to make it faster (psyco, pyrex, cython, shedskin, numpy, etc).
In all the other situations were speed is not a problem, Python gives you a HUGE productivity advantage.
It's like talking about cars: you can choose between a formula 1 Ferrari which is super fast ( like c++ ) or a BMW which is no near as fast as a Ferrari, but which is still quite fast for the intended use, which is driving to work and going out on week ends.
You may see that even when the Ferrari is much faster than the BMW, it has many shortcomings: only the driver can use it, there's only one seat, no luggage, no air conditioner, no radio, it's uncomfortable, noisy, and it's only good for race speeding.
On the other hand, the BMW is comfortable, you can carry your luggage and your family, it's a pleasure to drive, it's silent, etc, etc... and it's way faster than you need!
Which one should you choose as your every day car?
Luis