stay wonderful.
see also: email / / irc
home / cc by-nc-sa / webring


tweebasic was a microcomputer inspired basic programming environment i wrote for a school assignment. it was one of my first forays into {welcoming computing}.

§languages for learners

i believe that there is a significant issue with the way that programming languages are taught. scripting languages, while lax in syntax, are not lax in functionality and have been designed for real-life production environments. they are powerful languages.

beginners do not need this.

there is nothing more offputting when learning something new than being told that the way that you're doing it is wrong. often it is something trivial. you don't tell a beginner violinist they should be using vibrato! programming languages are notorious for this. "every statement has to be inclosed in parentheses," they say. "indent everything with four spaces." this is wrong. does the toddler pick up a crayon to compare their crosshatching technique with da vinci? do the teenagers skinny-dipping in a lake copy the movements of fish? no, they want to have fun in the activity they have chosen.

scripting languages have come a long way fnom the verbosity of c, but there is still more that can be done. cobol appeared promising to me, until i realised how old and unsupported it was. and then there is another path: scratch.

scratch has a few issues. but its block based interface makes it so easy for beginners. every "syntax token" is visible from the start, there's no need to memorise anything.

when i was taught programming at school (at the time i was already pretty competent so maybe may view was slightly biased), there was a lot of focus on the syntax and rules of their language of choice, python. personally, i think that the focus should be on logic errors. they are applicable to any programming languages, and it's more important to have an understanding of such computational techniques than to know that python uses `+` for addition and for concatenation.

whenever i teach someone programming, i start by turning off the computer. we discuss logic and loops on paper first, before turning to real code (where i generally use lua because i find that its `then` keyword is more friendly than a colon, among other things). but i have no doubt that there could be a better language for learning. it doesn't have to do everything. it just has to be basic.

see also