If you are reading this book and flipping out at every third sentence because you feel I’m insulting your intelligence, then I have three points of advice for you:
Stop reading my book. I didn’t write it for you. I wrote it for people who don’t already know everything.
Empty before you fill. You will have a hard time learning from someone with more knowledge if you already know everything.
Go learn Lisp. I hear people who know everything really like Lisp.
For everyone else who’s here to learn, just read everything as if I’m smiling and I have a mischievous little twinkle in my eye.
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.
Benjamin Franklin’s method of learning to write well is summarized here. His version:
A question was once, somehow or other, started between Collins and me, of the propriety of educating the female sex in learning, and their abilities for study. He was of opinion that it was improper, and that they were naturally unequal to it. I took the contrary side, perhaps a little for dispute’s sake. He was naturally more eloquent, had a ready plenty of words; and sometimes, as I thought, bore me down more by his fluency than by the strength of his reasons. As we parted without settling the point, and were not to see one another again for some time, I sat down to put my arguments in writing, which I copied fair and sent to him. He answered, and I replied. Three or four letters of a side had passed, when my father happened to find my papers and read them. Without entering into the discussion, he took occasion to talk to me about the manner of my writing; observed that, though I had the advantage of my antagonist in correct spelling and pointing (which I ow’d to the printing-house), I fell far short in elegance of expression, in method and in perspicuity, of which he convinced me by several instances. I saw the justice of his remark, and thence grew more attentive to the manner in writing, and determined to endeavor at improvement.
About this time I met with an odd volume of the Spectator. It was the third. I had never before seen any of them. I bought it, read it over and over, and was much delighted with it. I thought the writing excellent, and wished, if possible, to imitate it. With this view I took some of the papers, and, making short hints of the sentiment in each sentence, laid them by a few days, and then, without looking at the book, try’d to compleat the papers again, by expressing each hinted sentiment at length, and as fully as it had been expressed before, in any suitable words that should come to hand. Then I compared my Spectator with the original, discovered some of my faults, and corrected them. But I found I wanted a stock of words, or a readiness in recollecting and using them, which I thought I should have acquired before that time if I had gone on making verses; since the continual occasion for words of the same import, but of different length, to suit the measure, or of different sound for the rhyme, would have laid me under a constant necessity of searching for variety, and also have tended to fix that variety in my mind, and make me master of it. Therefore I took some of the tales and turned them into verse; and, after a time, when I had pretty well forgotten the prose, turned them back again. I also sometimes jumbled my collections of hints into confusion, and after some weeks endeavored to reduce them into the best order, before I began to form the full sentences and compleat the paper. This was to teach me method in the arrangement of thoughts. By comparing my work afterwards with the original, I discovered many faults and amended them; but I sometimes had the pleasure of fancying that, in certain particulars of small import, I had been lucky enough to improve the method or the language, and this encouraged me to think I might possibly in time come to be a tolerable English writer, of which I was extremely ambitious. My time for these exercises and for reading was at night, after work or before it began in the morning, or on Sundays, when I contrived to be in the printing-house alone, evading as much as I could the common attendance on public worship which my father used to exact on me when I was under his care, and which indeed I still thought a duty, though I could not, as it seemed to me, afford time to practise it.
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.
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.
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.
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).
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.
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.
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).