4 ms·
Just my personal opinion: I'm pretty sure that the key to getting pupils interested in programming is a typed language with lean featureset. Such language shou
by pshirshov 3y ago
Just my personal opinion:
I'm pretty sure that the key to getting pupils interested in programming is a typed language with lean featureset. Such language should allow low-level access to hardware and has no memory management features. And the hardware must be as simple as possible.
In my school almost everyone who tried to code was motivated to continue. We were using extremely ancient primitive soviet machines running some homebrew Pascal implementation.
Later I've seen students trying to learn programming in more complex environments and noticed success rates falling with growing system complexity.
Dynamically typed languages make things extremely bad.
I still consider Pascal running under DOS as one of the best possible learning environments.
Paradoxically, an XT clone like Monotech NuXT plus Borland Turbo Pascal may be the best platform for kids due to its relative simplicity and abundance of good documentation. Or, maybe, even something based on Z80.
- nemo44x 3y agoI agree with this. It's counter intuitive but lower level languages without layers of abstraction are easier to understand to new programmers. It's all very literal. Abstractions are great for experienced developers because you get it. But new learners have no context and abstractions are too much of a black box. I found learning MIPS asm and C early on were nice and learning functional languages and things like Python and JS more difficult. It was after I had gained experience that the power Python and JS and Rust and whatever became evident and the abstractions and concepts made sense and were useful.
- randcraw 3y agoSmall languages that can be learned quickly that have a limited number of ways to perform an action (like iterative loops) make for a more straightforward learning experience than the giant languages that are popular today. I think explicit strict typing (e.g. Pascal) also helps. The more subtle and flexible the type system, the harder it is to learn the language's model of abstraction (examples: C pointers or OOP class hierarchies or polymorphism). I agree about the value of simplicity, such as learning Pascal in a terminal-based interface. That interface is minimalist in the extreme (no GUI to complicate things), and the language's design and type system have a crystalline clarity that undercomplicate learning how to think like a computer. It's like learning to use a hammer vs Windows.
- eimrine 3y agoWhy typed PL Pascal is better than typeless PL Lisp for absolutely beginners? I am a beginner mentor to some students but I can not even think about setting up the DOS. BTW I am also from post-Soviet country and my first PL I ever wrote a program was Pascal but all I can remember about it is Pascal-strings, := operator and segregation between functions and procedures.
- pshirshov 3y agoI have an explanation why, but regardless I observe that complex environments, advanced abstractions and weakly typed or dynamically typed languages work worse than primitive systems with tiny strictly typed languages and minimal abstractions. I haven't personally seen LISPs in action as environments and languages for programmiag beginners, but personally I think that they are way too abstract for the purpose. And it might be lot harder to explain the ideas behind the loop with substitution rules than manipulations with bytes of video memory directly represented on the screen.
- eimrine 3y ago> way too abstract for the purpose. I see my teacher's mission/purpose as making my students as flexible as possible. This and my personal dedication to Lisp and the fact that my students are too young to bother about looking for job right now makes me teaching Lisp but not JavaScript/Python. > And it might be lot harder to explain the ideas behind the loop with substitution rules than manipulations with bytes of video memory directly represented on the screen. I have some C skills but my choice is to teach all the bit-jogging tricks on paper while real coding sessions are mostly on Lisp. This is my first group ever, but at least I proud that the teenagers are happy with my lessons and their number is not decreasing.
- pshirshov 3y agoI guess you are using Racket? Anyway, it's good to know that your approach works.
- kazinator 3y ago
- asdff 3y agoBash is honestly the perfect learner language. It's installed on a lot of computers already. It has good built in documentation. The code doesn't demand a lot of byzantine syntax, its honestly the most "legible" language I work with by far.
- analog31 3y agoI agree. My first language, in 1981, was the original line numbered BASIC. We all know its shortcomings as a language, but for most operations, you could at least form a concrete mental model of what the computer was doing. You could "run" your program on paper. Helping people learn Python, I end up explaining things like variables by treating them like the old BASIC variables -- hard memory locations containing values, associated with a name. I don't mention that an integer is an object with properties and methods. On the other hand, a beginner tutorial that starts with "venv" is criminal. Sure, the language was primitive, but none of us who learned on obsolete languages were scarred for life. The teacher explained to us the shortcomings of BASIC, and we learned the hard way what spaghetti code is. Most of us were destined to learn Pascal if we made it to college.