On Wed, 23 Dec 2009 10:55:19 -0500, J Kenneth King wrote: > Steven D'Aprano <st...@remove-this-cybersource.com.au> writes: > >> On Mon, 21 Dec 2009 11:44:29 -0500, J Kenneth King wrote: >> >>> A programmer that >>> lacks critical thinking is a bad programmer. The language they use >>> has no bearing on such human facilities. >> >> That's nonsense, and I can demonstrate it by reference to a single >> programming language, namely Python. >> >> For many years, Python had no ternary if operator:
[...] > But did the lack of ternary encourage Raymond to become a bad > programmer? No, but Raymond started off in a position of being an excellent programmer. A single buggy idiom lead him to be slightly-less excellent than he otherwise would have been. How many buggy idioms would it take to lead him to become a mediocre coder, if he was unable to change languages? Because Python is generally an excellent language, the harm done by one or two misfeatures is minor. But less excellent languages encourage coding styles, techniques and idioms that encourage the programmer to write poor code: either complicated, baroque, unreadable code; or slow inefficient code; or buggy code. To avoid starting a flame war, I will avoid mentioning PHP. *cough* Sometimes you know what you need to do to write non-buggy code, but because covering all the corners are just Too Damn Hard in a certain language, you simply lower your expectations. Error checking is tedious and hard to get right in some languages, like C and Pascal, and hence even good programmers can miss some errors. Different languages encourage different mind-sets in the programmer: C encourages the coder to think at the low level of pointers and addresses, and primarily about machine efficiency; Java encourages the use of big object hierarchies and design patterns (it's hard to write lightweight code in Java, so everything turns into heavyweight code); Perl encourages cleverness and code-golf (writing a program in as few lines or characters as possible); Haskell and Lisp encourage a heavily abstract approach that often requires an elite coder to follow; Forth encourages you to think like Yoda. [...] > Good tools make all the difference in the world, I'm not arguing that. You appear to be arguing against that. > Just that the tools don't use us; we use them. Nobody said that tools use us. > Programming in Python > doesn't instantly make me a better programmer. No, not instantly, but I would argue that after many years of coding in Python you will be a better programmer than after the same number of years of coding in PHP or Basic. It also depends on what you mean by "better programmer". Some languages value cleverness above all else. Python is not a language for writing amazing, awe-inspiring hacks that work where nobody but the author can work out why. This is why there is an Obfuscated C contest and an Obfuscated Perl contest but no Obfuscated Python contest -- it wouldn't be anywhere near as awe-inspiring. So one might argue that the best C and Perl coders are better than the best Python coders, but the average Python coder is better than the average C and Perl coder. (I suggest this as a hypothetical, and do not wish to defend it scientifically.) -- Steven -- http://mail.python.org/mailman/listinfo/python-list