4 ms·
This is not about being "hard". Python is, actually very hard... except you don't know it well, and mistakenly think it's easy. You probably had never seen mo
by crabbone 3y ago
This is not about being "hard". Python is, actually very hard... except you don't know it well, and mistakenly think it's easy. You probably had never seen more than half of the functionality available in the "standard" library, i.e. you don't even know it exists, for example. Now, add to this that there isn't really one Python. There's a succession of similar languages, all called Python. 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?
There are also different ways things can be hard. Some things are hard to understand once -- and then once you understand, no extra effort is required. You just go around knowing it. Some things could be hard because nobody can explain them to you, and you will be running up against the wall trying to figure them out. Some other things are hard because they are always in flux. You think you've understood them, but the next moment someone is pulling the carpet from under you, and you have to start understanding them all over again.
I still remember my disappointment, for example, when after second semester of automata theory, we ended up constructing "mini machines" -- short sequences of instructions that could be combined to build bigger programs. And then we went straight to Java. There was no continuity. Nobody cared or even could explain how, if you wanted to build from the first principles could you get Java. The step between "mini machines" and Java was never explained. There was no explanation for why should Java have such and such feature, or what would have happened if it hadn't etc.
People are masters of reconciling inconsistencies, and not in a good way. When something doesn't make sense, people will masterfully invent some cooked-up nonsense to replace the real explanation. And this is the case for most CS majors. When you ask them questions about basic things about their trade, what you hear back is some laughable excuse of an answer. We have several generations of programmers today who grew up with this nonsense, internalized it, made it into a cult. Python owes its popularity, in great part, to these generations of programmers with missing foundations, lacking ability of critical thinking which led to bizarrely distorted view of the world.
- alpaca128 3y ago> 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.
- crabbone 3y ago> None of those things matter to a beginner 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.
- alpaca128 3y ago> 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.
- jppittma 3y ago
- dragonwriter 3y ago> But, can you tell in which version object of "module" type gained all the attributes of their alleged superclass -- "object"? As someone who's day job is mostly Python, not off the top of my head, but I could probably find out if it was ever relevant to my work (finding information about Python is quite easy, which is one of its social strengths), which it would almost certainly not be, because in normal use of Python modules, it doesn't matter. > How many facts like this one do you think exist? Trivia that's irrelevant to most use of the language? Lots. So what? That doesn't make actual use hard. > I still remember my disappointment, for example, when after second semester of automata theory, we ended up constructing "mini machines" -- short sequences of instructions that could be combined to build bigger programs. And then we went straight to Java. There was no continuity. Nobody cared or even could explain how, if you wanted to build from the first principles could you get Java. The step between "mini machines" and Java was never explained. I can see why that might, to some tastes, make that course of study intellectually unsatisfying, especially if one both had an obsesssive need to see the whole picture but not the drive to do the obvious work laid out, implicitly, fior the student, but it seems like a non-sequitur when discussing whether or not Python is hard.
- lenkite 3y agoPython is just the untyped world's C++. It is based on TMTOWTDI.
- vitiral 3y agoThese things bug me too. Civboot.org is my project to try and rectify it.
- silent_cal 3y agoOf course it's hard to completely understand Python inside and out. There are probably only a few dozen people in the world who do, or a few hundred max. And that's because for the vast majority of people it's completely unnecessary. If you want to go deeper then you're welcome to, but a new programmer is just going to get bogged down in unnecessary details if you try to introduce new concepts when he's just starting out. It's like saying the average PC user should understand the inner workings of GUIs. Makes no sense.