OK, playing devil's advocate, and without believing everything I write ...
Although the article might be saying something interesting, I, for one, kept tripping over the grammar.
To start with, although it's gaining ground, this doesn't make sense:
I write python, I could care less about pythonic
^^^^^^^^^^^^^^^^^
The original, meaningful idiom is "I couldn't care less." He wants to say that he cares so little that it is not possible to care less. He wants to say that he could not possibly care less. He couldn't care less.
Instead he says that he can care less, and therefore he does care, even if it's only a little. which is not what he wanted to say.
And yes, I know about linguistics. I know the arguments about language use, idioms, etc. I'm just saying that what he said, when interpreted carefully and in some cultures (including in British English) what he said isn't what he meant.
Secondly:
Recently I saw a post in the Tornado group,
saying it's use of libcurl is not pythonic.
He means "its" use. "It's", when correctly used can be substituted with "it is". In this case it can't, so it shouldn't be used. He means the possessive.
My point here isn't to diss the writing, but to tell you, the reader of my comment, that some of your audience will, on occasion, fail to listen to you properly if you get grammar wrong. It's not fair, and you may think it's unreasonable, but life isn't fair. Anyone who says otherwise is selling something.
However, to deal with the technical content:
If being pythonic means reinventing the wheel,
in python, I’m pretty confident I’m going to
stick with the opinion I’m not going to worry
about being pythonic.
This is a false dichotomy. It's perfectly possible to be Pythonic without re-inventing the wheel. All (and I agree that this is a big "all") it takes is to learn the language properly, in its own context, rather than writing Perl, C, Bash or Javascript "in Python." The dedicated "Real Programmer" can write ForTran programs in any language. Not learning the language "properly" means not taking the opportunity to expand your mind, but instead, to stick with Blub, and write Blub in whatever syntax you happen to be using.
I’ll worry about commenting and documenting what I do
in order for other developers to follow behind me.
This is the important bit, but style comes into it as well. If someone is writing in Javascript style, but Python syntax, it's harder to understand. Sometimes sufficiently harder to make a real difference.
I think I now have one of those first questions
for when I interview developers for my business,
when I get to that point. "How much focus do you
put on making your python, pythonic?"
It's the wrong question. The question is - can you write Python as Python. That will actually tell you something about the programmer's range of skill.
By why ask them anything as all? Why not just see if they can program?
Not that long ago my initial response to this comment would be to be annoyed about being judged on grammar. However, maybe because I'm a bit more mature, or I've just been working so much on writing documentation the past couple years, I see your point 100%. It also helps that you've stated so eloquently. I'll be sure to make edits later this weekend, I wrote that article quickly on my lunch break.
The point I may didn't expound on enough was when I spoke of reinventing the wheel. What I mean is the reluctance within the Python community to use existing tools, and instead turning to rewrite them in Python. The libcurl reference is a perfect example. Curl provides a wealth of functionality, but some would prefer calling it's use not pythonic.
As for interviewing, there's more to a developer than just the programs they write.
Re grammar, thank you for an excellent response. People often say that language isn't nailed to the floor with one right way of saying things, but that misses the point. Communication is important, and if a writer doesn't get things right, some of the audience will be lost.
I'm intrigued by the emergence of the "I could care less" expression. Here in the UK people look at it, stunned, and are confused as to what the author meant. It's like "The proof is in the pudding," an expression that clearly derives from something that makes sense in a stand-alone context, but which now can only be understood as an idiomatic, atomic phrase, and which doesn't mean what it actually says.
But that's language, which is weird.
With regards using existing tools, I largely, but not entirely, agree with you. It would be useful if languages had clean containment methods/techniques for wrapping existing tools rather than (re-)implementing facilities, but that's a general discussion.
And I agree that there's more to a developer than just the programs they write. That, however, partly makes my point and not yours. Whether they expend effort writing "Pythonically" is, to my mind, a much smaller point than whether they document well, communicate clearly, design effectively, and have a sense of balance.
But that's a minor issue. I suspect we are, in truth, more in agreement than not.
"Not Invented Here" is far from unique to Python. I've seen it first hand in Ruby (where the number of genuinely unique things in the ::Net namespace that deserve to be natively implemented is, let's say, not large), Clojure (where people want "Capistrano, but in Clojure" or "Chef, but in Clojure") and Python ("Oh woe is me, where is Python's Rake?"). I very much doubt any language community is without these sorts of discussions.
It drives me up the wall. So much wasted effort. And don't get me started on packaging systems...
If he couldn't care less about his code being pythonic or not why does he bother ranting about it?
BTW, before loosing it's meaning pythonic didn't mean reinventing the wheel. And every other PHP/JQuery script kiddie picking up python these days uses the term pythonic freely after writing their first url shortener based on Django when they've found out they could do stupid things with special methods that seem cool coming from PHP.
7 comments
[ 3.0 ms ] story [ 31.0 ms ] threadAlthough the article might be saying something interesting, I, for one, kept tripping over the grammar.
To start with, although it's gaining ground, this doesn't make sense:
The original, meaningful idiom is "I couldn't care less." He wants to say that he cares so little that it is not possible to care less. He wants to say that he could not possibly care less. He couldn't care less.Instead he says that he can care less, and therefore he does care, even if it's only a little. which is not what he wanted to say.
And yes, I know about linguistics. I know the arguments about language use, idioms, etc. I'm just saying that what he said, when interpreted carefully and in some cultures (including in British English) what he said isn't what he meant.
Secondly:
He means "its" use. "It's", when correctly used can be substituted with "it is". In this case it can't, so it shouldn't be used. He means the possessive.My point here isn't to diss the writing, but to tell you, the reader of my comment, that some of your audience will, on occasion, fail to listen to you properly if you get grammar wrong. It's not fair, and you may think it's unreasonable, but life isn't fair. Anyone who says otherwise is selling something.
However, to deal with the technical content:
This is a false dichotomy. It's perfectly possible to be Pythonic without re-inventing the wheel. All (and I agree that this is a big "all") it takes is to learn the language properly, in its own context, rather than writing Perl, C, Bash or Javascript "in Python." The dedicated "Real Programmer" can write ForTran programs in any language. Not learning the language "properly" means not taking the opportunity to expand your mind, but instead, to stick with Blub, and write Blub in whatever syntax you happen to be using. This is the important bit, but style comes into it as well. If someone is writing in Javascript style, but Python syntax, it's harder to understand. Sometimes sufficiently harder to make a real difference. It's the wrong question. The question is - can you write Python as Python. That will actually tell you something about the programmer's range of skill.By why ask them anything as all? Why not just see if they can program?
The point I may didn't expound on enough was when I spoke of reinventing the wheel. What I mean is the reluctance within the Python community to use existing tools, and instead turning to rewrite them in Python. The libcurl reference is a perfect example. Curl provides a wealth of functionality, but some would prefer calling it's use not pythonic.
As for interviewing, there's more to a developer than just the programs they write.
I'm intrigued by the emergence of the "I could care less" expression. Here in the UK people look at it, stunned, and are confused as to what the author meant. It's like "The proof is in the pudding," an expression that clearly derives from something that makes sense in a stand-alone context, but which now can only be understood as an idiomatic, atomic phrase, and which doesn't mean what it actually says.
But that's language, which is weird.
With regards using existing tools, I largely, but not entirely, agree with you. It would be useful if languages had clean containment methods/techniques for wrapping existing tools rather than (re-)implementing facilities, but that's a general discussion.
And I agree that there's more to a developer than just the programs they write. That, however, partly makes my point and not yours. Whether they expend effort writing "Pythonically" is, to my mind, a much smaller point than whether they document well, communicate clearly, design effectively, and have a sense of balance.
But that's a minor issue. I suspect we are, in truth, more in agreement than not.
It drives me up the wall. So much wasted effort. And don't get me started on packaging systems...
Cute how the CGI background is deliberately out-of-focus too. Very effective use of the technology.
BTW, before loosing it's meaning pythonic didn't mean reinventing the wheel. And every other PHP/JQuery script kiddie picking up python these days uses the term pythonic freely after writing their first url shortener based on Django when they've found out they could do stupid things with special methods that seem cool coming from PHP.