> But, can you tell in which version object of "module" type gained all the attributes of their alleged superclass -- "object"? How many facts like this one do you think exist?
None of those things matter to a beginner, what's important is minimizing friction, so they can actually learn programming without having their curiosity rewarded with a flood of compiler errors. Python is fantastic in that regard. No need to define a main function, no need to care about signed/unsigned int, printing out the contents of an array or dictinary directly is a single statement that won't just output a heap address, etc.
And when they learn about more advanced stuff they will understand why many languages do things differently, and Python will still be very useful for small scripts and prototypes.
That's where you are wrong. Beginners don't know that these things matter to them. But they very much matter.
> so they can actually learn programming
But they won't. They will become the "water from the toilet" idiots. Whatever they learn how to do will have no value, if they don't know how to do it well. Accidentally I saw this article today about how US military lowered IQ requirements for draftees during the Vietnam war, and how people with low IQ were five times as likely to die. You are suggesting to do thing wrong in hopes that it's somehow if you do it fast, nobody will notice? -- hell no. We already have armies of programmers who believe in strict static typing or in object-oriented programming. This will just add more idiots to their ranks.
> That's where you are wrong. Beginners don't know that these things matter to them. But they very much matter.
Could you specify why they matter for a beginner?
Because I've been using Python for quite a while and I can't answer your previous question about what specific Python version did that subclass attribute change. I think by the time such a detail comes up a "beginner" is already comfortable enough with the basics to learn about it. But in Python those basics tend to be more straightforward and riddled with less boilerplate and redundant syntax than in many other languages, which is nice because getting slowed down by those things when learning is frustrating.
> You are suggesting to do thing wrong in hopes that it's somehow if you do it fast, nobody will notice?
I'm suggesting that reducing friction in the first phases of learning programming is a worthwhile improvement and that the choice of language matters in this regard, nothing else. I didn't say a word about learning an entire language or learning programming up to the point which you call "knowing how to do it well".
> We already have armies of programmers who believe in strict static typing or in object-oriented programming. This will just add more idiots to their ranks.
Am I reading this correctly that you think relying on strict static typing is for idiots? Because I made the experience it's very helpful for maintaining code, in addition to other best practices of course.
They're not redundant and frustrating when you're a beginner. The repetition is good for you, and things still feel novel rather than repetitive and boring.
> But they won't. They will become the "water from the toilet" idiots.
This is, IME, not a function of what language people learn with first (ot second or...) but of their personality and desires. Most people who learn programming learn it as a means to an ends (often the latter is a paycheck) and will learn only as much as feels like a good payoff for the effort in that context. This isn't the fault of the language they start with, its just human nature.
You can't fix that things you thibk everyone should know about programming, and should want to know, actually don’t make sense to bother learning given most people’s actual utility function by using a different first language.
I think that for teaching, you can go too far and eliminated too much friction. In python in particular, there's all this type stuff going on under the hood that's absolutely critical in understanding what the output of your program is going to be, but nowhere in that program is it explicit what that type information is.
It's easy enough to keep track of that in your head once you've mastered the concept, but for a true beginner, I think
int x = console.nextInt();
String operation = console.next();
int y = console.nextInt();
is probably better suited for helping you get your bearings than having to figure out why you have to cast x and y after doing
None of those things matter to a beginner, what's important is minimizing friction, so they can actually learn programming without having their curiosity rewarded with a flood of compiler errors. Python is fantastic in that regard. No need to define a main function, no need to care about signed/unsigned int, printing out the contents of an array or dictinary directly is a single statement that won't just output a heap address, etc.
And when they learn about more advanced stuff they will understand why many languages do things differently, and Python will still be very useful for small scripts and prototypes.