4 ms·
Python itself is already too much abstraction. Everyone interested in programming should learn the basics all the other stuff is built out of: Hardware, binary
by iammyIP 9y ago
Python itself is already too much abstraction.
Everyone interested in programming should learn the basics all the other stuff is built out of:
Hardware, binary, assembly, C
That doesn't mean to get full on embedded hacking, it means to get some basic grasp of how C maps to the hardware.
Then it doesn't matter how to continue learning, everyone individually has to find out what kind of further abstraction suits best.
Too much programming is taught from the top abstraction layer just to make awful soft more quickly.
- TeMPOraL 9y agoI agree about starting from the basics[0], because programming - as a practical art, not theoretical mathematics - is just about making computers do things. Commanding computers to do things is straightforward - everything else in programming is just managing complexity, which is, in my opinion, best taught as solutions to problems you encounter when simpler methods start to get out of hand. -- [0] - With a proper, simplified dose of hardware, basic amount of binary, maybe some assembly. Not sure about C itself, but something on that level is the right basic abstraction.
- oliwarner 9y agoI disagree. Teaching works best when your pupils can see what they're making quickly. The more interactive and iterative a process can be, the less bored they get. Many tools call this gamification but you really don't have to attribute scores to things for people to enjoy a chunked process more. But with C, a complete novice spends most of their time getting beaten up by boilerplate (how do I build and run and debug this?) and syntax issues. You missed off a semicolon. You didn't declare this in the right place. You haven't allocated memory for that. All important things for C developers but to a novice it's all just jibberish error messages and take a long time to find and fix. By comparison, abstracted languages give you a decent REPL environment which can be ideal for teaching programming basics. Every layer of abstraction you remove is another layer the novice has to handle. If you just want to get a foot in the door, and keep things fun, why bother with that? They can learn about that stuff tomorrow. (I'm not saying this stuff isn't important to know, just consider the order that you teach it in.)
- heavenlyblue 9y agoLet's reverse this problem: we go back and try to send a manned mission to Moon. This implies a huge amount of vertical engineering and research. But instead of saying that the government is going to pay for the project upfront - we say that all of these scientists and engineers are going to be paid after the mission had been completed. How many of them would be motivated enough to go through the whole vertically-planned project themselves; even if the project is itself quite inspiring? Same with software - I don't think that starting on the highest levels of abstraction is "not to get bored really quickly". It's the case where you can quickly try and see what programming is without spending another 5 years trying to understand every possible intricacy of a modern computer. Call it "time resource risk management". More importantly, most of the time if you're young but are already employed - you're being told what exactly you should do anyway.
- dagw 9y agoThe big question is why is this person trying to learn programming. Is it because they hope to spend the next 20-30 years of their career as a professional programmer or is it because they have some problems in their chosen field of study that they hope that knowing a bit of programming will help to solve.
- heavenlyblue 9y agodagw, true. That's exactly the path I had taken - but I had enough experience as a pure hobby to begin with to know exactly what I was choosing. For example - I ended up in a deep learning department just a few months before it became a thing in the media. I knew it was beneficial for me due to a huge amount of statistics involved, even if I would later not get a job doing this. But if I did not know it - I would probably have taken another subject as it appeared too theoretical and didn't seem to be in any way truly relevant today (and there were alternatives as theoretical and as good). How many students had any idea which subjects to pick for a study in such a pragmatic way? I was not aware how lucky I was at the time, but later on I realised that I actually were. It's great to say something along the lines of "just study for 5 years and it's probably going to be good for you, since education is generally good". But then you start meeting people with Ph.Ds from mediocre universities who had spent a good chunk of their lives on something that landed them a mediocre job and that's where I believe the problem with modern system lays. Smart dedicated people will probably find they way anyway. What about somebody who isn't an architect but who could become a great builder solely because he's not so interested in the industry on a higher level, but is capable given the circumstances?
- xelxebar 9y agoI'm mildly surprised that HN is discussing, debating and defending opinions on pedagogy here. Naive questions that initially pop into mind: * In teaching programming, what metrics do we want to look at? Student performance on XYZ test is one, but these metrics have known drawbacks. * Where can a curious non-teacher go to find high-quality empirical data about the efficacy of various curricula, etc? * How much do things like class size and demographics affect the kinds of curricula we want to use?
- iammyIP 9y agoPedagogy may aswell be a form of art, as any humanity science, weak on the proven side, big on individual impact. If your classes are fun and engaging, i would say it's good teaching. If it's a monotone snoozefest, rather not so, even if your content is super competent on paper. Hard to measure, better to feel individually. Feynman for example was a good teacher, fun and engaging even on the most difficult topics, it's almost more a theatrical monologue piece and engaging to watch or listen to. https://www.youtube.com/watch?v=f27bh4CIky4 https://www.youtube.com/watch?v=f27bh4CIky4