Re: [dev] Programming as a hobby - which language?

From: Maciej Janicki <>
Date: Tue, 7 May 2019 16:10:35 +0200

Hi sZpak,

> I prepare myself for doing programming classes/course for kids/teenagers
> in a local community center. And I need your advice.
> **I have to choose language/technology/environment to teach.**

it may sound crazy, but how about shell scripting?

It is unlikely that your course attendees come anywhere close to writing
"software". If you teach them a general-purpose programming language, they will
write a calculator or a guessing game, get bored with it and forget it. They
will never make the transition to writing anything sustainable and useful, even
for themselves.

On the other hand, the shell language:
- is much nearer to the tasks you typically do on your computer as a
  non-programmer (like resizing photos) and teaches you to automate them,
- produces results very quickly - you can write smart one-liners and be amazed
  about how much your computer can suddenly do,
- is designed to be used in interactive mode more often than not,
- puts more emphasis on data streams than control structures (much of bad
  programming comes from chaining and nesting for's and if's into huge
- is just as good as any other language for explaining basic control structures
  (if bash syntax is too awkward, maybe you could try fish)
- has a low entry barrier - "programming" becomes part of your normal computer
  usage, instead of a complex creative activity where you have to start an IDE,
  open a new project, plan the program in advance etc. -> more chance that a
  hobbyist will actually use it after the course
- programming noobs have to use the command line anyway - except when they
  start directly with GUIs and only run their programs inside an IDE, which is
  a terrible thing to teach.

It is also not true that shell and command line is too hard for kids or
computer noobs. I remember using the DOS command line and Norton Commander
under guidance of my older brother when I was 7. Kids will take what you
serve them and they are very open-minded.

The main disadvantages that I see in this choice are:
- lack of typing - but the same is true of many high-level programming
- lack of complex data structures (like structs or objects) - but your course
  probably wouldn't get this far anyway,
- not suitable for demonstrating classic algorithmics (sorting, trees etc.) -
  but again, hobbyists do not need any of this.

I think teaching toy languages like Scratch is generally a bad idea. It might
be easy to learn, but it fails to show that programming is actually useful.

Best regards,

P.S. Apologies if this message gets sent twice. I'm having weird issues with my
Received on Tue May 07 2019 - 16:10:35 CEST

This archive was generated by hypermail 2.3.0 : Tue May 07 2019 - 17:12:08 CEST