[HN Gopher] Principles of Educational Programming Language Design
       ___________________________________________________________________
        
       Principles of Educational Programming Language Design
        
       Author : azhenley
       Score  : 16 points
       Date   : 2024-12-16 02:15 UTC (20 hours ago)
        
 (HTM) web link (infedu.vu.lt)
 (TXT) w3m dump (infedu.vu.lt)
        
       | troelsSteegin wrote:
       | I wanted the author to pick a winner among approaches, but he's
       | surveying and inviting new research. Most recently, Kolling has
       | supervised the development of Strype, a frame-based editor for
       | python. https://strype.org/
        
       | zozbot234 wrote:
       | This article argues at considerable length that an "educational"
       | language targeting complete novices should choose a keyword-heavy
       | syntax like Wirth's Modula 2 as opposed to a terser one like C,
       | prior to discussing more esoteric topics like structural editing,
       | "frame"-like graphical representations of high-level syntax and
       | such. Is there any significant evidence that the keyword-heavy
       | syntax style may be easier to understand for novice coders, or is
       | this just a matter of subjective preference?
        
       | enum wrote:
       | The abstract asks:
       | 
       | > Why do we not have a programming language that is designed for
       | education and in widespread use across the world
       | 
       | It is important for a teacher to immediately demonstrate subject-
       | matter mastery. If a student asks a question that goes beyond the
       | planned lesson, you need to have an answer. You can't say, "I
       | don't know how to do that." That would make you look incompetent.
       | 
       | When you're teaching programming, it is easiest to do this with a
       | programming language that you know well and use everyday. That
       | language is unlikely be a language designed explicitly for
       | education.
        
         | kirkules wrote:
         | I was a TA and instructor for several programming classes,
         | usually in Java, with which I was moderately experienced but
         | not an expert.
         | 
         | My students would frequently ask how to accomplish something,
         | how syntax or keywords worked on q deeper level, whether there
         | was a stl class for a purpose, or what caused an error, etc,
         | that I didn't know about already. I didn't hide my ignorance
         | even a little bit, but I _did_ help them find an answer. In
         | lecture settings, if it wasn 't too much of a digression, I'd
         | demonstrate finding the answer. In one on one help, or one on
         | group help, I'd lead them through finding the answer
         | themselves. My students had a lot of respect for me as an
         | authority on the language and still listened to my advice and
         | came to me with questions frequently.
         | 
         | This is kinda important across all fields, but especially in
         | programming, you don't need to know the right answer by rote so
         | much as you need to be able to seek and identify the right
         | answer with some independence using existing resources.
        
       | dr_dshiv wrote:
       | Genuinely curious about how LLMs and tools like bolt.new will
       | change programming education. (Not computer science education--
       | that might not change much)
        
       | scott_s wrote:
       | I find the core position of the author unconvincing - that is,
       | the author advocates for non-professional languages for
       | beginners, instead using languages designed specifically for
       | teaching. The main argument put forward in favor of professional
       | languages is crossover: if a student learns a language in class,
       | they may be able to use that language professionally. The author
       | then argues against that main point.
       | 
       | I think students should be taught in "professional" languages,
       | but crossover is not my main reason. Rather, it's that
       | professional languages have an enormous corpus of examples that
       | students can look up. If a student is learning on a teaching
       | language without much adoption, there's just not much else a
       | student can do but use the materials that part of the course.
       | Teaching languages don't let students expand their universe of
       | examples.
       | 
       | I agree with the author's point about real insight coming on
       | learning the second (and third, etc.) language and systems. But I
       | don't find it as a compelling point in favor of teaching
       | languages - quite the opposite. To me it means there's no need to
       | obsess over first languages.
       | 
       | Designing programming languages is fun. Designing a programming
       | language which meets some platonic ideal of teachability is
       | moreso because it feels possible to "solve" the design and craft
       | the perfect jewel of a language. But I'm unconvinced it's useful
       | research.
       | 
       | For the record, my first language was C++, and I'd default to
       | teaching beginners in Python.
        
         | jll29 wrote:
         | I also find it more useful to teach something _real_ , not a
         | toy.
         | 
         | Even PASCAL was never a toy, though it was designed motivated
         | by teaching purpose, it became professional because it was
         | capable of that.
         | 
         | When I told some friends I was going to teach 11-year-olds to
         | program, and that I was considering some BASIC versus Python,
         | they suggested Scratch. But 11-year-olds aren't babies. They
         | can understand a lot, and they should be enabled to talk about
         | their code (which textual representations enable, but not
         | Scratch-style visual programs).
         | 
         | So I picked Python (with pyturtle for easy turtle graphics),
         | and it worked well.
        
           | scott_s wrote:
           | I actually think Scratch is fine for 10ish year olds, mainly
           | because all of my above holds true: scratch.mit.edu is an
           | online community where kids can copy, tweak and in general be
           | inspired by and learn from what other kids have done. Your
           | universe can expand with your curiosity. When my nephew was
           | 10, he started with Scratch. My brother guided him towards
           | using Python on a Raspberry Pi soon after.
           | 
           | For kids around 10, I think it's all about what the kid
           | thinks is more fun.
        
             | luqtas wrote:
             | exactly... just getting rid of boilerplate on syntax feels
             | so friendly with the tiny humans
             | 
             | we should also don't forget that learning for its own sake,
             | sometimes, is the meaning/end of pedagogy; not luring them
             | to the professional path of computer science/programming
        
         | taeric wrote:
         | I would be surprised if your first program was C++?
         | Specifically, getting a decent C++ toolchain that can produce a
         | meaningful program is not a small thing?
         | 
         | I'm not sure where I feel about languages made for teaching and
         | whatnot, yet; but I would be remiss if I didn't encourage my
         | kids to use https://scratch.mit.edu/ for their early
         | programming. I remember early computers would boot into a BASIC
         | prompt and I could transcribe some programs to make
         | screensavers and games. LOGO was not uncommon to explore
         | fractals and general path finding ideas.
         | 
         | Even beyond games and screensavers, MS Access (or any similar
         | offering, FoxPro, as an example) was easily more valuable for
         | learning to program interfaces to data than I'm used to seeing
         | from many lower level offerings. Our industries shunning of
         | interface builders has done more to make it difficult to get
         | kids programming than I think we admit.
         | 
         | Edit to add: Honestly, I think my kids learned more about game
         | programming from Mario Builder at early ages than makes sense.
        
           | Jtsummers wrote:
           | > I would be surprised if your first program was C++?
           | Specifically, getting a decent C++ toolchain that can produce
           | a meaningful program is not a small thing?
           | 
           | Visual C++ (some version) was in a book I received as a gift
           | in high school, it was my second language after BASIC (some
           | version on a Tandy running MS-DOS). It was not hard to set
           | up. You ran the installer, you had the language set up. If
           | someone had ended up in the same situation as me but without
           | the BASIC experience, I could see it being an easy to set up
           | (not easy to learn) first language.
        
       | alexey-salmin wrote:
       | Well, I'm still waiting for something to beat the MSWLogo which
       | defined my childhood between 8 and 12 years old. By now I've
       | tried quite a few things with my kids and most of them IMO
       | display a complete lack of understanding of what can be good for
       | a 8-10 year old child. E.g. typing "player.move_forward()"
       | instead of "fw" (hi, codingforkids) is complete insanity: kids
       | typically do not master touch typing by that age. Furthermore,
       | with kids using tablets instead of PCs nowadays I doubt most of
       | them will master touch typing at all. Nor do they care about the
       | syntax of ".member" and "func()" for that matter, that's beyond
       | the point when you're just trying to figure out what a procedural
       | program even is.
       | 
       | I'm open to recommendations of programming languages and
       | programming-related games for kids between 4 and 12 years old,
       | for Android and PC. This is what I've tried so far:
       | 
       | * Scratch is interesting but simple programs like "add two
       | numbers" require crazy levels of dedication of drawing sprites
       | for every digit and programming a character for every decimal
       | place (unless I got it wrong, open for advice). I think it will
       | come handy later to teach about eventloops, signals and threads,
       | but not as a first language.
       | 
       | * codingforkids.io -- "papa, but this sucks, you do it all day?"
       | was hard to argue with that
       | 
       | * Human Resource Machine -- incredible game and does drill some
       | good concepts but is too remote from programming (I still
       | recommend it though)
       | 
       | * Mindustry -- also a good game but is even further away from
       | what programming is compared to HRM
       | 
       | * Any other recommendations?
        
       | dboreham wrote:
       | Counter view: there should be no such thing as an educational
       | programming language. Some set of regular production languages
       | that are sufficiently easy to learn that they can be used in
       | education should exist. If not then collectively we're doing
       | something wrong with language design.
       | 
       | Random data point: I "taught" a middle school coding class for a
       | couple years using JS. Turned out ok.
        
       | jll29 wrote:
       | I'm surprised the author doesn't mention LISP, despite
       | recognizing at some point that programming also IS language
       | design (without explicitly calling it meta-linguistic
       | abstraction, unlike SICP).
       | 
       | LISP is the language/notation most easily/flexibly extended, and
       | this is one of the reasons why it may never disappear as long as
       | we still have programming languages around.
        
       ___________________________________________________________________
       (page generated 2024-12-16 23:00 UTC)