> I find the core position of the author unconvincing - that is, the author advocates for non-professional languages for beginners
Based on my experience of teaching 10-16 year old kids to program, a non-professional language does help. Is it necessary? Absolutely not. Does it increase chances of success for a child struggling with their first programming experience? I believe so. Even 10% increase makes a huge difference when applied at scale in schools.
How does an artificial education-focused language help concretely? In my experience there are two big problems well-meaning kids experience when they learn stuff: insufficient attention and insufficient resilience.
1) Attention. If you want to explain something to kids you better get to the point damn quick otherwise in 10 minutes you get that blank stare from 8 out of 10 kids (even if you managed to keep them from looking into the window, talking to each other or playing with their phones). When you see these glassy eyes you know it's already lost, no matter what you say next it just won't stick. You have to reboot the lesson with some distraction and start over again. When teaching the first programming language this means that you absolutely cannot explain properly how scanf("%d",&i) works. It takes variadic parameters, in this instance it's two pointers and pointers typically take 3-4 dedicated lessons to truly understand, much later in the curriculum. You'll never get to these pointer lessons if you didn't even manage to write your first program that reads a number from the keyboard. And I'm not even getting into #include <stdio.h> and preprocessor stuff. So what you have to do is to say "trust me, just memorize it as a spell, you will understand it later". When teaching C to non-programmers you say that phrase a lot.
2) Resilience. Not all kids are the same but many of them (can't say if majority or not, depends on the composition) give up rather quickly in the face or problems, judging either themselves or the subject to be stupid (depending on personality). There are 10 different ways in which you can write scanf("%d",&i) incorrectly when you don't understand the mechanics behind it, which increases the chance of mistakes and increases the number of kids who give up. When teaching C to non-programmers you see desperate people struggling with even simplest programs quite often.
Is it possible to overcome all this and learn C++ as your first language on a Dvorak keyboard while learning English in parallel, like one of commenters here unironically suggests? Yes, it is possible. Is it likely to happen? I don't think so, such curriculum will have very low success rates even with a good teacher. And an average school teacher would probably fail at it himself. You can also try teaching a child to count by starting from Peano axioms I guess.
So these learning-focused languages (like Logo from my childhood) help to maintain attention and resilience by building a proper progression curve: you don't need to understand complex concepts to be able write simple programs. Game designers know this very well: you never throw all the complexity at the player at level 1, you gradually introduce game mechanics and tricks so that they have time to adapt and learn. If you make a game where level 1 is overly complicated, will people still manage to play it? Some will, but most will give up.
Overall I'm quite depressed with the state of programming for kids where I live right now (Paris). At the age of 10 they didn't even begin, while at the same age we already drawing chessboards in Logo. And that was 1999 in the middle of Russia, not 2024 in the middle of Europe.
Based on my experience of teaching 10-16 year old kids to program, a non-professional language does help. Is it necessary? Absolutely not. Does it increase chances of success for a child struggling with their first programming experience? I believe so. Even 10% increase makes a huge difference when applied at scale in schools.
How does an artificial education-focused language help concretely? In my experience there are two big problems well-meaning kids experience when they learn stuff: insufficient attention and insufficient resilience.
1) Attention. If you want to explain something to kids you better get to the point damn quick otherwise in 10 minutes you get that blank stare from 8 out of 10 kids (even if you managed to keep them from looking into the window, talking to each other or playing with their phones). When you see these glassy eyes you know it's already lost, no matter what you say next it just won't stick. You have to reboot the lesson with some distraction and start over again. When teaching the first programming language this means that you absolutely cannot explain properly how scanf("%d",&i) works. It takes variadic parameters, in this instance it's two pointers and pointers typically take 3-4 dedicated lessons to truly understand, much later in the curriculum. You'll never get to these pointer lessons if you didn't even manage to write your first program that reads a number from the keyboard. And I'm not even getting into #include <stdio.h> and preprocessor stuff. So what you have to do is to say "trust me, just memorize it as a spell, you will understand it later". When teaching C to non-programmers you say that phrase a lot.
2) Resilience. Not all kids are the same but many of them (can't say if majority or not, depends on the composition) give up rather quickly in the face or problems, judging either themselves or the subject to be stupid (depending on personality). There are 10 different ways in which you can write scanf("%d",&i) incorrectly when you don't understand the mechanics behind it, which increases the chance of mistakes and increases the number of kids who give up. When teaching C to non-programmers you see desperate people struggling with even simplest programs quite often.
Is it possible to overcome all this and learn C++ as your first language on a Dvorak keyboard while learning English in parallel, like one of commenters here unironically suggests? Yes, it is possible. Is it likely to happen? I don't think so, such curriculum will have very low success rates even with a good teacher. And an average school teacher would probably fail at it himself. You can also try teaching a child to count by starting from Peano axioms I guess.
So these learning-focused languages (like Logo from my childhood) help to maintain attention and resilience by building a proper progression curve: you don't need to understand complex concepts to be able write simple programs. Game designers know this very well: you never throw all the complexity at the player at level 1, you gradually introduce game mechanics and tricks so that they have time to adapt and learn. If you make a game where level 1 is overly complicated, will people still manage to play it? Some will, but most will give up.
Overall I'm quite depressed with the state of programming for kids where I live right now (Paris). At the age of 10 they didn't even begin, while at the same age we already drawing chessboards in Logo. And that was 1999 in the middle of Russia, not 2024 in the middle of Europe.