3 ms·
On one hand, I think that learning an easily-readable language like Python makes it easy to not worry about syntax and focus on actual CS concepts. On the othe
by SleekEagle 5y ago
On one hand, I think that learning an easily-readable language like Python makes it easy to not worry about syntax and focus on actual CS concepts.
On the other hand, there are a lot of CS concepts that go beyond algorithms, and I think understanding how e.g. C++ is written, precompiled, assembled, etc. is really valuable information.
It is sort of like the argument for or against starting with an IDE - training wheels on vs. training wheels off.
I supposed ultimately it comes down to your goals, but I'd love to hear everyone's thoughts!
- softwaredoug 5y agoFrom watching my son learn, basic concepts of programming have enough frustration built in, that I feel you really need to optimize the rewarding feedback loop aspects. Jumping to CS concepts is a bridge too far, and TBH, there's a lot of programming-literate jobs that don't need it.
- AnimalMuppet 5y agoI think I agree, but... I also halfway agree[1] with the point about "having to unlearn bad habits". Is there a language that gives beginners a fast reward feedback loop, and also guides them toward good programming habits (or at least does not teach them too much that they're later going to have to unlearn)? ----- [1] Only halfway, for a couple of reasons. First, there are different kinds of programming. If you learn imperative programming, with good habits, and then you switch to functional programming, you now probably have some bad habits - habits that are bad in the functional world, but were fine - even correct - in the imperative world. I don't think it's fair to call that "learning bad habits". At the same time, beginner languages can teach approaches that are bad habits in any non-beginner setting. (This criticism was often applied to BASIC. I'm not sure it's entirely true, but I suspect it's also not entirely false.) Second, learning good habits took me a decade or three. It took finding out why the simple things weren't good enough, by running into situations where they weren't good enough. But for a beginner, the simple things are good enough, because they aren't yet running into situations that expose the problems. (You don't tell a toddler that they need to fix their method of walking because it won't cut it at a basic training obstacle course.) All that said, I think there still is a place for not pushing them into blatantly broken approaches.
- YorkshireSeason 5y ago> understanding how e.g. C++ is written True, but why should you learn about this first? Better to get the fundamentals down first. Once you have that down, you can engage with accidental complexity like C++ compilation and linking details if and when needed.
- AnimalMuppet 5y agoThis kind of depends on your definition of "the fundamentals", though. Is that assembly, or lambda calculus? You could make a case for either one, but they give you very different ideas of where to start. C/C++ could be argued to be a compromise that kind of lets you look both ways. (That could be argued to be a virtue, or a fatal flaw...)
- fulafel 5y agoNot sure C++ knowledge is especially valuable compared to contemporary applications languages, a lot of people who used to do C++ in its heyday seem to have switched. There are various niches where it's still in demand of course.
- deleted 5y ago[deleted]
- jstx1 5y agoI think there's a better argument for C than for C++. There's probably some value in having to do something by hand and then seeing how much of that work isn't necessary when you move on to a higher-level language. The C++ specific stuff like the STL will probably be distracting for beginners.