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 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).
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.
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.
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.
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 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).
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.
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.