Hacker News new | past | comments | ask | show | jobs | submit login

Programming and bit fiddling are different. One is a logical analysis and breakdown to simple elements while the other is a method of implementing that breakdown in a specific manner.

Student's inability to understand this is their own failure and ignorance.

As to the topic at hand, in JS, those ideas of higher-order functions which don't exist in C (to any meaningful extent) are the primary means of abstraction. I've seen very many C++ or Java programmers think they can handle JS just fine. It's never too long before those functional concepts they considered useless (or even worse, were never taught) begin to haunt them.




All I wanted to point out is how legacy computer use[1] shapes your understanding, and how candid introductory courses can bounce against that like a rubber ball.

[1] growing with computer as a user, what amaze you is what you can perceive : gui, games, external devices. Which are all designed to amaze. When you get to know how computers are made, your first desire is to reproduce these things. Abstraction, expressiveness aren't on your map yet.


> Abstraction, expressiveness aren't on your map yet.

Not only that, there are multiple levels of abstraction to fully grasp everything.

For some people thinking in the abstract way of computing is already too much.

Then those think they have mastered the basic concepts of computer abstractions like loops, decisions, data structures, there is the next level of meta-abstractions.

Meta-abstractions used to manipulate the said abstractions to fully mold the whole computer system like clay. The same way mathematical abstractions reason about the common man mathematics.

Very few are able to move between abstraction levels, and those that do forget how it was their view of the world before they fully grasped it.


Agreed. It's similar to music where you can reach proficiency with scales, and then stop thinking of them as rules but play with them as you see fit.

I believe that first the algol genealogy suffers from the ~difficulty of crossing metalevels, secondly, the people behind these languages were able to do so and see the language as a vehicle, a mean, not an end. But beginners see the finger, not the moon and end up thinking in terms of builtin constructs. Lisp being already unrelated to any machine, and with the serendipity of sexp easy homoiconicity you see swim in this universe of abstraction levels.

> Very few are able to move between abstraction levels, and those that do forget how it was their view of the world before they fully grasped it.

I enrolled Coursera MOOC teaching scheme and sml, watching many students being emotional (anger, despair) about interpretation (especially when circular) reminded me of myself in college. The worst part is that the best I could say was "keep trying, you will understand". I wanted to tell them about the beauty and the freedom you feel but our minds were too separate and my understanding not good enough yet.


> I've seen very many C++ or Java programmers think they can handle JS just fine. It's never too long before those functional concepts they considered useless (or even worse, were never taught) begin to haunt them.

And nowadays they cannot runaway as functional programming concepts begin to infect their languages as well.

They are left with:

- stay in the past, hoping to retire before being forced into newer versions of their languages

- learn and embrace FP and get to discover how OOP and FP can work together

- try to jump to other languages that are still friendly to old school developers




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: