Kingoftheinternet comments on Rationality Quotes February 2013 - Less Wrong
You are viewing a comment permalink. View the original post to see all comments and the full post content.
You are viewing a comment permalink. View the original post to see all comments and the full post content.
Comments (563)
Introduction to Learn Python The Hard Way, by Zed A. Shaw
If anyone feels even remotely inspired to click through and actually learn python, do it. Its been the most productive thing I've done on the internet.
This makes me wonder how much my writing skills would improve if I retyped excellently written essays for a while.
Benjamin Franklin's method of learning to write well is summarized here. His version:
I would expect the answer to be "not much, compared to writing and publishing horrible, horrible fanfiction".
I'd like to see a study result on that.
In Art History class I learned that a common way for great artists to learn to paint was by copying the work of the masters. I then asked the art teacher why it was a rule that we couldn't copy other famous historical paintings. I can't remember her exact answer but the times I haven't followed her advice and went and copied a great painting, I seem to have learned more. But again, I'd like to see a study result.
I'd like that too.
It makes sense intuitively, but if I can't find any evidence either way this'll probably seep into my subconscious now and at some point in the future I'll just assume it as true and adopt strategies based on that assumption, which might be suboptimal.
Your grammar and spelling might improve. I think you've matched the wrong things in your analogy.
I'm not sure what this has to do with rationality quotes, but the extract basically convinces me to avoid the guy like the plague. The underlying premises seem to be something like:
The remaining choice when someone knows enough to feel a book is too simple for them is that they know everything.
They should discard all that they know - empty before you fill - so they can learn from someone with more knowledge than them.
Go learn lisp... -shrug-
It seems incredibly bad advice to give to someone who thinks a lot of what's in a book's too simple for them to essentially yell at them to shut up and knuckle down. As compared to say, pointing them to a few things that are generally not covered that well in self-learning and direct them to a more advanced book.
Agreed. I'm actually not sure if what I should take away from that introduction is "This material seems easy but isn't, so go through everything carefully even if you think you understand it" or the opposite: "If this book seems easy, it's not advanced enough for you and you already know everything; so read something else instead."
I took it as meaning the second. There's even a recommendation as to what else to read; a book on Lisp.
I strongly suspect that's just him being an ass. If you're finding the concepts in his book too simple, there are plenty of other concepts you could be learning about in computer science that would expand your ability as a programmer more quickly than just picking up another language.
If you want to become a better programmer after learning the basics of a language, I recommend you go and pick up some books on the puzzles / problems in computer science and look at how to solve them using a computer. Go and read up on different search functions and path finding routines, go and read up on relational databases, and types as an expressive system rather than just as something that someone's making you do, go and read up on using a computer to solve tic-tac toe... Things like that - you'll get better a lot faster and become a much better programmer than you will just from picking up another language, which let's face it you're still not going to have a deep understanding of the uses of.
Which isn't to say that there's no learning in picking up another language. There is, I don't know any good programmers who only know one language. But it's not the fastest way to get the most gain in the beginning.
Once you have that extra knowledge about how to actually use the language you just learned. Then by all means go and learn another language.
If you just know Python, then you know what we'd call a high-level imperative language. Imperative just means you're giving the computer a list of commands, high-level means that you're not really telling the computer how to execute them (i.e. the further away you get from telling it to do things with specific memory locations and what commands to use from the command set on the processor the higher level the language is.)
C will give you, the rest of the procedural/imperative side of things that you didn't really get in Python, you'll learn about memory allocation and talking to the operating system - it's a lower level language but still works more or less the same in the style of programming. Haskell or Lisp are both fairly high level languages, like Python, but will give you functional abstraction which is a different way of looking at things than procedural programming.
But... even if you were going to recommend a language to learn after Python, and you knew the person already knew about stuff like relational databases and search functions and could use their skill to solve problems so that you weren't just playing a cruel joke on them, and even if you were going to recommend a functional language: deep breath ... it wouldn't be Lisp, I think.
Lisp has a horrible written style for a beginner. It does functional abstraction, it's true enough - and that is a different way of thinking about problems than the procedural programming that's used in Python - but so does Haskell, and Haskell programs don't look like someone threw up a load of brackets all over the screen; they're actually readable (which may explain why Haskell actually gets used in real life whereas I've never seen Lisp used for much outside of a university.) Haskell also has the awesomeness of monadic parser combinators which are really nice and don't show up in Lisp.
Lisp's big thing is its macros. I can't think of much other reason to learn the language and frankly I try to use them as little as possible anyway because it's so much easier to misuse them than it is with functions.
So, yeah. I can see where you're coming from but I don't think he's really on the level there.
Would you care to share your reason for the downvote? I promise not to dispute criticism so you don't have to worry about it escalating into a time-sink.
I can't, because I wasn't the one who downvoted it. (I can see why one might think so, since the comment was in response to my comment).
Your comment thoroughly explores possible routes for improvement in ability in a novice programmer who has knowledge of Python; probably to a far more detailed level than the author of the original "go read a book on Lisp" comment. I saw nothing it it that requires a downvote, but no particular benefit in continuing the original debate (debating a comment more thoroughly than the person who originally made it, in the absence of the person who originally made it, is only of particular benefit if at least one person firmly agrees with the original statement; while I think I can see where it came from, it's a matter of indifference to me).
Of course, if your goal is to learn Python but you find Zed's book too easy, "Read a book on Lisp" is probably not suitable advice.
I think the quote's main function is to warn those who don't know anything about programming of a kind of person they're likely to encounter on their journey (people who know everything and think their preferences are very right), and to give them some confidence to resist these people. It also drives home the point that people who know how to program already won't get much out of the book. I quoted it because it addresses a common failure mode of very intelligent and skilled people.
To me, it seems like a horribly hostile approach to teaching people, which comes across as saying, "In order to learn anything from me, you must abase yourself before me." Which is to say, "I am incapable of conveying useful information to anyone who does not present abject submission to me."
But then, it's possible that I'm just hearing Severus Snape (or the class of lousy teachers he is an imitation of) in the "so you think you know everything?" bullshit.
This quote was enough for me to take Learn Python The Hard Way off my reading list. I had previously heard good reports about it but this gives me the impression that the book is likely to be far too opinionated and dogmatic for my taste. Mind you I have reason to suspect the same of Python itself.
In case you'd be interested in a second opinion: I made it through twenty-one exercises of Learn Ruby the Hard Way a couple months ago, got bored, and have retained almost none of it. I'm probably not the target audience, but that doesn't bother me so much; on the other hand, if I'm not retaining stuff after faithfully going through Hard Way's copybook approach to language acquisition, that doesn't speak well for its efficacy among people who are. Unless for some reason programming experience makes me less likely to retain new languages? But that's (a) counterintuitive, and (b) contrary to data I've seen for natural languages, at least.
In any case, I don't think I'll be returning to the series.
Python is just a programming language. Insofar as it can be said to have a personality, that personality is an accommodating and inoffensive one. The community is pretty good, too; the concentration of assholes is unremarkable, and places like /r/learnpython are quick to help out beginners with questions.
My understanding having completed parts of it is that it's aimed at someone who doesn't know what a programming language is. If you do know, you're probably better off with another book (and you're also probably better off with something other than Python, but that's my personal opinion clashing with Python's opinions).