What exactly is bad about this book for beginners...

What exactly is bad about this book for beginners? I've seen a large divide in people who either love to recommend it or love to condemn it? Is it really so bad that it suggests using python 2 in the current day? Is there something I am completely unaware of?

There's no reason to stick to Python 2 nowadays. The way he makes you stick to Python 2 is almost insult and patronizing. He offers no arguments. His sole argument is that some libraries aren't ported to 3 yet, but he doesn't name any.
My main gripe with it was the way he "teaches" you things. He just has you type random things and then barely explains what those things do. Later he just tells you to look it up online. The book also goes into useless things for someone who's just starting out (messing with web stuff).

I finished the book and was disappointed by my knowledge. Then I used "Starting Out With Python" and it was so much better. It follows the "explain concept, show example, a bunch of short tests to make you use the acquired knowledge" path. I also considered O'Reilly's huge book on Python, but that one was too big for me (I think it's THE definitive guide for Python). Use that one if you're a beginner who wants to learn almost everything Python related. "Starting Out With Python" is a nice middle ground.

Thanks for the reply senpai.

Bit off topic, but Python is a shit starter language that teaches you awful habits that are hard to unlearn later on while not giving you any knowledge about algorithms or anything computer related. I haven't read the book but I absolutely wouldn't recommend any beginner to learn python as their first language

The more abstraction layers you need, the worse of a programmer you are and python has just about as many abstraction layers as possible

Are you suggesting that I learn C senpai?

Advanced language constructs in Python shouldn't even be taught in beginner books.
Beginner books should focus on producing structured code, proper pretty-printing and being able to fucking read what you write.

Tuples, data structures, and all that jazz beyond JUST reading basic syntax common in all imperative-ish languages should be taught in a language agnostic book.

What would you recommend then?

I enjoyed the teaching style of hardway

I just did all the stuff in python 3 instead.

>abstraction makes you a bad programmer

go code your fucking assembly then you pleb
or better yet, fuck programming, hard code using physical components
but dont buy them, make them yourself from silicon for minimum abstraction

Sorry I am just an idiot trying to start with the basics of programming. I only recently installed linux and have been following the command line book to learn more about it.

If you wouldn't recommend this what would you recommend? I am too retarded for K&R C apparently.

What a plebeian. My applications are made up of a gang of monkeys trained to pass the input to another gang of trained monkeys. This process repeats itself until an output appears at the final gang of trained monkeys.
When the output is sufficiently wrong, we perform backwards propagation by hitting the offending monkeys with a cowprod.
That'll teach them to shit in my coffee.

You're conflating the usage of an OS with programming.
This is probably one of the most common mistakes made by people who essentially have no idea what programming even is.

No I don't mean that. I just mean I have recently decided to learn both usage of linux and programming.

>Advanced language constructs in Python shouldn't even be taught in beginner books.
>Beginner books should focus on producing structured code, proper pretty-printing and being able to fucking read what you write.
This is totally wrong, if you learn a language like Python at a superficial level it will give you bad habits and wrong ideas about the language that you'll have to unlearn. The best two beginners scripting language books to learn are "The Well Grounded Rubyist" and "Eloquent Javascript" (There might be a good Python book out there, I havent found one so far). Both these books start from the beginning with the in depth concepts that modern scripting languages use so you never waste time fighting the language and hating the language for no good reason. No one over the age of 10 should ever read any of Zed Shaws "XXX the Hard Way" books as they are total shit and just instruct the reader to learn by just using a lot of print statements and dont teach any language concepts.

Thanks for those recommendations. A lot of this is going way over my head but damn these books have some fanatically positive reviews from what I see.

Let me guess, you're the guy that tells them that "your first language is the most important one."
Here's the real damn truth: When you are performing the most basic of programming; control flow and structured code, you are not fighting the language. That is literally impossible, unless the language you are attempting this in happens to not be structured.

Attempting to teach anything beyond control flow and structure to a new programmer immediately ties them to a language. Your job as an instructor is to untie them. You teach them the relatively more advanced concepts using multiple languages by telling them to implement data structures and algorithms in those languages.

They eventually learn that there is a certain commonality found in all languages, and you can begin to teach them why programming languages are designed the way they are.

Once they reach that point, they're enlightened.

Do you know what people who only know one language are called? Code monkeys, street shitters, "unstable employment."

Yes

Honestly, C is your best bet if you want to learn a lot in the process.

K&R C has to be taken with a huge grain of salt, especially when literally the 2nd chapter (or whichever one it is with binary operators) uses undefined behavior to do some binary tricks and there's literally 0 explanation for what's happening. Good luck figuring that shit out if you're a beginner.

I'd only use K&R C as a source of exercises to do for practice and reference. Not much else. I'd skip the exercises in the binary operator chapter entirely.

Once you can confidently implement memcpy without consulting any tutorials or documentation I think you've reached the level above ~60% of people who claim to know C.

>His sole argument is that some libraries aren't ported to 3 yet, but he doesn't name any.

I will
>quandl is not working in 3
>sklearn is not

theres two, and they are important enough to stick with 2, at least if you want to make some money

>Let me guess, you're the guy that tells them that "your first language is the most important one."
>Here's the real damn truth: When you are performing the most basic of programming; control flow and structured code, you are not fighting the language. That is literally impossible, unless the language you are attempting this in happens to not be structured.
Youre obviously a fizzbuzzer whos major achievement in computing is installing Arch. A language like Ruby uses a lot of deep concepts in how all objects are pass by reference and how their behavior is defined by methods. These are things you can gloss over unless you sit and do fizzbuzz all day. I shouldnt just say fizzbuzzer, there are professional web devs with your level of understanding of the programming language who somehow make a living even if most their time is spent in a debugger.

senpai not everyone writes programs for the same reason, i write things in python vba or R and let the IT dept write it in C

>pass by reference is a deep concept
>the fact that objects have functions is a deep concept
The streets around your area must be littered in shit if you think that these incredibly basic concepts, taught during what are essentially the first days of learning any particular OOP language, are "deep."

Tell me when you finally learn about CPU pipelining, memory alignment, and message passing between cores.

>What exactly is bad about this book for beginners?
it's about python

>oooh I know what that means, huur, definition by behavior, late binding, I know what that, so ha ha
no, you dont really know what type definition by object behavior is vs static definition, you think you do because you heard someone say it

>Tell me when you finally learn about CPU pipelining, memory alignment, and message passing between cores.
now youre revealing your basement dweller understanding of CS

Sounds like your inferiority complex is taking over.
You're in your first week of your first year of CS and you somehow think that you know fucking everything just because you can eat and regurgitate a bunch of memes you saw on /dpt/. You're a prime example of being at the peak of mount stupid.

So any other recommendations for the babys first programming book?

When you find yourself at an advanced level where you're in a position to use those libraries, then "switching" to Python 2 won't be a problem for you. Again, that's not a reason to stick to Python 2 as a beginner.

No, He's suggesting you should learn assembly.

By the time you spent finding the best book, you could have already finished a chapter in any book. Next you'll spend days trying to find the best text editor.
Have fun bikeshedding.

Wow I am amazed to what lengths python fags will go to keep that fucking Python 2 corpse alive.

No there is NO reason for a beginner to go Python 2, don't contribute to this nonsense. Python 2 should be dropped completely.

lol, idiot

this is a good book for beginners OP

"Head First Java" is a really good first book for learning OO

I was going to use it, and was looking good, until I saw that this was Python 2

no thanks jeff