Hacker News new | ask | show | jobs
by DanielHB 17 days ago
I think you are underestimating how hard it is for average joe to learn programming basics. I remember a fellow in high school that just could not accept that = in programming is assignment not an equation (like in high school math)
4 comments

I'd like to believe I have an inkling, having done a fair bit of teaching.

Still, imagine how hard other skills are to acquire. How much civil engineering can you learn in two weeks? How much violin playing? But you could absolutely get basic grasps on a general purpose programming language. With something specialized like Unity or Excel you would get tons of useful output.

The hurdle around assignment operator is as old as symbolic languages. That's why legends such as Niklaus Wirth wanted to use another operator, ":=", a notation that is still being used.

Anyway, it can be a hurdle, but one I find that most people get over pretty quickly.

> The hurdle around assignment operator is as old as symbolic languages. That's why legends such as Niklaus Wirth wanted to use another operator, ":=", a notation that is still being used.

Well, sure; but more generally, the ability to accept other meanings for symbols (and keep subtly different symbols straight in one's head) is a mental skill, and individuals vary in their aptitude for it. (Presumably, this one is also relevant to natural language learning, since one must reckon e.g. with false cognates.)

Nah I just think you are so overwhelmed that "=" having a different meaning lh and rh is just too much. It is hard to remember how hard it was.
> I remember a fellow in high school that just could not accept that = in programming is assignment not an equation (like in high school math)

The English noun "mist" has a different meaning than the German noun "[der] Mist" (dung, crap). Or the French "[la] infusion" has a different meaning (herbal tea) than the English "infusion" and the German "[die] Infusion".

So, you are very used to the situation that in different languages, terms can have different meaning, so also in, say, C versus mathematics.

not to mention the other english word, "missed", which sounds exactly the same.

However, people really do have a great deal of trouble with this exact concept. Its a common test to give to people to define a function with a misleading name, like multiplyByTwo(int x, int y), and then show them the code inside (return x/y) and ask what this results in. Surprisingly many non programmers have a great deal of trouble with the idea that the name can be different to the behavior, especially in cases where its subtly different not entirely like this.

Other fields have similar issues, where people have trouble with this sort of abstract thinking, divorcing abstract knowledge about a thing from its appearence. iirc its a stage in child psychology and development, and shows up in teenage years after puberty. Many adult people never develop it fully, and struggle with this to a greater or lesser extent

You went to high school with Niklaus Wirth?
No, that actually happened. I actually knew pascal used := (I programmed quite a bit of pascal/delphi myself back in the day) but I never knew its inventor ever made a big deal about the assignment operator until I posted this.

But that was just an offnote observation, when I got to college I already knew how to program but MANY of my student peers had A LOT of trouble in the first year grasping the basics. These were not dummy students, they were top ~3% of students in the college entrance exams.

At least 50% of my class didn't understand pointers properly by then end of first year.

This is one of the few mistakes K&R made going from BCPL to C.