Teaching Children Programming and Linux
cbbrowne-Re5JQEeQqe8AvxtiuMwx3w at public.gmane.org
Sat Jul 19 05:34:49 UTC 2008
On Fri, Jul 18, 2008 at 10:40 AM, Scott Elcomb <psema4-Re5JQEeQqe8AvxtiuMwx3w at public.gmane.org> wrote:
> Now, looking at the alternative (Squeak), which is fully OOP all
> the way down to the very menus and icons, buttons, which has a much
> richer environment and is totally ready for multimedia, along with the
> derived (written in Squeak) Scratch language, I think it's very bad
> that we're returning to Basic.
> Kids deserve something better in 2008, and we can deliver it, just
> as long as we keep our prejudice at bay against Smalltalk (because it
> really is about prejudice and lack of information)."
It seems to me that the whole "abject orientation" fixation has been a
terrible distraction from the *real* problems of computer science.
OO is simply a way of structuring the relationships between functions
and data, which is merely a programming technique. You can do it in
any language, if you plan for it a little. It's even doable in
assembly language, albeit that's not likely a way people will be too
excited about doing much of anything :-).
There are a number of useful paradigms that OO seems to distract people from:
- As Lennart observes, functional programming is of considerable
interest. It allows *provably* establishing independence of instances
of functions, which is *staggeringly* interesting as the need to
enable parallel execution grows (in keeping with the number of CPU
cores on each motherboard).
This is why people have been taking interest in Erlang, of late; even
though it has the unusual syntax of Prolog, its capability to
guarantee safety of running functions in parallel is exceedingly
useful in building highly concurrent applications. It was created for
coding phone switches, certainly an example of hefty concurrency.
Harnessing parallelism is one of the "grand challenges." OO hasn't
got anything much to contribute in that regard, conceptually. Indeed,
by binding state and methods together, implementations frequently add
to the challenges, as opposed to helping to resolve them.
- Typical OO implementations focus heavily on building data type
taxonomies, and then on building per-type sets of methods. ML (yet
another flavour of functional languages) instead uses type inference,
with type polymorphism, which chops out the need for whole branches of
- Another of the "grand categories" of solutions is declarative
programming. Notable instances include SQL, Prolog, Erlang, and
Haskell, most of which, again, are functional languages. The idea
here is to write programs that ask to calculate a result, as opposed
to indicating how to do so.
It is becoming increasingly clear that for a system to be deeply and
tightly coupled to "object orientation" is, anymore, something of a
That's not prejudice against Smalltalk, by any means; I did *not*
pre-judge it in any way. I watched it, with interest, when Byte
presented on it back in 1981. It was not until rather more recently
that I had opportunity to try out Smalltalk in running form, and I
have always found myself disappointed at how the learning curve of the
environment discouraged me from getting to the point of trying any of
the things that had always seemed interesting about it.
If anything, I have been predisposed to look favorably on Smalltalk.
But its design isn't cognizant of the 30 years worth of new concepts.
"The definition of insanity is doing the same thing over and over and
expecting different results." -- assortedly attributed to Albert
Einstein, Benjamin Franklin, Rita Mae Brown, and Rudyard Kipling
The Toronto Linux Users Group. Meetings: http://gtalug.org/
TLUG requests: Linux topics, No HTML, wrap text below 80 columns
How to UNSUBSCRIBE: http://gtalug.org/wiki/Mailing_lists
More information about the Legacy