On Tue, Apr 25, 2017 at 04:14 Enrico Colombini <
erix@erix.it> wrote:
On 25-Apr-17 08:34, Dirk Laurie wrote:
> Oops! You're right, of course. Never trust the memory of a septuagenarian.
But your memory was right on the main point: Applesoft Basic was a great
language to start with. Few instructions, a simple model (but powerful
enough for that time and hardware) and, over all, immediate visual feedback.
Having spent many years writing beginner's self-instruction courses, I
think simplicity and directness may be more important than formal
cleanliness. A disciplined mind is better than a discipline-enforcing
language.
Formal cleanliness can be taught and can be used in (almost) any
language, even if not enforced by the language itself: I used to write
structured BASIC using GOTOs (and JMP in 6502 assembly code). I was even
doing recursion without argument passing :-)
By the way, BASIC was my first encounter with the garbage collection;
its powerful, flexible strings were the main thing I missed in C.
Back to the subject: I think interactive graphics are a very effective
tool to teach programming, because they give a large amount of feedback.
Unfortunately, current-day languages (or, I should say, programming
environments) tend not to offer built-in simple graphics.
By "simple graphics" I mean no-hassle instructions that draw directly
into the output window, such as LINE. They can be used to directly
illustrate concepts, visualize data, keep attention focused and so on.
The current setup/loop graphics model is powerful but conceptually
harder to grasp for a programming beginner, especially if you are trying
to teach the first steps of procedural programming and do not want to be
distracted by concepts such as graphics frames, events, callbacks and so on.
(I know, Processing is easy to use, but not simple to master and it does
not lend itself to good programming structure... people just tend to
create lots of global variables)
--
Enrico
After hating the version of LabView that came with the Lego Mindstorm, I was ready to hate on Scratch, as well. The drag and drop interface for it works really well. My 8 year old (whom I decided does not need to start with C) loves it. It has the neat ability to let you create and manipulate graphics (lines and pens and such). Also, it's event driven, so you can create reasonable games. It even has built in collision detection!
Nostalgia:
The Amiga was blessed with several excellent environments for learning how to program.
AREXX was pretty terrible for teaching you how to program *well*, but wow! It was rediculously powerful, given that all programs on the Amiga that had scripting used it. This meant that tying programs together was super simple. I believe that this was enabled by the system's flat memory model and lack of memory protection. I'm just guessing, but that probably made data sharing trivial.
I loved the power of CanDo. You could *almost* make real WIMP programs in it!
Finally, i had a tremendous amount of fun with AmigaVision. That was a drag and drop flowchart environment where you could double-click the modules and enter details into their form (plus comments). You could also collapse blocks of code and wrap them into modules that could be called. Debugging was really easy, too.
At my city government TV station, I created an interactive television information system using AmigaVision and a DTMF converter. Given the web, he whole system seems silly, but in 1089 it was pretty cool for a city to have such a service.