[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: My First Computer (was Computing Editorial)
Marc 'BlackJack' Rintsch wrote:
> They are easy to learn. Especially Perl, as Python might be a bit
> strange for a beginner with it's indentation rules.
I've been looking at Perl, and I think I see what you mean. Some of its
statements are pretty simple, like BASIC, so there are some
possibilities for Perl as a beginner's language.
However, it is a *huge* language, with a philosophy of having lots of
ways to do everything. That makes reading an existing Perl program quite
a challenge. It also have some anti-intuitive aspects; print 1 + 2 + 3
is "7", but print (1 + 2) + 3 is "3".
My contact with Perl comes from work, where I have some manufacturing
test software written in it. I find the programs completely
incomprehensible. It looks like I will have to learn a significant
amount of Perl to figure out what they are doing.
> I think "There's more than one way to do it" isn't really bad.
> You can experiment with Perl on an trial and error basis until
> your program runs. Which might be fun for beginners/kids.
That part of Perl is good. It is an interpreter, so you can type
one-liners and immediately see what they do.
>> Might I suggest that you try sitting down with someone who has
>> never programmed any computer, and watch what happens when they
>> try to learn one of these languages? For example, ask them to
>> figure out how to get two numbers from the user and print their
>> sum.
> If they have a beginners tutorial or read the docs about the most
> basic, built-in functions of Python they might come up with:
>
> a = input()
> b = input()
> print a + b
>
> Does this really look to complicated for beginners!?
It doesn't look bad, but we'd have to do the experiment I suggested for
real; get a beginner, and try to see if he/she "gets" it. It is very
hard to put yourself in a beginner's shoes, and see things as they see
it.
>> When you're on the bottom rung of the ladder, you are very close
>> to the hardware. It is essential that you understand it.
> No it isn't! Programming has to do with describing the way to solve
> a given problem in a formalized, exact way. This has much more to
> do with logical thinking and mathematics. Both is, and was for many
> centuries, not dependend on the hardware.
I mean this in the sense that children are very concrete thinkers.
Abstract thought comes much later. Even many adults can't do it well.
> To express an algorithm in something like BASIC english is much more
> natural to beginners than thinking in bits and hardware registers.
That has not been my experience. The whole idea of an algorithm (an
underlying pattern or way to solve a specific problem) is alien to
normal daily thinking. We learn specific, concrete solutions first. Only
later do we generalize them and learn the underlying rules or
algorithms.
So, it helps if the computer has physical I/O devices, so the beginner
can *see* the data as something physical and concrete. That's why LOGO
is so good. The robot actually moves forward 10" when you say "Forward
10".
> Maybe it's better to think of it as a ladder in two directions, if you
> climb higher you get to more abstract concepts like namespaces, object
> orientation or functional programming and if you go down, there's the
> hardware stuff. I would recommend beginners to start in the middle and
> extend their knowlege in both directions.
That is basically true. Each rung on the ladder is a different level of
abstraction. However, the terminology of each rung is usually expressed
in terms of the next rung below it. That makes it very hard to start in
the middle, because everything is defined in terms you won't know.
--
Lee A. Hart Ring the bells that still can ring
814 8th Ave. N. Forget your perfect offering
Sartell, MN 56377 USA There is a crack in everything
leeahart_at_earthlink.net That's how the light gets in - Leonard Cohen