The Python Paradox
Paul Graham
August 2004
In a recent talk [1] I said something that upset a lot of people: that
you could get smarter programmers to work on a Python project than you
could to work on a Java project.
I didn't mean by this that Java programmers are dumb. I meant that
Python programmers are smart. It's a lot of work to learn a new
programming language. And people don't learn Python because it will
get them a job; they learn it because they genuinely like to program
and aren't satisfied with the languages they already know.
Which makes them exactly the kind of programmers companies should want
to hire. Hence what, for lack of a better name, I'll call the Python paradox: if a company chooses to write its software in a comparatively esoteric language, they'll be able to hire better programmers, because they'll attract only those who cared enough to learn it. And for
programmers the paradox is even more pronounced: the language to
learn, if you want to get a good job, is a language that people don't
learn merely to get a job.
Only a few companies have been smart enough to realize this so
far. But there is a kind of selection going on here too: they're
exactly the companies programmers would most like to work for. Google,
for example. When they advertise Java programming jobs, they also want Python experience.
A friend of mine who knows nearly all the widely used languages uses
Python for most of his projects. He says the main reason is that he
likes the way source code looks. That may seem a frivolous reason to
choose one language over another. But it is not so frivolous as it
sounds: when you program, you spend more time reading code than
writing it. You push blobs of source code around the way a sculptor
does blobs of clay. So a language that makes source code ugly is
maddening to an exacting programmer, as clay full of lumps would be to
a sculptor.
At the mention of ugly source code, people will of course think of
Perl. But the superficial ugliness of Perl is not the sort I
mean. Real ugliness is not harsh-looking syntax, but having to build programs out of the wrong concepts. Perl may look like a cartoon
character swearing, but there are cases where it surpasses Python conceptually.
So far, anyway. Both languages are of course moving targets. But they
share, along with Ruby (and Icon, and Joy, and J, and Lisp, and
Smalltalk) the fact that they're created by, and used by, people who
really care about programming. And those tend to be the ones who do it
well.
(*) Footnotes
[1] Audio of the talk, also attached to this post http://origin.conversationsnetwork.org/Paul%20Graham%20-%20Great%20Hackers.mp3
Sylvia Else <sylvia@email.invalid> writes:
Then we're doomed, because Python is appallingly slow. Not even Moore's
law can save us.
Well, then what language do you use for what kind of projects?
BTW: Maybe you are new to this newsgroup? So let me inform
you that if you post to comp.lang.python, sometimes, a computer
set up by a mailing-list person will make a copy of your post and
automatically post it to his Python mailing list, which possibly
also might be published in the Web - all without your consent.
Well, then what language do you use for what kind of
projects?
Well, then what language do you use for what kind of
projects?
XPost: comp.lang.python
Stefan Ram:
Well, then what language do you use for what kind of
projects?
Julia is faster and expressively more powerful than Python.
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 388 |
Nodes: | 16 (2 / 14) |
Uptime: | 05:23:33 |
Calls: | 8,220 |
Calls today: | 18 |
Files: | 13,122 |
Messages: | 5,872,261 |
Posted today: | 1 |