3 ms·
I 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 g
by oliwarner 9y ago
I 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?
- deleted 9y ago[deleted]
- sametmax 9y agoObviously you didn't have to teach to a lot of young kids. Cause teaching them the basics as you say won't keep them interested long enough.
- oliwarner 9y agoWas that meant for me? I'm for abstracted teaching. Let them accomplish complicated things with comparatively little theoretical understanding. Letting them sink their teeth into logic and algorithms is much more fun and engaging than sitting them down and giving them the memory allocation talk before their program crashes out because they sliced off the nul-ending from their char array.
- sametmax 9y agoWrong comment sorry.
- iammyIP 9y agoIt's not what you teach, it's how you teach - you can make any topic for any age exciting and fun as a teacher.
- iammyIP 9y agoYes and no, it's true that there is a lot of cruft in setting up a portable write-compile-debug cycle for C with often not very helpful error messages. On the other hand you could just use an online compiler in a browser. And demonstrate all the other fun stuff on a chalk board. People that really want to go low-level then can figure it out, since they learned the terminology and the basic principles behind. Most of the 'fun & exciting' is part of the teacher responsibility and how he/she/it teaches, as i would argue that the basics of how our stuff works is by default even more exciting than learning to use an arbitrary api of some one button click framework. The article points in the right direction, it's just not enough.
- jdmichal 9y agoHonestly, the decision of a first language doesn't even matter that much. Beginners need to learn how to program, by which I mean understanding and writing sequential logic. This is by far the biggest barrier. Without it, you get "wizard" programmers: Those who copy-paste magical incantations with no understanding of even the basic underlying logical flow. You can use any language to teach this, but it should absolutely be the primary focus for absolute beginners. And it really doesn't matter what you use, because even in C or C++ you should not be providing skeleton code with all the boilerplate and complete build scripts.
- xelxebar 9y agoI don't think it has to be one or the other. Myself, I often get confused by top-down approaches because I obsessively ask about "what's underneath" and feel disoriented by arbitrary-seeming machinery. Friends of mine on the other hand get confused when bogged down with details that are "unimportant" to them. It's a really difficult pedagogical task to create a curriculum that's helpful to a large swath of students all at once, and I don't envy teachers for that task.