3 ms·
People with high skill and experience levels often are not well-suited to designing introductory courses for beginners in their field, and this seems to be an e
by photochemsyn 5y ago
People with high skill and experience levels often are not well-suited to designing introductory courses for beginners in their field, and this seems to be an example:
> "My hope is that programming courses in higher-education settings (and high school settings!) will move away from imperative and even object-oriented programming towards a more functional approach."
It reminds me of past debates over how to teach mathematics - maybe start with set logic and group theory instead of addition, subtraction, multiplication, division? Clearly set logic and group theory underlies those subjects so the students should start there...
It's a bit over the top. Should welders have to be applied physicists? Some knowledge of arc plasma might be helpful, but at the introductory level, certainly not. If you want to devise a new method for welding titanium or something, well maybe you need that level of knowledge.
I also tend to turn off when people talk about how much they love or hate this or that language. Languages are just tools, and selecting the right tool for the job is what experience teaches you - although a new tool might be better for a certain task, so experience alone is not enough. Also, I started programming learning C++, it worked out well enough, even if the first six months were a struggle. From there you can easily look at assembly or look at languages without direct memory access via pointers, and you've at least got a grasp of why memory management is important. I feel lucky for having started this way, vs. starting with a higher-level abstraction language like Python, JS, etc. I can't even imagine starting with a pure functional language like Haskell, that would have been pretty hopeless for a beginner without any experience with recursion.
As far as object-oriented vs. functional, hybrid approaches seem useful, for example classes with methods that avoid side effects, etc.
- agumonkey 5y agoI often wonder if there could be some minimized instance of both practical, engaging exercises that are also aiming at abstracting principles (like teaching numbers not only with tables but also trying to break them down into bases, showing different gearing mechanisms to count in base 2,3,5,9 .. just to open the mind)
- _y5hn 5y agoReminds me of another paradox. Often the people who struggle the most with Haskell, are those with extensive background in programming in non-functional languages. Those without prior experience may grasp the concepts faster and better, while also being less confused. This is incidentally why someone would recommend learning Haskell first, because after that you really can learn anything, but maybe won't have to. I personally tend to err on the right tool for the job, or just avoiding programming when not strictly necessary.