3 ms·
If you know anything about programming, skip this book. If you don't know anything about programming, also skip this book. It gives you drills without explainin
by dsego 12y ago
If you know anything about programming, skip this book. If you don't know anything about programming, also skip this book. It gives you drills without explaining anything. My SO started learning with this book and I could see the book only caused confusion. She completely misunderstood how functions and function invocation work. And his way of teaching boolean logic is to memorize truth tables, wtf?
- joshuapants 12y agoI agree. I suggest the Head First series by O'Reilly. They are much more beginner-friendly and the teaching method is based on research and not some crufty old belief that learning should be "hard."
- brudgers 12y agoThe pedagogy of Learn Python th Hard Way is called 'Direct Instruction'. It has been successful for teaching the very rudiments of diverse subjects. It falls flat once applied to teaching creative intuition or abstract conceptual reasoning. That's why Learn Python the Hard Way is targeted at beginners. Page 4 of the Shaw-Hanselman interview transcript discusses direct instruction. http://s3.amazonaws.com/hanselminutes/hanselminutes_0407.pdf http://s3.amazonaws.com/hanselminutes/hanselminutes_0407.pdf Out of curiosity did your SO learn Python and if so what resources worked particularly well?
- dsego 12y agoShe is now taking an introductory edX course (Introduction to Computer Science and Programming Using Python).
- brudgers 12y agoIs that the Norvig course where the Python interpreter is in the browser?
- hgsigala 12y agoI took this course. It used Idle when I did it. Got a very high percentage but still do not know how to do much with python. Learned how to use the basic, how to compute Big O, but not really how to "make" anything.
- puranjay 12y agoI felt the same. It was good for the basics, but lost me when it came to objects and classes and more creative parts of programming. I tried out a few Ruby classes just for the heck of it, and with Ruby, somehow things fell into place.
- brudgers 12y agoMatz's happiness is closer to mine than Guido's dictatorship and Python is not the language of my soul, either. Though as a card carrying condescending know it all I find Lisps most attractive.
- las_cases 12y ago> She completely misunderstood how functions and function invocation work. How can that be? I remember learning about functions such as f(x) = ax + b in the fifth grade if I am not mistaken and learning about functions in programming was extremely natural. I studied programming in high school taken from the very basic and nobody had troubles with how functions worked. It was so math like that it was simply a non-issue. I am really interested to understand what the problem was and how did she figure it out eventually. > And his way of teaching boolean logic is to memorize truth tables But isn't Boolean algebra based on exactly that? Isn't this the pillar field covered by the mathematical logic, how can it be wrong?
- dsego 12y agoShe understands function on a theoretical level. But keep in mind, she knows nothing about the cpu and jump commands. So, there was no intuition about functions being pieces of code being stashed somewhere for later use. That the interpreter would read a call and jump to that piece of code and send arguments to it. Instead, she developed her own theory of the interpreter reading a function definition and searching for calls in the code. The book did nothing to develop a healthy intuition about the flow of the program. From the book: > Learning logic has to come after you do some memorization. I want you to do this exercise for an entire week. (http://learnpythonthehardway.org/book/ex27.html http://learnpythonthehardway.org/book/ex27.html) Why would you need to memorize that not true == false? All of the others can be deduced by simple reasoning. One example: not (True and False) True and False is False not (False) is True Instead of teaching people this (basic algebra), he recommends spending a week memorizing stupid tables? The same thing with spending first ten chapters having people write print statements with convoluted string interpolations. String interpolation is a hard concept to grasp for beginners. Unpacking variables before learning about objects, introducing what he calls "commands" like raw_input(), before even mentioning functions. I could go on and on.
- ForHackernews 12y agoI see what you're getting at, but when you're talking about a high-level language like Python your comments about the CPU and jump commands seem really off-topic. You don't need to know anything CPU instructions or memory management to write competent Python (because that's all handled automatically) and knowing about them doesn't necessarily help you have a better intuitive understanding of Python code (because again, lots of stuff is happening under the hood automatically).
- mekoka 12y agoAh, anecdotes... my nephew is learning from this book and loves it.
- chucksmash 12y ago> And his way of teaching boolean logic is to memorize truth tables, wtf? That seems like an odd thing to single out. I took an "Intro to Logic" course years before I did any CS courses and truth tables were very much used. I believe that they helped ease students not accustomed to thinking precisely about logical propositions into that mode of thought. Why rely on students' intuitions about ambiguous natural language constructs when we can be explicit and also provide an early lesson on the precision required by machine languages?