Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Beginner's Language?

45 views
Skip to first unread message

raj

unread,
May 4, 2001, 9:51:03 PM5/4/01
to
On Fri, 4 May 2001 20:12:21 +0400, Faisal Halim
<faisal...@yahoo.com> wrote:

>Assalaamu 'alaikum,
>
>I would like to know if ADA is a good first language for a beginner,
>especially when compared to Lisp and Perl, and BASIC.
>
>Despite my 'O' Level qualification in Computers, please assume you are
>answering a person totally devoid of computer concepts, as I would find
>such replies useful when answering queries from 7th grade students who are
>interested in computers and programming, but have no idea of which language
>to use.

A restricted subset of Ada would be excellent since it can be used to
teach not only programming but more importantly, software engineering
concepts.

However, other languages you may want to consider include Haskell ,
OCaml , Smalltalk and even ( shudder ! C++ or Java )

If your students are bright and motivated to learn theory and
fundamentals, Lisp ( or perhaps its smaller and more pedagogically
oriented dialect Scheme ) and Haskell are excellent choices.

If your students are short sighted drones who want to learn the
currently fashionable choices, C++ and Java are (yuck ) appropriate.

But please, do not inflict Perl and BASIC upon innocent children.

Carl E Gundel

unread,
May 5, 2001, 10:51:12 AM5/5/01
to
raj (isra...@optushome.com.au) wrote:
: If your students are short sighted drones who want to learn the

: currently fashionable choices, C++ and Java are (yuck ) appropriate.

: But please, do not inflict Perl and BASIC upon innocent children.

C++ and Java are okay for innocent children, but Perl and BASIC are
not??!!?? Ha! Give me (and them) a break!

-Carl
--
------------------------------------------------------------------
Carl Gundel ca...@libertybasic.com Shoptalk Systems
author of Liberty BASIC, twice a PC Magazine Awards Finalist!
http://www.libertybasic.com
------------------------------------------------------------------

Dodger

unread,
May 5, 2001, 2:12:24 PM5/5/01
to
"raj" <isra...@optushome.com.au> wrote in message
news:q9n6ft0pbn903d5gq...@4ax.com...

This is an _amazingly_ uninformed opinion.

I take it this writer is not very good with Perl because he refuses to let
go of his more ancient prejudices. However, the assertation comes out
absurd. There is no reason to keep Perl away from children just because Raj
doesn't like it.
--
Dodger
www.dodger.org
www.necrosoft.net
www.gothic-classifieds.com

Larry Kilgallen

unread,
May 5, 2001, 3:49:10 PM5/5/01
to
In article <q9n6ft0pbn903d5gq...@4ax.com>, raj <isra...@optushome.com.au> writes:
> On Fri, 4 May 2001 20:12:21 +0400, Faisal Halim
> <faisal...@yahoo.com> wrote:
>
>>Assalaamu 'alaikum,
>>
>>I would like to know if ADA is a good first language for a beginner,
>>especially when compared to Lisp and Perl, and BASIC.
>>
>>Despite my 'O' Level qualification in Computers, please assume you are
>>answering a person totally devoid of computer concepts, as I would find
>>such replies useful when answering queries from 7th grade students who are
>>interested in computers and programming, but have no idea of which language
>>to use.
>
> A restricted subset of Ada would be excellent since it can be used to
> teach not only programming but more importantly, software engineering
> concepts.

It seems to me that regardless of the language chosen, a restricted
subset is _always_ appropriate. For any reasonable language there
are bound to be parts that while helpful in certain real-world
programming situations are not illustrative of the _concepts_
involved in programming.

Jochen Schmidt

unread,
May 5, 2001, 3:06:33 PM5/5/01
to
Dodger wrote:

IMHO Perl has nothing and does nothing that would make it a good language
for language studies.
But I wait to hear from you what concepts are best learnt by looking at
perl (besides the "How to not design a language" fact)

Regards,
Jochen


Reinout Heeck

unread,
May 5, 2001, 6:52:13 PM5/5/01
to
Larry Kilgallen wrote:
>
[...]

>
> It seems to me that regardless of the language chosen, a restricted
> subset is _always_ appropriate. For any reasonable language there
> are bound to be parts that while helpful in certain real-world
> programming situations are not illustrative of the _concepts_
> involved in programming.

In the case of Smalltalk you will need to slightly change that
statement: the core system is very tiny, all the functionality is in
it's class library. That even goes as far as that the core does not
implement control flow, the libraries do. Restricting one to only part
of the libraries is wat every programmer does.


Reinout
-------

Dale Stanbrough

unread,
May 5, 2001, 8:03:20 PM5/5/01
to
Reinout Heeck wrote:

> In the case of Smalltalk you will need to slightly change that
> statement: the core system is very tiny, all the functionality is in
> it's class library. That even goes as far as that the core does not
> implement control flow, the libraries do. Restricting one to only part
> of the libraries is wat every programmer does.

Even then i would not teach students about converting values into
messages, which are (i think) not implemented in a library, but as
part of the language itself.

Perhaps Forth would have been a better example?

Dale

Reinout Heeck

unread,
May 5, 2001, 9:47:19 PM5/5/01
to

I don't understand what you are getting at. Messaging is indeed part of
the core system but values are not messages, values are objects in a
Smalltalk system and messages return those values. But what do you mean
when you say 'converting values into messages' ? If you are referring to
the need to use messages to get to instance variables I'd say that is a
real good thing, it hides implementation and thus keeps changes in
implementation local.


> Perhaps Forth would have been a better example?

Of what?
The Forth ANSI standard is small enough to be grasped by a single person
so there is no need to aim at a restricted set there.
Anyway I prefer Smalltalk above Forth, one of the reasons being that
Smalltalk yields much more readable code. The absence of syntax in Forth
makes it hard to read (mentally parse) code one is not familiar with.
However if I had to program devices with tiny memory I would seriously
consider using Forth.


Reinout
-------

raj

unread,
May 5, 2001, 9:50:36 PM5/5/01
to
>I take it this writer is not very good with Perl because he refuses to let
>go of his more ancient prejudices. However, the assertation comes out
>absurd. There is no reason to keep Perl away from children just because Raj
>doesn't like it.

As Larry Wall says, Perl is a Swiss Army chainsaw ie : it can do
almost anything but it is inelegant and just a trace clunky.

Sure it gets the job done but if I was teaching kids an all purpose
scripting language, I would rather teach them Ruby or Python.

raj

unread,
May 5, 2001, 10:09:23 PM5/5/01
to
Education is different from vocational training.
Vocational training is for plumbers and those who have to
start-work-right-now.
Education is about understanding the fundamentals and the theory that
underlies the subject / the system / the "all".
Education is meant for those capable of understanding the
fundamentals and the theory that underlies the subject / the system /
the "all".

In this context, I stand by my previous statements:
Lisp, Scheme, subsetted Ada, Smalltalk , Ruby , Python (and if
approached judiciously, even Java and C++) can be used usefully as a
language of discourse.

Perl while admirable as a tool for sys admins and wannabe-hackers [
do you want your child to just become a sys-admin ? :-) ] is a
linguistic mishmash that tries to be all things to all programmers
and ends up becoming ( again to quote Larry Wall ) a "Pathologically
Eclectic Rubbish Lister".

If you really want to teach children to use a multiparadigm language,
try Oz / Mozart. It is has functional, object oriented, logic and
constraint based, features and has concurrency built in. Confusing ?
Yes ! But unlike Perl, Mozart was DESIGNED and did not grow by a
process of uglification / accretion.

Accretion is not necessarily bad. Just look at Lisp with it brilliant
metaobject protocol, multiple dispatch and CLOS. But to contemplate
teaching Perl or Basic to children.........
Phaugh !

raj

unread,
May 5, 2001, 10:09:06 PM5/5/01
to

Dale Stanbrough

unread,
May 5, 2001, 11:38:01 PM5/5/01
to
Reinout Heeck wrote:

> I don't understand what you are getting at. Messaging is indeed part of
> the core system but values are not messages, values are objects in a
> Smalltalk system and messages return those values. But what do you mean
> when you say 'converting values into messages' ? If you are referring to
> the need to use messages to get to instance variables I'd say that is a
> real good thing, it hides implementation and thus keeps changes in
> implementation local.

You can have values such as '#doSoemthing' (it's been a -long- time
since i've done Smalltalk, so please forgive if i get the syntax
wrong). You can convert this symbol into a method call to a routine
called 'doSomething'


>> Perhaps Forth would have been a better example?

> Of what?

...of what you were attempting to demonstrate; a language which has
extremely simple semantics with no need to subset it for teaching
purposes, and almost everything placed into a library.

> The Forth ANSI standard is small enough to be grasped by a single person
> so there is no need to aim at a restricted set there.

This was my point.


Dale

Reinout Heeck

unread,
May 6, 2001, 12:05:17 AM5/6/01
to
Dale Stanbrough wrote:
>
> Reinout Heeck wrote:
>
> > I don't understand what you are getting at. Messaging is indeed part of
> > the core system but values are not messages, values are objects in a
> > Smalltalk system and messages return those values. But what do you mean
> > when you say 'converting values into messages' ? If you are referring to
> > the need to use messages to get to instance variables I'd say that is a
> > real good thing, it hides implementation and thus keeps changes in
> > implementation local.
>
> You can have values such as '#doSoemthing' (it's been a -long- time
> since i've done Smalltalk, so please forgive if i get the syntax
> wrong). You can convert this symbol into a method call to a routine
> called 'doSomething'
>

Now I get it, this is indeed a powerful feature with huge potential for
abuse. It's there so the IDE can be written in Smalltalk and it can live
in the same address space as the application. However when an
application makes use of it that's frowned upon by many Smalltalkers,
tools like SmallLint will report it as a 'questionable message send'.

> >> Perhaps Forth would have been a better example?
>
> > Of what?
>
> ...of what you were attempting to demonstrate; a language which has
> extremely simple semantics with no need to subset it for teaching
> purposes, and almost everything placed into a library.
>
> > The Forth ANSI standard is small enough to be grasped by a single person
> > so there is no need to aim at a restricted set there.
>
> This was my point.

OK, the Smalltalk core is _much_ smaller and the presence of a simple
syntax makes it easier to read than Forth though. So I'd say of these
two Smalltalk is the 'better' example.


Cheers!

Reinout
-------

Dan Andersson

unread,
May 6, 2001, 6:49:43 AM5/6/01
to

> > > The Forth ANSI standard is small enough to be grasped by a single
person
> > > so there is no need to aim at a restricted set there.
> >
> > This was my point.
>
> OK, the Smalltalk core is _much_ smaller and the presence of a simple
> syntax makes it easier to read than Forth though. So I'd say of these
> two Smalltalk is the 'better' example.

Smalltalk core smaller than Forth, surely you jest? Maybe a minimal
Smalltalk is smaller than a full ANS Forth. But Forth is commonly used under
severely constrained circumstances and the base wordset is small.

Regards Dan Andersson


Reinout Heeck

unread,
May 6, 2001, 7:42:54 AM5/6/01
to

I was talking language concepts you need to learn before delving into
the library, not memory footprint.

As I said earlier in this thread I would seriously consider Forth if I
had to work in a tiny environment.


Reinout
-------

Dan Andersson

unread,
May 6, 2001, 9:31:09 AM5/6/01
to
Since Forth is essentially syntax less (It only has semantics) and only a
few concepts, less than ten I contest and maybe less than five depending on
how you define concepts (Concept == stretchy definition word), I really
don't see that either. One case in point is that it is not uncommon to learn
Forth by writing a new Forth after being taught the concepts, or maybe a
subset like a simple rpn evaluator. And I'm not talking about modifying
existing code but recreating it from machine code and up. That shows
something of the simplicity of it.The number of user created Smalltalks are
few in comparison. Tcl is another case of a few concepts language, but even
though the syntax is really simple it has a steep learning curve since the
syntax is based on inhuman concepts, IMO. But even if Forth is simple and
efficient it has not really taken of in the mainstream, maybe because the
many versions or maybe because there are so many worthy languages out there.
For example the simple object oriented languages Oberon-2 and Eiffel who are
small but not toy languages, or Icon and Unicon with their extremely
expressive syntax and some functional languages like Erlang, Haskell and
Clean. Not to forget the Lisp/Scheme complex with the excellent DrScheme
environment that I cannot recommend enough.

Regards Dan Andersson


Randal L. Schwartz

unread,
May 6, 2001, 11:49:28 AM5/6/01
to
>>>>> "raj" == raj <isra...@optushome.com.au> writes:

raj> Yes ! But unlike Perl, Mozart was DESIGNED and did not grow by a
raj> process of uglification / accretion.

The way you say that, you make it sound like Perl was undesigned.
Perl has a very specific and elegant design behind the scenes, and
Larry Wall would be very offended to hear you say otherwise.

--
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<mer...@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!

Dave Harris

unread,
May 6, 2001, 4:17:00 PM5/6/01
to
da...@cs.rmit.edu.au (Dale Stanbrough) wrote (abridged):

> You can have values such as '#doSoemthing' (it's been a -long- time
> since i've done Smalltalk, so please forgive if i get the syntax
> wrong). You can convert this symbol into a method call to a routine
> called 'doSomething'

Actually that is a library call, called #perform:. Arguably it is no more
part of the language than #ifTrue:. Eg:

|aSymbol|
aSymbol:= #message.
anObject perform: aSymbol.

has the same effect as:

anObject message.

The equivalent in C++ would be like:

void (Object::*aPmf)();
aPmf = &Object::message;
(anObject->*aPmf)();

which has the same effect as:

anObject->message();

I agree this stuff need not be taught on the first day. Still, it is a
useful and powerful technique. I suspect a Smalltalk course could include
it earlier than a C++ course. (The syntax alone could make C++ students
run screaming, never mind the type-checking issues.)

The #message notation itself is part of the language; it produces a
Symbol. A Symbol is what Java calls an "interned" String, meaning that
two Symbols with the same value will have the same identity. This means
that comparing Symbols for equality is fast, because we don't have to
look at each of the characters in them like we do with Strings. This
means they are quite commonly used in Smalltalk; often in situations
where C++ would use an enum. They are not just used with #perform:.

Although this is fairly subtle stuff, I would hope a Smalltalk course
would cover the difference between:

string1 == string2.
string1 = string2.

just as a C++ course would cover the difference between:

string1 == string2;
strcmp( string1, string2 );

because a programmer who doesn't grasp this does not yet grasp the object
model.

Finally, in Smalltalk we can construct Symbols on the fly. Eg:

|aPrefix aSuffix aSymbol|
aPrefix := 'mess'.
aSuffix := 'age'.
aSymbol := (aPrefix, aSuffix) asSymbol.
anObject perform: aSymbol.

I hope it is clear what that is doing. There is no C++ equivalent.

Dave Harris, Nottingham, UK | "Weave a circle round him thrice,
bran...@cix.co.uk | And close your eyes with holy dread,
| For he on honey dew hath fed
http://www.bhresearch.co.uk/ | And drunk the milk of Paradise."

raj

unread,
May 6, 2001, 6:37:08 PM5/6/01
to
Forwarded from the python mailing list <pytho...@python.org>

Bob Calco <rca...@cortechs.com>
Wow, don't see too many references to Mozart/Oz -- but I agree: It's a
very powerful environment/language (respectively) that was DESIGNED
(versus "evolved") from the ground up to support multiple programming
paradigms, and support them well. It's really quite an incredible
achievement that isn't hard to appreciate once you get over the hump
of its significant learning curve, and some of its
open-source/low-development-budget quirks. It wasn't
built for the "feint of heart"...though its creators are, like Guido
vis a vis Python, quite certain that the world would be a better place
if it was taught as a first programming language. I don't disagree
with them, or Guido either, for that matter. ;)

The language itself (Oz) isn't exactly what I would call "elegant" or
syntactically easy to learn (not compared to Python, anyway) -- or in
any event the elegance of the language isn't something that jumps out
at you right away until you know what you're looking at -- but it
does, as I said, offer tremendous flexibility and power in the right
hands. It lets you fit the solution to the problem domain, instead of
the other way around -- the way most other languages force you to
approach application design, i.e., the way of Procrustes ("we're using
an OOP language, so we'll describe the problem in OOP terms" vs. "this
really is a problem that lends itself to OOP analysis, so we'll use
the OOP aspects of the language for this piece of the application").

(The classic "I have a hammer so everything is a nail" syndrome...with
Mozart, you have a more-or-less complete toolbox and actually have to
pick and choose the right tool for the job. That really is it's
primary value proposition, so far as I'm concerned, especially when
the problem domain is suited to declarative programming (a la Prolog),
which neither Java nor Python nor C/C++ really support. Mozart excels
as a cross platform substitute for Prolog-style languages, ideally
suited for things like intelligent mobile agents and distributed
component-based expert-systems. )

But the fact that it truly does support OOP, and procedural, and
declarative, and GUI (via Tk), and about a half a dozen other
paradigms, and it is completely free and extensible (like Python) in
C, makes it a great one-stop shop kind of language. The difficulty of
mastering the language has less to do with syntax/symantics than it
does getting used to the many different styles of programming it
supports... knowing when to use what paradigm lands you smack dab in
the heart of computer science at the highest altitudes. Not every
programmer likes to climb that dark and dangerous
cliff... most get stuck in some one True Way of doing things, where
everything is "obvious" and there's a large community of folks around
to reinforce that illusion (Java's a perfect example). This is fine
for a technician, but a *real* software engineer in the highest,
grandest, most idealized sense of the term really ought to have
broader horizons, IMHO.

Programming in Mozart is a lot like mountain climbing -- you gotta be
just a little nuts and willing to endure the solitude of obscure and
distant landscapes and breath thinner air to do it, but ah, the sights
you see!

(BTW, I still admire and use Python, don't get me wrong. I'm just very
impressed by Mozart and figured I'd take the occasion to extoll its
many virtues since raj brought it up... )

;)

Check it out at:

http://www.mozart-oz.org

Download and install it,

http://www.mozart-oz.org/download/

then check out some of the interesting online demos:

http://www.mozart-oz.org/documentation/demo/

Sincerely,

Bob Calco

# -----Original Message-----
# From: python-l...@python.org
# [mailto:python-l...@python.org]On Behalf Of raj
# Sent: Saturday, May 05, 2001 10:09 PM
# To: pytho...@python.org
# Subject: Re: Beginner's Language?
#
#
# Education is different from vocational training.
# Vocational training is for plumbers and those who have to
# start-work-right-now.
# Education is about understanding the fundamentals and the theory
that
# underlies the subject / the system / the "all".
# Education is meant for those capable of understanding the
# fundamentals and the theory that underlies the subject / the system
/
# the "all".
#
# In this context, I stand by my previous statements:
# Lisp, Scheme, subsetted Ada, Smalltalk , Ruby , Python (and if
# approached judiciously, even Java and C++) can be used usefully as a
# language of discourse.
#
# Perl while admirable as a tool for sys admins and wannabe-hackers [
# do you want your child to just become a sys-admin ? :-) ] is a
# linguistic mishmash that tries to be all things to all programmers
# and ends up becoming ( again to quote Larry Wall ) a "Pathologically
# Eclectic Rubbish Lister".
#
# If you really want to teach children to use a multiparadigm
language,
# try Oz / Mozart. It is has functional, object oriented, logic and
# constraint based, features and has concurrency built in. Confusing ?
# Yes ! But unlike Perl, Mozart was DESIGNED and did not grow by a
# process of uglification / accretion.
#
# Accretion is not necessarily bad. Just look at Lisp with it
brilliant
# metaobject protocol, multiple dispatch and CLOS. But to contemplate
# teaching Perl or Basic to children.........
# Phaugh !
#
# --
# http://mail.python.org/mailman/listinfo/python-list
#

raj

unread,
May 6, 2001, 6:50:36 PM5/6/01
to
>raj> Yes ! But unlike Perl, Mozart was DESIGNED and did not grow by a
>raj> process of uglification / accretion.

>The way you say that, you make it sound like Perl was undesigned.

No.
However, elegance and pedagogic virtues were not what Larry had in
mind when he designed ( or rather, grew ) it. Functionality and
"Magic" ( in the Wallesque sense ) were what mattered.

>Perl has a very specific and elegant design behind the scenes, and
>Larry Wall would be very offended to hear you say otherwise.

To quote Larry's foreword to your own excellent book:

( after talking at amusing length about how he melted the "beads" of
AWK, sed, sh , BASIC , Lisp and C together to form Perl)

"the magical bead eventually grew into this rather odd-looking Amulet
that you see before you today. See it glitter , almost like a pearl...

The Amulet isnt exactly beautiful though; in fact up close it still
looks like a bunch of beads melted together. Well, all right, I admit
it. It's downright ugly. But never mind that. It's the Magic that
counts. "

raj

unread,
May 6, 2001, 7:13:59 PM5/6/01
to

;)

Check it out at:

http://www.mozart-oz.org

Download and install it,

http://www.mozart-oz.org/download/

http://www.mozart-oz.org/documentation/demo/

Sincerely,

Bob Calco

# Education is different from vocational training.
# Vocational training is for plumbers and those who have to
# start-work-right-now.
# Education is about understanding the fundamentals and the theory
that
# underlies the subject / the system / the "all".
# Education is meant for those capable of understanding the
# fundamentals and the theory that underlies the subject / the system
/


# the "all".
#
# In this context, I stand by my previous statements:
# Lisp, Scheme, subsetted Ada, Smalltalk , Ruby , Python (and if
# approached judiciously, even Java and C++) can be used usefully as a
# language of discourse.
#
# Perl while admirable as a tool for sys admins and wannabe-hackers [
# do you want your child to just become a sys-admin ? :-) ] is a
# linguistic mishmash that tries to be all things to all programmers
# and ends up becoming ( again to quote Larry Wall ) a "Pathologically
# Eclectic Rubbish Lister".
#

# If you really want to teach children to use a multiparadigm
language,
# try Oz / Mozart. It is has functional, object oriented, logic and
# constraint based, features and has concurrency built in. Confusing ?
# Yes ! But unlike Perl, Mozart was DESIGNED and did not grow by a
# process of uglification / accretion.
#
# Accretion is not necessarily bad. Just look at Lisp with it
brilliant

raj

unread,
May 6, 2001, 7:13:41 PM5/6/01
to
>raj> Yes ! But unlike Perl, Mozart was DESIGNED and did not grow by a
>raj> process of uglification / accretion.

>The way you say that, you make it sound like Perl was undesigned.

No.


However, elegance and pedagogic virtues were not what Larry had in
mind when he designed ( or rather, grew ) it. Functionality and
"Magic" ( in the Wallesque sense ) were what mattered.

>Perl has a very specific and elegant design behind the scenes, and


>Larry Wall would be very offended to hear you say otherwise.

To quote Larry's foreword to your own excellent book:

Biep @ http://www.biep.org

unread,
May 7, 2001, 6:41:49 AM5/7/01
to
"Larry Kilgallen" <Kilg...@eisner.decus.org.nospam> wrote in message
news:InrbsI...@eisner.encompasserve.org...

> It seems to me that regardless of the language chosen, a restricted
> subset is _always_ appropriate. For any reasonable language there
> are bound to be parts that while helpful in certain real-world
> programming situations are not illustrative of the _concepts_
> involved in programming.

Just curious: what parts of Scheme would you leave out as not necessary to
illustrate important concepts in programming (or software engineering)?

--
Biep
Reply via http://www.biep.org


Andrew Cooke

unread,
May 7, 2001, 6:57:33 AM5/7/01
to

For an introductory course you might omit whatever the Scheme equivalent
of setq is. And does Scheme have macros? - if so, they could go too.

Andrew

Marin David Condic

unread,
May 7, 2001, 10:24:14 AM5/7/01
to
The languages you mention are all useful for a student to learn at some
juncture in their education. However as a *first* language, I think some of
them would be poorly suited. Definitely C(++) and Lisp stick out as things I
would *NOT* try to teach as a first programming language. Probably you will
hear objections from others about some of the other languages. (I'm not
intimately familiar with all the ones you mention.) For beginners who know
nothing of computers, you need something that presents things in a simple,
readable way with uncomplicated semantics. Beginning students need to be
able to write simple "Hello World" programs just to get the concepts down
concerning variables, math operations, flow of control, basic I/O,
subprogram usage, etc. If you toss a complex language at them that makes
these basics at all complicated, you'll obfuscate what you want to get at &
discourage them.

My advice for a first programming language would be Ada (for a lot of
reasons besides being my favorite language :-) followed by Pascal & maybe
Modula-2. Save the other stuff until the students have progressed a little.

MDC
--
Marin David Condic
Senior Software Engineer
Pace Micro Technology Americas www.pacemicro.com
Enabling the digital revolution
e-Mail: marin....@pacemicro.com
Web: http://www.mcondic.com/


"raj" <isra...@optushome.com.au> wrote in message
news:q9n6ft0pbn903d5gq...@4ax.com...

Dodger

unread,
May 7, 2001, 8:15:18 PM5/7/01
to
"Marin David Condic" <marin.condic...@pacemicro.com> wrote in
message news:9d6b6e$1bt$1...@nh.pace.co.uk...

> My advice for a first programming language would be Ada (for a lot of
> reasons besides being my favorite language :-) followed by Pascal & maybe
> Modula-2. Save the other stuff until the students have progressed a
little.

Got a better one. It's terrible (which is a better representation of what
they will end up doing, most likely), and wonky, and regardless of all your
opinions of perl for weal or woe, it makes Perl look beautiful...

But, it will get kids programming.

LPC. Set them up a mud. Get them to code LPC (a whacked out MUD code C-based
...thing...) or some other MU* code that is actually programmable.

After their fifth soul-sucking sword or beer vending machine or pseudo-AI
dragonbot, they will have some ideas of what they are doing, most likely,
and the ideas on how it really workds will sink into their brains.

Besides, think of it like this: You can theorise about what cough medicine
to give a two year old all you want, too, but Dimetapp tastes like Koolaid,
and they won't spit it out.

Tarjei T. Jensen

unread,
May 8, 2001, 3:11:46 AM5/8/01
to

Marin David Condic wrote

>My advice for a first programming language would be Ada (for a lot of
>reasons besides being my favorite language :-) followed by Pascal & maybe
>Modula-2. Save the other stuff until the students have progressed a little.

But none of these are any improvement on Ada or sufficiently different to be
of paedagogic value. Well, perhaps Delphi for a windows project to
familiarize student with windows programming.


Greetings,


ronald schroder

unread,
May 8, 2001, 3:23:27 AM5/8/01
to
On Tue, 8 May 2001 09:11:46 +0200, "Tarjei T. Jensen"
<tarjei...@kvaerner.com> wrote:

>But none of these are any improvement on Ada or sufficiently different to be
>of paedagogic value. Well, perhaps Delphi for a windows project to
>familiarize student with windows programming.
>

I was taught Pascal in the early days, in the tradition set by
professor Edsger W. Dijkstra et al., and it didn't hurt me.
Pascal can be a very paedogogic language, was indeed designed to be
just that. And I still use Delphi, even like it.
Scheme was a fourth or fifth language for me and I like it, but I
wouldn't deem it proper for a first course. Procedural programming IS
a low level business, but it helps us to see that computers do what we
tell them, not what we want them to do.

Ronald Schröder

Marin David Condic

unread,
May 8, 2001, 9:38:48 AM5/8/01
to
If it were me, I'd just use Ada and be done with it. However, some people
may have too much of an anti-Ada bias and would refuse to use it in their
course - in which case I'd suggest considering Pascal or some other similar
language that is reasonably well known and available & provides the right
sort of constructs for teaching about how to think about programming.

You're right - there is no advantage over Ada. This is especially true since
Gnat is generally available, of descent quality and has plenty of
educational materials associated with it. A prof can hand students an
intro-level text, a compiler, an IDE with debugging capabilites and plenty
of examples of working code - all of it free or reasonably inexpensive (The
book is about all you'd have to pay for.) Syntactically and semantically,
Ada is better than Pascal & many other languages and offers plenty of room
for the student to grow. I'd use Ada for an intro class and not look back -
but obviously some people have an irrational attitude about it. (Just lets
watch how long it takes the cross-posting of this thread to bring out the
Anti-Ada bigots who know nothing of the language and have never used it, yet
*know* they hate it. :-)

I had a prof in business school who taught MIS for MBA's. He found out I
used Ada on the job and immediately began snearing at it and commenting on
it with contempt and wondering who it was who was "forcing" us to use Ada.
In conversation, I discovered that he knew *nothing* of Ada beyond rumors.
He was pretty well astonished that we would use Ada *by*choice* because we
found it technically superior. If this is the sort of prof who proposes
teaching an intro level class on programming, I'd rather he at least went
with Pascal rather than trying to teach beginners with C++ or something
equally unsuitable.

MDC
--
Marin David Condic
Senior Software Engineer
Pace Micro Technology Americas www.pacemicro.com
Enabling the digital revolution
e-Mail: marin....@pacemicro.com
Web: http://www.mcondic.com/


"Tarjei T. Jensen" <tarjei...@kvaerner.com> wrote in message
news:9d867n$or...@news.kvaerner.com...

raj

unread,
May 8, 2001, 7:46:20 PM5/8/01
to
>You're right - there is no advantage over Ada. This is especially true since
>Gnat is generally available, of descent quality and has plenty of
>educational materials associated with it. A prof can hand students an
>intro-level text, a compiler, an IDE with debugging capabilites and plenty
>of examples of working code - all of it free or reasonably inexpensive (The
>book is about all you'd have to pay for.)

The GNAT IDE should be avoided like the plague.
Aonix do a nice free ( for noncommercial use ) compiler + Ide that
should be fine for students.

Friedrich Dominicus

unread,
May 7, 2001, 11:45:23 AM5/7/01
to
"Marin David Condic" <marin.condic...@pacemicro.com> writes:

> The languages you mention are all useful for a student to learn at some
> juncture in their education. However as a *first* language, I think some of
> them would be poorly suited. Definitely C(++) and Lisp stick out as things I
> would *NOT* try to teach as a first programming language.

Why no Lisp?

Friedrich

Espen Vestre

unread,
May 9, 2001, 3:19:24 AM5/9/01
to
Friedrich Dominicus <fr...@q-software-solutions.com> writes:

> > The languages you mention are all useful for a student to learn at some
> > juncture in their education. However as a *first* language, I think some of
> > them would be poorly suited. Definitely C(++) and Lisp stick out as things I
> > would *NOT* try to teach as a first programming language.
>
> Why no Lisp?

I thougth the same. I've been teaching common lisp as the first language
for computer-inexperienced students (Macintosh Common Lisp, to be precise,
which is especially well suited for teaching) and thought it was just
great (if any of my former students read this and disagree, then feel
free to comment ;-))!
--
(espen)

Biep @ http://www.biep.org/

unread,
May 9, 2001, 6:22:15 AM5/9/01
to
"Andrew Cooke" <and...@andrewcooke.free-online.co.uk> wrote in message
news:3AF67F9D...@andrewcooke.free-online.co.uk...

>
> For an introductory course you might omit whatever the Scheme equivalent
> of setq is. And does Scheme have macros? - if so, they could go too.
>
> Andrew

O.K. In a trivial sense, if the course is introductory enough, you might
omit even lambda..

Delaying the introduction of 'set!' is often a good idea, but you have to
be careful that people don't get the impression that 'define' is a kind of
'set!' (which it unfortunately is :-( )

Syntactic abstraction is a very important concept, in my view. For
introductory courses I sometimes introduce a macro 'translate!' that
simplifies the 'define-syntax' + 'syntax-rules' machinery, and use that to
show how e.g. 'let' is defined in terms of 'lambda'.

(define-syntax translate!
(syntax-rules ()
((translate! (name . body) new)
(define-syntax name
(syntax-rules ()
((name . body) new) ) ) ) ) )

Then I state that the same locality principles that hold for procedures
also hold for syntactic transformations, and point to the existence of
let-syntax and letrec-syntax.

I normally start from the REP-loop in disussing syntactic abstraction,
first explaning read macros (such as quote, quasiquote) and print macros
(unfortunately not well supported in Scheme, but a REP loop and a print
procedure are easily written), and then come to 'define-syntax' as
eval-macros.

All this fits under the banner "never say the same thing twice", which
covers a whole lot of software engineering..

Only in a *very* introductory course I would leave out macros altogether.

Oh, and I guess some people might be willing to argue that Scheme is the
*only* programming language with real macros :-)

Marin David Condic

unread,
May 9, 2001, 9:55:15 AM5/9/01
to
First, let me point out that I have no objection to teaching anyone Lisp at
some later point in their CS education. I have nothing against Lisp, in this
sense. The reason I wouldn't teach it as a FIRST programming language should
be fairly obvious. It is complex and unlike the bulk of other programming
languages. Whatever one decides to teach as a FIRST language ought to be
simple, easily understood, easy to work with, representative of most
commonly used languages and reflective of well understood, sound programming
practices. Lisp tends to not fit this description well at all.

If you are familiar with Lisp, try this: Write a small program to read in a
couple of numbers from a keyboard, do some math with them and print the
result to the screen. Now look at it. Could a neophite with literally *zero*
experience in programming computers read it and stand a chance of
understanding what it does or how it does it? Could a neophite duplicate it
easily or modify it to do something different? Is it intuitively obvious to
even the most casual observer how to make a similar program?

That's why I wouldn't recommend Lisp as a first programming language in an
intro to CS course.

Gee. I never thought I'd have to defend THAT statement! :-)

MDC
--
Marin David Condic
Senior Software Engineer
Pace Micro Technology Americas www.pacemicro.com
Enabling the digital revolution
e-Mail: marin....@pacemicro.com
Web: http://www.mcondic.com/


"Friedrich Dominicus" <fr...@q-software-solutions.com> wrote in message
news:87snihx...@frown.here...
>
> Why no Lisp?
>

Marin David Condic

unread,
May 9, 2001, 10:00:32 AM5/9/01
to
I don't know what you don't like about AdaGIDE. It is not terribly
sophisticated, but it does work reasonably well for relatively smallish
projects. Perhaps the Aonix environment is a better thing - maybe its just a
matter of taste. One point to observe here is that there are at least two
available compilers and environments suitable for teaching a programming
course and both are available to students at no cost. IMHO, that's a good
thing and a reason to use Ada in a CS department.

MDC
--
Marin David Condic
Senior Software Engineer
Pace Micro Technology Americas www.pacemicro.com
Enabling the digital revolution
e-Mail: marin....@pacemicro.com
Web: http://www.mcondic.com/

"raj" <isra...@optushome.com.au> wrote in message

news:7p1hfto4sa6d4sek6...@4ax.com...

Ola Rinta-Koski

unread,
May 9, 2001, 10:18:07 AM5/9/01
to
"Marin David Condic" <marin.condic...@pacemicro.com> writes:
> If you are familiar with Lisp, try this: Write a small program to read in a
> couple of numbers from a keyboard, do some math with them and print the
> result to the screen.

(let ((foo 0))
(dotimes (i 5)
(incf foo (read)))
foo)

> Now look at it. Could a neophite with literally *zero*
> experience in programming computers read it and stand a chance of
> understanding what it does or how it does it?

Not being a neophyte, I'll just have to guess: yes and yes.
--
Ola Rinta-Koski o...@cyberell.com
Cyberell Oy +358 41 467 2502
Rauhankatu 8 C, FIN-00170 Helsinki, FINLAND www.cyberell.com

chris.danx

unread,
May 9, 2001, 10:36:14 AM5/9/01
to
> I don't know what you don't like about AdaGIDE. It is not terribly
> sophisticated, but it does work reasonably well for relatively smallish
> projects.

I don't know what he's got against it either. I use AdaGIDE all the time and
it's fine for me. In the beginning I had some problems with it not putting the
package name in the save box but this is fixed now so i have few problems with
it. The only real annoying thing is that i can't open multiple AdaGIDEs' in
Win98 anymore and i don't know why. It was especially good for fixing broken
programs where i'd put the main program in one AdaGIDE and the broken package
body in another. This might just be a windows thing though. Any thoughts?

Danx

Biep @ http://www.biep.org/

unread,
May 9, 2001, 10:53:50 AM5/9/01
to
"Friedrich Dominicus" <fr...@q-software-solutions.com> wrote in message
news:87snihx...@frown.here...
> Why no Lisp?

"Marin David Condic" <marin.condic...@pacemicro.com> wrote in
message news:9dbi83$sji$1...@nh.pace.co.uk...


> The reason I wouldn't teach it as a FIRST programming language should be
fairly obvious.
> It is complex and unlike the bulk of other programming languages.

Yet, the PLT group (http://www.teach-scheme.org) seems to be fairly
successful using Scheme to introduce programming at highschools using the
book "How to Design Programs" (http://www.htdp.org).

Unlike - yes, but complex?

Friedrich Dominicus

unread,
May 9, 2001, 11:39:54 AM5/9/01
to
"Marin David Condic" <marin.condic...@pacemicro.com> writes:
>
> If you are familiar with Lisp, try this: Write a small program to read in a
> couple of numbers from a keyboard, do some math with them and print the
> result to the screen.
Gosh, how much simpler as in Lisp can it be? No declarations, no
puzzling about counting probably etc etc.

> Now look at it. Could a neophite with literally *zero*
> experience in programming computers read it and stand a chance of
> understanding what it does or how it does it?

yes, yes

> Could a neophite duplicate it
> easily or modify it to do something different?

yes

>Is it intuitively obvious to
> even the most casual observer how to make a similar program?

yes

A beginner is not biased in any way and so it doe not matter what
he/she started from. If he starts with Lisp; C, Java looks messy. If
you start with C or Pascal or whatever imperative oo language is
around Lisp will look messy.

Regards
Friedrich

Andreas Krennmair

unread,
May 9, 2001, 2:24:26 PM5/9/01
to
Friedrich Dominicus <fr...@q-software-solutions.com> wrote:
> "Marin David Condic" <marin.condic...@pacemicro.com> writes:
> >
> > If you are familiar with Lisp, try this: Write a small program to read in a
> > couple of numbers from a keyboard, do some math with them and print the
> > result to the screen.
> Gosh, how much simpler as in Lisp can it be? No declarations, no
> puzzling about counting probably etc etc.
The problem is that Lisp is in no way similar to a natural language. And
natural language can be understood easier than some functional, theoretical
stuff with a unique concept like Lisp. Don't get me wrong, Lisp is a great
language, and I personally find it quite exciting as four year Pascal and
two year C/C++ programmer, but it's hardly usable for teaching, because it
is so unique (well, you _could_ to functional programming in C, but it would
be considered bad style).

I currently go to an Austrian school where mostly programming/CS/software
engineering-related things are taught (it's for 5 years, and you start
at an age of 14), and we started programming in Pascal. I was bored in
the beginning, because I already knew Pascal, but then the teacher explained
me that they chose to teach Pascal because it is so easy to read and to
understand and it still has so many things common with other languages.
Of course, in the second year, you do some Lisp and Prolog, which confuses
quite a lot of people, but after a week or so, they usually get it (at least
I did with Lisp :).

> > Now look at it. Could a neophite with literally *zero*
> > experience in programming computers read it and stand a chance of
> > understanding what it does or how it does it?
>
> yes, yes

for my comment, see above. Lisp has hardly anything in common with natural
languages. Or could you express "My girlfriend's name is Suzy and her age
is 17" as readable as this in Lisp:
$girlfriend{'name'} = "Suzy";
$girlfriend{'age'} = 17;

Of course, this is not the best example, since Perl has a syntax that is
not the optimum for beginners.

> > Could a neophite duplicate it
> > easily or modify it to do something different?
> yes

No. Only after understanding the fundamental concepts of Lisp.

> >Is it intuitively obvious to
> > even the most casual observer how to make a similar program?
> yes

No. See answer before. :)

> A beginner is not biased in any way and so it doe not matter what
> he/she started from. If he starts with Lisp; C, Java looks messy. If

It _does_ matter. Beginners can easily get frustrated because of the
sometimes confusing syntax. BTW, I wouldn't recommend starting with Java
or C/C++, either. I'd recommend and teach (if I were a teacher :) some
Wirth language, because they're designed especially for teaching basics
of programming.

Best regards,
Andreas Krennmair
--
void strncpy(char *p, char *q, int n){while(n--){*p++=*q++;}}

David Thornley

unread,
May 9, 2001, 6:56:01 PM5/9/01
to
In article <9dbi83$sji$1...@nh.pace.co.uk>,

Marin David Condic <marin.condic...@pacemicro.com> wrote:
>First, let me point out that I have no objection to teaching anyone Lisp at
>some later point in their CS education. I have nothing against Lisp, in this
>sense. The reason I wouldn't teach it as a FIRST programming language should
>be fairly obvious. It is complex and unlike the bulk of other programming
>languages. Whatever one decides to teach as a FIRST language ought to be
>simple, easily understood, easy to work with, representative of most
>commonly used languages and reflective of well understood, sound programming
>practices. Lisp tends to not fit this description well at all.
>
C++, properly taught, does. I don't know if it's properly taught
anywhere. I've taught C as a first language successfully, and the
areas that gave the most trouble are the areas that I could avoid
using C++. No more pointers, C-style arrays, C-style string handling,
or printf/scanf.

Now, if you try to learn C++ really well, you'll run into the wolves
that lurk in the corners, but that's not where you'd be teaching a
beginner.

Common Lisp, if taught properly, is also very good. What you may
be losing by using a language that looks different you make up for
by omitting so much of the felderkarb that other languages have.
In CL, if you need a number, you don't have to decide exactly
what sort of number it is to be before the program works. More
of a CL program is an attack on the problem than in most languages.


--
David H. Thornley | If you want my opinion, ask.
da...@thornley.net | If you don't, flee.
http://www.thornley.net/~thornley/david/ | O-

Sashank Varma

unread,
May 9, 2001, 7:01:10 PM5/9/01
to
In article <9dc20p$hh15e$1...@ID-37382.news.dfncis.de>, a.kre...@aon.at wrote:

[snip]


>The problem is that Lisp is in no way similar to a natural language. And
>natural language can be understood easier than some functional, theoretical
>stuff with a unique concept like Lisp.

[snip]


>Beginners can easily get frustrated because of the
>sometimes confusing syntax. BTW, I wouldn't recommend starting with Java
>or C/C++, either. I'd recommend and teach (if I were a teacher :) some
>Wirth language, because they're designed especially for teaching basics
>of programming.

[snip]

can you provide some evidence that:

(1) any standard general-purpose programming languages resemble natural
language at all, that there is some metric of natural language-ness
by which they can be ordered, and that wirth-style languages score
higer on this metric than lisp?

(2) the degree to which a programming language resembles natural
language predicts the ease with which it will be learned?

(if you thinking i'm picking nits, note that i've granted you the
implicit assumption that there is a singular quality shared by all
natural languages, a chomsky-esque universal grammar perhaps, that i
could have also questioned.)

there are many formal notations, and while one pressure on the form
of notations may be resemblance to natural language, there are others
of greater importance (e.g., minimizing the difficulty of performing
certain operations). for example, it's not the case that speakers
of SVO natural languages are any more or less likely to write
arithmetic expressions using infix than speakers of natural languages
who place verbs at the end of clauses (SOV).

sashank

David Starner

unread,
May 9, 2001, 8:01:01 PM5/9/01
to
On Wed, 09 May 2001 18:01:10 -0500, Sashank Varma <sashan...@vanderbilt.edu> wrote:
> can you provide some evidence that:
>
> (1) any standard general-purpose programming languages resemble natural
> language at all, that there is some metric of natural language-ness
> by which they can be ordered, and that wirth-style languages score
> higer on this metric than lisp?
>
> (2) the degree to which a programming language resembles natural
> language predicts the ease with which it will be learned?

Tell me what
!bbz#,^az@bz,
does.

Then tell me what

OPEN FILE ARGUMENT 2 AS 2
BEGIN LOOP
LOAD FILE ARGUMENT 1 INTO BUFFER
COPY BUFFER TO 2
FINISH LOOP
does.

If I came upon the first, I would give up. The second, anyone can
probably get some idea of basically what it's doing. For a new
student, knowing that they aren't totally lost can be a huge
confidence builder.

As for lisp itself, just from the name, what does defun or cadar
do? What do FUNCTION, PROCEDURE and BEGIN do? I've seen 2 + 2 since
the first days of school. Why (+ 2 2)? Learning a new vocabulary,
a new equation syntax is not what you want to be teaching when you
have so much else to teach.

> (if you thinking i'm picking nits, note that i've granted you the
> implicit assumption that there is a singular quality shared by all
> natural languages, a chomsky-esque universal grammar perhaps, that i
> could have also questioned.)

That's a theoritical assumption. How about "The vast majority of the
people who are going to be learning computer programming know an
Indo-European language, Russian, Chinese or Japanese."

> there are many formal notations, and while one pressure on the form
> of notations may be resemblance to natural language, there are others
> of greater importance (e.g., minimizing the difficulty of performing
> certain operations).

No, that's not of greater importance. It is, in fact, irrelevant for
any reasonable language. The goal is teaching people to program,
not helping experianced programmers hack up scripts or researchers
write up quicker chess programs. If something is difficult in your
chosen language, you put that off until a latter class, possibly
even in a more suitable language.

--
David Starner - dstar...@aasaa.ofe.org
Pointless website: http://dvdeug.dhis.org
"I don't care if Bill personally has my name and reads my email and
laughs at me. In fact, I'd be rather honored." - Joseph_Greg

Mark VandeWettering

unread,
May 10, 2001, 1:53:01 AM5/10/01
to
Marin David Condic <marin.condic...@pacemicro.com> wrote:

>First, let me point out that I have no objection to teaching anyone Lisp at
>some later point in their CS education. I have nothing against Lisp, in this
>sense. The reason I wouldn't teach it as a FIRST programming language should
>be fairly obvious. It is complex and unlike the bulk of other programming
>languages. Whatever one decides to teach as a FIRST language ought to be
>simple, easily understood, easy to work with, representative of most
>commonly used languages and reflective of well understood, sound programming
>practices. Lisp tends to not fit this description well at all.
>
>If you are familiar with Lisp, try this: Write a small program to read in a
>couple of numbers from a keyboard, do some math with them and print the
>result to the screen. Now look at it. Could a neophite with literally *zero*
>experience in programming computers read it and stand a chance of
>understanding what it does or how it does it? Could a neophite duplicate it
>easily or modify it to do something different? Is it intuitively obvious to
>even the most casual observer how to make a similar program?
>
>That's why I wouldn't recommend Lisp as a first programming language in an
>intro to CS course.
>
>Gee. I never thought I'd have to defend THAT statement! :-)

Well, programming languages are likely to bring out enthusiasts (read
"zealots") both for and against.

I'll pretend for the moment that we were talking about Scheme, as that
is my preferred variant. There are a number of features why I believe
it to be an excellent choice for beginning novice programmers.

1) While some people do get mired in the whole paren thing, Scheme has
a remarkably simple syntax, simpler than virtually any other programming
language. The entire language report is reasonably small, even when
including things like macros and the like.

2) Scheme supports a wide variety of programming styles: from procedural
to functional to object oriented to logic programs.

3) Scheme is interactive, which encourages experimentation.

4) Scheme has good textbooks, including what I consider the best computer
science textbook around: Structure and Interpretation of Computer Programs.

5) Scheme encourages thinking of programs as data.

I could probably dig up some more reasons, but these I think are all quite
compelling. I'm actually not very fond of untyped languages, but in most
other respects I think it is an excellent choice, indeed, perhaps the
best one among many possibilities.

Mark

>
>MDC
>--
>Marin David Condic
>Senior Software Engineer
>Pace Micro Technology Americas www.pacemicro.com
>Enabling the digital revolution
>e-Mail: marin....@pacemicro.com
>Web: http://www.mcondic.com/
>
>
>"Friedrich Dominicus" <fr...@q-software-solutions.com> wrote in message
>news:87snihx...@frown.here...
>>
>> Why no Lisp?
>>
>
>
>


--
/* __ __ __ ____ __*/float m,a,r,k,v;main(i){for(;r<4;r+=.1){for(a=0;
/*| \/ |\ \ / /\ \ / /*/a<4;a+=.06){k=v=0;for(i=99;--i&&k*k+v*v<4;)m=k*k
/*| |\/| | \ V / \ \/\/ / */-v*v+a-2,v=2*k*v+r-2,k=m;putchar("X =."[i&3]);}
/*|_| |_ark\_/ande\_/\_/ettering <ma...@telescopemaking.org> */puts("");}}

Raffael Cavallaro

unread,
May 10, 2001, 1:45:17 AM5/10/01
to
In article <9db5kg$gk5c4$1...@ID-63952.news.dfncis.de>, "Biep @
http://www.biep.org/" <repl...@my-web-site.com> wrote:

>Oh, and I guess some people might be willing to argue that Scheme is the
>*only* programming language with real macros :-)

Yeah - it even has 4 different kinds depending on what implementation
you're using - neat! ;^)

In a more serious vein, Dylan has "real" macros too, but then Dylan is
arguably Scheme on OO steroids.

Raf

--

Raffael Cavallaro, Ph.D.
raf...@mediaone.net

Mark VandeWettering

unread,
May 10, 2001, 2:06:23 AM5/10/01
to
On 9 May 2001 18:24:26 GMT, Andreas Krennmair <a.kre...@aon.at> wrote:

>The problem is that Lisp is in no way similar to a natural language.

I find this statement curious. Are there programming languages which are
similar to natural languages? If there are, what benefits are there from
using those languages?

>And
>natural language can be understood easier than some functional, theoretical
>stuff with a unique concept like Lisp.

I've heard this argument about "natural languages" used with regards to
perl before. I am always confused by it. Don't get me wrong, perl is
an incredibly useful tool, and I give Larry Wall all the credit in the
universe for making such a great tool and giving it to the world, but
I am constantly confused by justification. First of all, precisely what
feature of perl is similar to natural languages? Second of all, why
do we think that natural languages are good? Natural languages are
notoriously hard to learn, full of exceptions, and often vague. Last,
what makes you think that processes are best described in terms of
natural languages? Mathematics implements entire languages specialized
to their domain just so that they can express the ideas they have clearly
and concisely.

>Don't get me wrong, Lisp is a great
>language, and I personally find it quite exciting as four year Pascal and
>two year C/C++ programmer, but it's hardly usable for teaching, because it
>is so unique (well, you _could_ to functional programming in C, but it would
>be considered bad style).

The reason that Scheme (I'll keep pretending you were talking about Scheme)
is good is precisely becaue it DOES leverage new ideas and gets students
to think about computation not in the natural way that they think about it,
but in the formalized way that computers do.

>Lisp has hardly anything in common with natural
>languages. Or could you express "My girlfriend's name is Suzy and her age
>is 17" as readable as this in Lisp:
>$girlfriend{'name'} = "Suzy";
>$girlfriend{'age'} = 17;

(set! girlfriend '((name . "Suzy") (age . 17)))

Is that so different? Are association lists really harder than associative
arrays?

>Of course, this is not the best example, since Perl has a syntax that is
>not the optimum for beginners.

In fact, it is very unoptimal for beginners.

>> A beginner is not biased in any way and so it doe not matter what
>> he/she started from. If he starts with Lisp; C, Java looks messy. If

>It _does_ matter. Beginners can easily get frustrated because of the
>sometimes confusing syntax.

I'm not sure how you can present a program fragment in perl, and then
in the same post claim that LISP has a confusing syntax.

>BTW, I wouldn't recommend starting with Java
>or C/C++, either.

Neither would I, unless you want them never to program again.

>I'd recommend and teach (if I were a teacher :) some
>Wirth language, because they're designed especially for teaching basics
>of programming.

You could do worse than Pascal/Modula/Oberon, but in most respects I
think Scheme is better for beginning programmers.

>Best regards,
>Andreas Krennmair
>--
>void strncpy(char *p, char *q, int n){while(n--){*p++=*q++;}}

Mark VandeWettering

unread,
May 10, 2001, 2:10:26 AM5/10/01
to

What are FILES? What is an ARGUMENT? What is this AS 2 business?
What is a BUFFER?

Prefix notation is not difficult to learn, especially when there is
no exceptions.

Scheme uses a more sensible "define" keyword. Functional programming
languages that use pattern matching are more straightforward to code
list processing algorithms in, I'll admit.

>> (if you thinking i'm picking nits, note that i've granted you the
>> implicit assumption that there is a singular quality shared by all
>> natural languages, a chomsky-esque universal grammar perhaps, that i
>> could have also questioned.)
>
>That's a theoritical assumption. How about "The vast majority of the
>people who are going to be learning computer programming know an
>Indo-European language, Russian, Chinese or Japanese."

None of which helps you at all to learn any programming language that I've
ever learned.

>> there are many formal notations, and while one pressure on the form
>> of notations may be resemblance to natural language, there are others
>> of greater importance (e.g., minimizing the difficulty of performing
>> certain operations).
>
>No, that's not of greater importance. It is, in fact, irrelevant for
>any reasonable language. The goal is teaching people to program,
>not helping experianced programmers hack up scripts or researchers
>write up quicker chess programs. If something is difficult in your
>chosen language, you put that off until a latter class, possibly
>even in a more suitable language.
>
>--
>David Starner - dstar...@aasaa.ofe.org
>Pointless website: http://dvdeug.dhis.org
>"I don't care if Bill personally has my name and reads my email and
>laughs at me. In fact, I'd be rather honored." - Joseph_Greg

FM

unread,
May 10, 2001, 3:28:34 AM5/10/01
to
Andreas Krennmair <a.kre...@aon.at> wrote:

>The problem is that Lisp is in no way similar to a natural language. And
>natural language can be understood easier than some functional, theoretical
>stuff with a unique concept like Lisp.

You've got at least three assumptions there, none of which
I agree with. I don't see why a programming language
should be similar to a natural language (the only sense in
which they are both languages is that they have some form
of grammar) and it takes quite a lot of arrogance to say
that a programming language is harder to understand than a
natural language or that the imperative paradigm is closer
to the natural way of describing things for humans than
the functional paradigm.

Also, Lisp is hardly some functional thereotical stuff
with a unique concept.


>Don't get me wrong, Lisp is a great
>language, and I personally find it quite exciting as four year Pascal and
>two year C/C++ programmer, but it's hardly usable for teaching, because it
>is so unique (well, you _could_ to functional programming in C, but it would
>be considered bad style).

What is *so* unique? Lisp is a label applied to a broad
family of languages, not a single language. That alone
takes away the uniqueness. Furthermore, the functional
paradigm is hardly confined to the Lisp family.


>I currently go to an Austrian school where mostly programming/CS/software
>engineering-related things are taught (it's for 5 years, and you start
>at an age of 14),

Ouch. This is probably a bad idea...


>> > Now look at it. Could a neophite with literally *zero*
>> > experience in programming computers read it and stand a chance of
>> > understanding what it does or how it does it?
>>
>> yes, yes
>for my comment, see above. Lisp has hardly anything in common with natural
>languages. Or could you express "My girlfriend's name is Suzy and her age
>is 17" as readable as this in Lisp:
>$girlfriend{'name'} = "Suzy";
>$girlfriend{'age'} = 17;

Except that this is completely wrong. Your perl statements
are imperative, not descriptive or even declarative. At
least most languages in the Lisp family will let you write
something close to:

(with (she (my girlfriend))
(be (of name she) "Suzy")
(be (of age she) 17))

Of course what this is supposed to mean is complete up to
the programmer.


That's aside from the fact that you chose an arbitrary
sentence that isn't at all representative of natural
languages. For a better exercise, take a few paragraphs
from a book or better yet, record a phone conversation or
radio broadcasts and come up with a formal notation that
could be used to capture their meaning.

>Of course, this is not the best example, since Perl has a syntax that is
>not the optimum for beginners.

Perl's syntax is the closest thing I've seen to a natural
syntax in a programming language.

Dan.


--
Q: What's a WASP's idea of open-mindedness?
A: Dating a Canadian.

Andrew Bromage

unread,
May 10, 2001, 3:57:41 AM5/10/01
to
G'day all.

ma...@peewee.telescopemaking.org (Mark VandeWettering) writes:

>First of all, precisely what
>feature of perl is similar to natural languages?

You might want to read this:

http://www.wall.org/~larry/natural.html

>Second of all, why
>do we think that natural languages are good?

Well, they're not "good". Natural languages are morally neutral. But
the fact that we're both using natural languages right now seems to
indicate that they are pragmatically useful.

Of course, if we wanted to speak more precisely, we could use jargon
vocabulary, or impose structure on our language where it is needed
(e.g. pseudocode), or if we were in the same room, we could even use
gestures or draw diagrams on a whiteboard. In any case, we're just
supplementing the natural language with something else.

>Mathematics implements entire languages specialized
>to their domain just so that they can express the ideas they have clearly
>and concisely.

Which is precisely why my preferred first language is something more like
Haskell. If the student is already familiar with mathematical notation,
Haskell comes naturally. Rather than spending brainshare on learning
an unfamiliar syntax (and let's face it, Lisp/Scheme has an unfamiliar
syntax, even if it is a simple one), the student can spend their energy
on learning programming.

Cheers,
Andrew Bromage

Biep @ http://www.biep.org/

unread,
May 10, 2001, 4:02:54 AM5/10/01
to
On a related note, what would people think of OZ as a beginners' language?
(http://www.mozart-oz.org) Is it used anywhere as such?

Andrew Cooke

unread,
May 10, 2001, 4:06:48 AM5/10/01
to

There's a book in draft form that uses Oz to introduce programming in a
range of styles - I'd think it would be a very good way to learn (but I
guess it would depend a lot on the student - I'm thinking of the kind of
student who'd enjoy SICP, not the kind who's wondering what the mouse is
for).

Andrew

Jochen Schmidt

unread,
May 10, 2001, 4:51:14 AM5/10/01
to
FM wrote:

(setf (gethash "name" *girlfriend*) "Suzy"
(gethash "age" *girlfirend*) 17)

Is more like the equivalent to the Perl code.

but I would do:

(defclass girlfriend ()
((name :accessor girlfriend-name :initarg :name)
(age :accessor girlfirend-age :initarg :age)))

and then

(make-instance 'girlfriend :name "Suzy" :age 17)

Which is IMHO much more natural than the Perlcode.

> That's aside from the fact that you chose an arbitrary
> sentence that isn't at all representative of natural
> languages. For a better exercise, take a few paragraphs
> from a book or better yet, record a phone conversation or
> radio broadcasts and come up with a formal notation that
> could be used to capture their meaning.
>
>
>
>>Of course, this is not the best example, since Perl has a syntax that is
>>not the optimum for beginners.
>
> Perl's syntax is the closest thing I've seen to a natural
> syntax in a programming language.

?? Is that meant as a joke or what????

Regards,
Jochen

Jochen Schmidt

unread,
May 10, 2001, 5:02:47 AM5/10/01
to
Biep @ http://www.biep.org/ wrote:

> "Andrew Cooke" <and...@andrewcooke.free-online.co.uk> wrote in message
> news:3AF67F9D...@andrewcooke.free-online.co.uk...

> Oh, and I guess some people might be willing to argue that Scheme is the


> *only* programming language with real macros :-)

hmm... ever heard of "Common Lisp" ?

I like the Common-Lisp Macrosystem more than Scheme's restrictive
"Hygienic" Macros.

Regards,
Jochen

FM

unread,
May 10, 2001, 4:08:13 AM5/10/01
to
David Starner <dvd...@x8b4e53cd.dhcp.okstate.edu> wrote:
>On Wed, 09 May 2001 18:01:10 -0500, Sashank Varma <sashan...@vanderbilt.edu> wrote:
>> can you provide some evidence that:
>>
>> (1) any standard general-purpose programming languages resemble natural
>> language at all, that there is some metric of natural language-ness
>> by which they can be ordered, and that wirth-style languages score
>> higer on this metric than lisp?
>>
>> (2) the degree to which a programming language resembles natural
>> language predicts the ease with which it will be learned?
>
>Tell me what
> !bbz#,^az@bz,
>does.

Depends on the language. Give me the language spec or a
reference implementation.


>Then tell me what
>
> OPEN FILE ARGUMENT 2 AS 2
> BEGIN LOOP
> LOAD FILE ARGUMENT 1 INTO BUFFER
> COPY BUFFER TO 2
> FINISH LOOP
>does.

Same here.


>If I came upon the first, I would give up. The second, anyone can
>probably get some idea of basically what it's doing. For a new
>student, knowing that they aren't totally lost can be a huge
>confidence builder.

It can also spawn a huge number of unwarranted assumptions
that will plague the process of learning. They will have
to learn to deal with the rigors of a formal grammar at
one point or another. The problem with the above grammar,
as far as I can infer from the code segment, is that it's
terribly complicated if you try to specify any substantial
subset of it.


>As for lisp itself, just from the name, what does defun or cadar
>do? What do FUNCTION, PROCEDURE and BEGIN do?

None of them does anything remotely close to what anyone
would be able to infer from one's knowledge of English
alone


>I've seen 2 + 2 since
>the first days of school. Why (+ 2 2)? Learning a new vocabulary,
>a new equation syntax is not what you want to be teaching when you
>have so much else to teach.

What equation syntax? Lisp doesn't have equations as part
of the language. Or algebra, for that matter. I'm rather
used to writing ab instead of a * b and how would you
support that? Allow only single-character identifiers?


>> (if you thinking i'm picking nits, note that i've granted you the
>> implicit assumption that there is a singular quality shared by all
>> natural languages, a chomsky-esque universal grammar perhaps, that i
>> could have also questioned.)
>
>That's a theoritical assumption. How about "The vast majority of the
>people who are going to be learning computer programming know an
>Indo-European language, Russian, Chinese or Japanese."

I don't know how many of the above languages you can
speak, but there are enormous differences among them.


Dan.

--
What an author likes to write most is his signature on the back of a cheque.
-- Brendan Francis

Ola Rinta-Koski

unread,
May 10, 2001, 5:16:28 AM5/10/01
to
thor...@visi.com (David Thornley) writes:
> C++, properly taught, does. I don't know if it's properly taught
> anywhere. I've taught C as a first language successfully, and the
> areas that gave the most trouble are the areas that I could avoid
> using C++. No more pointers, C-style arrays, C-style string handling,
> or printf/scanf.

I must be missing something here. What kind of non-trivial program
can be written without pointers in C++? Certainly not one using any
OOP features like virtual functions etc.

Francis Leboutte

unread,
May 10, 2001, 5:22:04 AM5/10/01
to
"Marin David Condic" <marin.condic...@pacemicro.com> wrote:

>...


>That's why I wouldn't recommend Lisp as a first programming language in an
>intro to CS course.

Lisp was my first programming language. It has been a pleasure and easy. Since
then, I have always regretted to have to program in other languages, even if
sometimes it was fun too.

>Gee. I never thought I'd have to defend THAT statement! :-)

Maybe you will learn something :-)

>MDC

--
www.algo.be
Logo programming : www.algo.be/logo.html

Markus Mottl

unread,
May 10, 2001, 7:09:08 AM5/10/01
to
In comp.lang.functional Andreas Krennmair <a.kre...@aon.at> wrote:
> The problem is that Lisp is in no way similar to a natural language.

Same is true for all _programming_ languages. Let's not try to maintain
the illusion that programming languages are, could be, or even should be
similar to natural language. Natural language is highly ambiguous and
imprecise, which surely does not make it a good choice for programming
tasks.

> And natural language can be understood easier than some functional,
> theoretical stuff with a unique concept like Lisp.

Sure: you have had about two decades of training, several hours a
day. This definitely makes you good at speaking natural language.
Natural language more easily understood than Lisp? Try to learn Chinese
and tell me again...

Furthermore, I wouldn't regard Lisp as particularly theoretically
inspired, at least not if you compare it to "real" functional languages
like e.g. Haskell.

And yes, this "theoretical" stuff is remarkably readable. Go and look for
yourself:

http://www.haskell.org

Or try a language from the ML-family, e.g.:

http://www.ocaml.org

> I was bored in the beginning, because I already knew Pascal, but then
> the teacher explained me that they chose to teach Pascal because it
> is so easy to read and to understand and it still has so many things
> common with other languages.

The true reason most likely is that he had learnt Pascal himself in
school and therefore also uses it for teaching.

> Lisp has hardly anything in common with natural
> languages. Or could you express "My girlfriend's name is Suzy and her age
> is 17" as readable as this in Lisp:
> $girlfriend{'name'} = "Suzy";
> $girlfriend{'age'} = 17;

Don't cheat yourself. There is absolutely no reason why a language like
Perl should be considered anywhere close to natural language. And yes,
I'd say that most well-designed languages make tasks like handling
records significantly easier and safer than Perl.

Take this Lisp-example. First we define a structure to describe persons:

(defstruct (person) (name) (age))

Now we create a value for your girlfriend:

(make-person :name "Suzy" :age 17)

To be clear, I am not a particular friend of Lisp and strongly prefer
other (functional and logic) languages. But I just wanted to show that
your claim is not justified.

Other languages also seem much more "natural" to me than your
Perl-example, e.g.:

OCaml with tuples:

let my_girlfriend = "Suzy", 17

Or (with more structure for readability):

type person = { name : string; age : int }

let my_girlfriend = { name = "Suzy"; age = 17 }

None of these examples looks more "theoretical" or less "natural" than
yours. It's probably best if you just take a look at the documentation
of these and other languages, play around a bit, and maybe you'll find
that these languages are much more elegant than you initially thought...

Best regards,
Markus Mottl

--
Markus Mottl, mo...@miss.wu-wien.ac.at, http://miss.wu-wien.ac.at/~mottl

John English

unread,
May 10, 2001, 9:03:58 AM5/10/01
to
Mark VandeWettering wrote:
> I am constantly confused by justification. First of all, precisely what
> feature of perl is similar to natural languages?

You can write poetry in it? :-)

-----------------------------------------------------------------
John English | mailto:j...@brighton.ac.uk
Senior Lecturer | http://www.it.bton.ac.uk/staff/je
Dept. of Computing | ** NON-PROFIT CD FOR CS STUDENTS **
University of Brighton | -- see http://burks.bton.ac.uk
-----------------------------------------------------------------

Michael Livshin

unread,
May 10, 2001, 9:44:45 AM5/10/01
to
John English <j...@brighton.ac.uk> writes:

> Mark VandeWettering wrote:
> > I am constantly confused by justification. First of all, precisely what
> > feature of perl is similar to natural languages?
>
> You can write poetry in it? :-)

there's nothing natural about poetry.

--
Computer Science is embarrassed by the computer.
-- Alan Perlis

Eugene Zaikonnikov

unread,
May 10, 2001, 10:44:53 AM5/10/01
to
* "AK" == Andreas Krennmair <a.kre...@aon.at> writes:

AK> The problem is that Lisp is in no way similar to a natural
AK> language. And natural language can be understood easier than some
AK> functional, theoretical stuff with a unique concept like
AK> Lisp.

Lisp isn't a language with a unique concept for a very long time. It
provides support for quite a few paradigms and does it much better
than many of the languages.

AK> Lisp has hardly anything in common with natural languages. Or
AK> could you express "My girlfriend's name is Suzy and her age is
AK> 17" as readable as this in Lisp:
AK> $girlfriend{'name'} = "Suzy";
AK> $girlfriend{'age'} = 17;

(make-instance 'girlfriend
:name "Suzy"
:age 17)

?

--
Eugene

Georg Bauhaus

unread,
May 10, 2001, 11:13:14 AM5/10/01
to
Marin David Condic (marin.condic...@pacemicro.com) wrote:

: If you are familiar with Lisp, try this: Write a small program to read in a


: couple of numbers from a keyboard, do some math with them and print the

: result to the screen. Now look at it. Could a neophite with literally *zero*


Then, Ola Rinta-Koski (with f'Up to iso-something):

"(let ((foo 0))
(dotimes (i 5)
(incf foo (read)))
foo)

[is easy]"

: That's why I wouldn't recommend Lisp as a first programming language in an
: intro to CS course.

: Gee. I never thought I'd have to defend THAT statement! :-)

The above looks like Scheme with macros(?) and has a few didactical
problems, as I'd like to report, with some additional guesses thrown in.
(not to say that these problems are not present in many or all
other languages): You may have to answer some questions from your
inexperieced(!) listeners,
- what is let? and then: why do I have to place an additional pair
of parens around foo 0?
- what is i for?
- what does it mean that this foo is standing on its own
on the last line?
- if the first thing in a list is a function that does something
with the rest, then what function is i?
- ...

As you may see by now, there _is_ some complexity even
behind the most "simple" syntax, and while, of course,
all these questions can be answered, the tree (or graph?)
of follow up questions is going to grow large.
So some of these things (like creating "variables") had
better explain themselves a bit more, i.e. without
overloaded parentheses, for example.

When it was my job to teach OO Prgramming with Java :-( to
grown ups with essentially only high school math background,
(it had to be Java, by contract) I was puzzled that there
was no problem in talking about graphs and trees of inheritance
at a very early stage (though not formally, and by example),
but it was _very_
difficult to explain the concept of a function, what it is,
what it is there for, let alone, what it is as a method of
some class.

(All these phaenomena may be my fault, but in this case, I don't
think so.)

One reason seems to be abstraction: If they have
been doing math for years, it doesn't seem difficult to
see that there is a form in "multiply the number of
goods by their respective prices" that can be used for
anything that has a price, be it bread or a house or a
service. And to find a notation for this function.
But it does seem to become difficult at the point
where familiarity stops: real machines, real data,
real OSs, and the first new syntax, math background or not.

What worked well was flow charts. Very well, indeed.
But which language serves well in the transport of flow
charts to code, and does so after a few introductory words?
I'll vote for a language that has a lucid syntax for this
like "IF condition THEN do_this, OTHERWISE do_that."
until, after formal training, a alternative approach becomes
feasable.
(Maybe the punctiation (which carries meaning!) could
be replaced with words, so people don't become annoyed
with orthographical issues right from the beginning?
Or should they be drilled to formal exactitude? :-)

What I think is lively important in the choice of a
first programming language, is to have a visual hook in them
to explain fundamental issues (like why "c = c + 1" is
valid in languages actually taught, and which needs
some notion of an accumulator or equivalent, on computers).

If you want to know how to code, you will
have to know a setq-free and a setq-only approach
(after all, there is memory, in real machines at some
level). Is there a good way to do only one of them at
the beginning? I don't know but I would love to read
some real empirical evidence.


Georg Bauhaus

PS: What I find puzzling is the lack of an abundance of
statements from
people who have actually taught several very different
languages...

PPS: And as for beginners with math skills, who cannot yet
master SICP, Abelson's LOGO book _is_ a good reading,
I find.

brl...@my-deja.com

unread,
May 10, 2001, 11:17:25 AM5/10/01
to
"Marin David Condic" <marin.condic...@pacemicro.com> writes:

> First, let me point out that I have no objection to teaching anyone Lisp at
> some later point in their CS education. I have nothing against Lisp, in this
> sense. The reason I wouldn't teach it as a FIRST programming language should
> be fairly obvious.

The Scheme dialect of Lisp is, in fact, largely designed with pedagogy
in mind. It is used as a first programming language not only at places
like MIT, but even in high schools. Here is some rationale behind such
a choice:

http://www.htdp.org/2001-01-18/Book/node4.htm

> If you are familiar with Lisp, try this: Write a small program to read in a
> couple of numbers from a keyboard, do some math with them and print the
> result to the screen.

Since Scheme is interactive, a beginning programmer doesn't need to
learn keyboard I/O. Given the amount of GUI and web programming done
these days, why bother? Beginning programming is more about the process
of transforming input (e.g. function arguments) into output (e.g. return
values), rather than the mechanics of I/O by keyboard, web forms, or
anything else.

But since you asked, here's a Scheme program that takes input both
ways (as function arguments as well as from the keyboard):

(define (quiz op n1 n2)
(display "Your answer? ")
(if (equal? (op n1 n2) (read))
"Correct!"
(op n1 n2)))

> Now look at it. Could a neophite with literally *zero*

> experience in programming computers read it and stand a chance of
> understanding what it does or how it does it?

Usually "neophyte" refers to someone with non-zero experience. It
originally meant a newly-ordained priest, not someone with zero church
experience. Nonetheless, I think the above program could be explained
quickly and understood reasonably by someone with zero experience.

> Could a neophite duplicate it easily or modify it to do something
> different?

Yes, although they can already do a lot with it as-is. You can quiz
yourself on addition, multiplication, GCD, LCM, and pretty much any math
operation that takes two numbers.

> Is it intuitively obvious to even the most casual observer how to make
> a similar program?

At least as obvious, if not moreso, than it would be in other
programming language.

> That's why I wouldn't recommend Lisp as a first programming language in an
> intro to CS course.
>
> Gee. I never thought I'd have to defend THAT statement! :-)

Given that the Scheme dialect of Lisp *has* been used as a first
programming language in so many schools, you shouldn't be surprised.

http://www.schemers.com/schools.html

Followups set to comp.lang.scheme

sst...@classes.cs.uchicago.edu

unread,
May 10, 2001, 11:34:06 AM5/10/01
to
Andreas Krennmair <a.kre...@aon.at> wrote:
>It _does_ matter. Beginners can easily get frustrated because of the
>sometimes confusing syntax. BTW, I wouldn't recommend starting with Java
>or C/C++, either. I'd recommend and teach (if I were a teacher :) some
>Wirth language, because they're designed especially for teaching basics
>of programming.

I think syntax is a big plus with scheme and to a slightly lesser extent,
lisp. The syntax is something that can be easily learned since it is so
regular and after that the instructor can move on to programming. With
other languages, the syntax takes a while to learn and that takes away from
time the instructor can use to teach the actual material.

--
----------------------------------------------------------------------------
|
Suchandra Thapa | "There are only two kinds of math .
s-tha...@NOSPAMalumni.uchicago.edu | books. Those you cannot read beyond
| the first sentence, and those you
| can not read beyond the first page."
| -C.N. Yang
----------------------------------------------------------------------------

Hannah Schroeter

unread,
May 10, 2001, 11:26:16 AM5/10/01
to
[c.l.ada, c.l.smalltalk removed from the crossposting]

Hello!

In article <9ddssk$bb7$1...@bird.wu-wien.ac.at>,
Markus Mottl <mo...@miss.wu-wien.ac.at> wrote:
>[...]

>> Lisp has hardly anything in common with natural
>> languages. Or could you express "My girlfriend's name is Suzy and her age
>> is 17" as readable as this in Lisp:
>> $girlfriend{'name'} = "Suzy";
>> $girlfriend{'age'} = 17;

Now, a literal translation to Lisp is this:

(defvar *girlfriend* (make-hash-table))
(setf (gethash :name *girlfriend*) "Suzy")
(setf (gethash :age *girlfriend*) 17)

>Don't cheat yourself. There is absolutely no reason why a language like
>Perl should be considered anywhere close to natural language. And yes,
>I'd say that most well-designed languages make tasks like handling
>records significantly easier and safer than Perl.

>Take this Lisp-example. First we define a structure to describe persons:

> (defstruct (person) (name) (age))

>Now we create a value for your girlfriend:

> (make-person :name "Suzy" :age 17)

How about

(defclass person ()
((name :type string :initarg :name :accessor p-name)
(age :type (integer 0 *) :initarg :age :accessor p-age)))

; so you can specialize on significant others
(defclass so-mixin () ())

(defclass so (person so-mixin) ())

(let ((girlfriend (make-instance 'so :name "Suzy" :age 17)))
...)

>[...]

Kind regards,

Hannah.

Eugene Zaikonnikov

unread,
May 10, 2001, 11:07:42 AM5/10/01
to
* "DS" == David Starner <dvd...@x8b4e53cd.dhcp.okstate.edu> writes:

DS> Tell me what !bbz#,^az@bz, does.

DS> Then tell me what

DS> OPEN FILE ARGUMENT 2 AS 2
DS> BEGIN LOOP
DS> LOAD FILE ARGUMENT 1 INTO BUFFER
DS> COPY BUFFER TO 2
DS> FINISH LOOP does.

Tell me what

(loop for i across array1
for j in list1
maximize (/ i j))

does.

DS> As for lisp itself, just from the name, what does defun or cadar
DS> do? What do FUNCTION, PROCEDURE and BEGIN do?

What '2 AS 2' do?

DS> I've seen 2 + 2 since the first days of school. Why (+ 2 2)?

Because:
a) This syntax is uniform and requires no knowledge of operations
precedence;
b) Plus is not obliged to be a binary operator. Ability to write
(+ foo bar baz qux) or (+ ,@my-list-of-variables) is handy.

--
Eugene

Jochen Schmidt

unread,
May 10, 2001, 12:49:44 PM5/10/01
to
Georg Bauhaus wrote:

> Marin David Condic (marin.condic...@pacemicro.com) wrote:
>
> : If you are familiar with Lisp, try this: Write a small program to read
> : in a couple of numbers from a keyboard, do some math with them and print
> : the result to the screen. Now look at it. Could a neophite with
> : literally *zero*
>
>
> Then, Ola Rinta-Koski (with f'Up to iso-something):
>
> "(let ((foo 0))
> (dotimes (i 5)
> (incf foo (read)))
> foo)
>
> [is easy]"
>
> : That's why I wouldn't recommend Lisp as a first programming language in
> : an intro to CS course.
>
> : Gee. I never thought I'd have to defend THAT statement! :-)
>
> The above looks like Scheme with macros(?) and has a few didactical
> problems, as I'd like to report, with some additional guesses thrown in.

It seems to be CommonLisp. You could also write:

(loop :repeat 5 :sum (read))

Which is maybe easier to understand.

> (not to say that these problems are not present in many or all
> other languages): You may have to answer some questions from your
> inexperieced(!) listeners,
> - what is let? and then: why do I have to place an additional pair
> of parens around foo 0?
> - what is i for?
> - what does it mean that this foo is standing on its own
> on the last line?
> - if the first thing in a list is a function that does something
> with the rest, then what function is i?
> - ...

some of your questions are IMHO biased through your knowledge of languages
like Pascal, C...
If they are _really_ newbies some of those questions will *never* arise
because they have nothing to compare with (like you do here)

Taking the example in C

#include <stdio.h>

int main (int argc, char** argv) {
int sum=0;
int foo=0;
int i=0;
for (;i<5;++i) {
scanf("%d", &foo);
sum=sum+foo;
}
printf("%d", sum);
}

It is not clear to me that this could be easier to explain then the first
Lisp-variant.

- What is #include
- What is <stdio.h>
- What is int
- What is main
- What is argc
- What is char** (!!!)
- What is argv
- what is for
- why are ";" used in for instead of "," in other places...
- what is scanf
- what is this %d thingy
- what is the & before foo
- what is printf
- What are those {,} all around
- If functions are recocnized by a opening paren after there name, why
are the parameters of the function foo splitted by ";" and why is there no
";" at the end of the line but this "{" thingy....

Pascal is not much easier in this point...

BASIC:

FOR i = 0 TO 5
INPUT foo
sum = sum + foo
NEXT i
PRINT sum

would be rather understandable but is IMHO beaten by far through

(loop :repeat 5 :sum (read))

But I've to say that it is absolutely unrealistic to begin with such a
function. The first lessons should *not* contain any control-statements.
The nice thing with Lisp is that you can begin with simple arithmetic
without teaching I/O Functions first. So they can compare the first lessons
with using a more and more sophisticated calculator.

Regards,
Jochen

David Gillon

unread,
May 10, 2001, 1:15:12 PM5/10/01
to

Ola Rinta-Koski wrote:
>
> (let ((foo 0))
> (dotimes (i 5)
> (incf foo (read)))
> foo)
>

> > Now look at it. Could a neophite with literally *zero*

> > experience in programming computers read it and stand a chance of
> > understanding what it does or how it does it?
>

> Not being a neophyte, I'll just have to guess: yes and yes.

Well, I'll admit that despite a CS degree (including a course
specifically aimed at comparing different languages) and fifteen years
in the industry I can't claim to know what this code does, so any
complete neophyte is going to be floundering. I can guess we have a loop
doing something to Foo, but beyond that ...? Sum five (could also be 6)
inputs seems most likely, but that's based on my knowledge of parallel
constructs in other languages and therefore more than a true neophyte
could get.

Despite all the criticisms that can legitimately be levelled at BASIC I
originally taught myself to code from BASIC examples in computer
magazines, I don't believe that would have been true if they had looked
like the example above instead of paralleling natural language. And what
BASIC does better than this Pascal and Ada do better still.

There's also a strong cultural element to be considered beyond the
strict grammar of the language. A language that stays close to natural
language (at least for the anglophone part of the population), which
encourages meaningful variable names and cleanly structured, readable,
well commented code is going to be far easier for someone with limited
knowledge to understand (or maintain). A CS/SE course that teaches good
coding practise rather than just coding is going to produce people
who'll be both more useful to their employers and gain the course a good
reputation

I much prefer the following to the example above and I believe that even
with all comments stripped out it would be inherently easier to
understand for a struggling student:

procedure Sum_Five_Values is

-- Description :
-- Example showing clear coding practice, sums five integer inputs
-- and displays result

-- Input Parameters :
-- None (uses keyboard)
-- Output Parameters :
-- None (uses screen)

-- Modification History :
-- 10-05-2001, Initial version, DWG
-- <DD-MM-YYYY>,<Description of change>,<Author>

Total_Count : Integer := 0;
Entered_Value : Integer;

begin

-- Sum five inputs from the keyboard
for Loop_Counter := 1 .. 5 do
begin
Put_Line ("Enter an integer value and press return");
Get (Entered_Value);
Total_Count := Total_Count + Entered_Value;
end;

-- report the final result to the screen
Put("Total Value = ");
Put_Line(Total_Count);

end Sum_Five_Values;

--

David Gillon

Warren W. Gay VE3WWG

unread,
May 10, 2001, 3:50:04 PM5/10/01
to
David Gillon wrote:
> Ola Rinta-Koski wrote:
> >
> > (let ((foo 0))
> > (dotimes (i 5)
> > (incf foo (read)))
> > foo)
> >
> > > Now look at it. Could a neophite with literally *zero*
> > > experience in programming computers read it and stand a chance of
> > > understanding what it does or how it does it?
> >
> > Not being a neophyte, I'll just have to guess: yes and yes.
>
> Well, I'll admit that despite a CS degree (including a course
> specifically aimed at comparing different languages) and fifteen years
> in the industry I can't claim to know what this code does, so any
> complete neophyte is going to be floundering. I can guess we have a loop
> doing something to Foo, but beyond that ...? Sum five (could also be 6)
> inputs seems most likely, but that's based on my knowledge of parallel
> constructs in other languages and therefore more than a true neophyte
> could get.
>
> Despite all the criticisms that can legitimately be levelled at BASIC I
> originally taught myself to code from BASIC examples in computer
> magazines, I don't believe that would have been true if they had looked
> like the example above instead of paralleling natural language. And what
> BASIC does better than this Pascal and Ada do better still.

A number of posts ago, someone mentioned "general purpose". One of the
things that most people seem to forget in this type of discussion, is
whether or not a "general purpose" language is being considered (I
believe this is assumed by most here).

If you truly want something simpler for people to learn from,
*** take away the "general purpose" requirement. ***

As mentioned in the current post (above), BASIC helped many newbies
get started. Why? BASIC was simple to understand, & it put you in
a restricted "shell" of sorts, with very simple commands to use. Ie:

LOAD "PROGRAM"
SAVE "PROGRAM"
RUN
LIST
etc.

The _environment_ and the simple language combined, made it easy. It
was also easy, because it was not totally "general purpose" (it does
not interface well with many things that one would use under UNIX today,
for example).

If all you had to do was control a few things, you can really simplify
the language. A hypothetical example might be (for a controller):

Open door.
Close window.

A two step, but specialized language program. However, if you had to
code that in assembler language, a completely general purpose language,
you would have perhaps 200 to 1000+ lines of code to read. The difference
was simply between a specialized language and a general one.

- My Point - ;-)

So my point is that when you consider a "beginner's language", consider
his needs first. Does he need a totally general purpose language, or
can he get by with a reasonable subset of "general"? If he can be
happy with the bare minimum, then languages like BASIC are a good
place to start.

In addition to the language, you might also consider the "environment"
also. If the user is foreign to UNIX shells for example, than a BASIC
subsystem might be more productive for him.

I'm not promoting BASIC for general use here-- only discussing the
needs of beginners.

As a side note, I find it interesting that a
number of high schools teach kids here BASIC using QBASIC that was
distributed free on Windoze-95 CD's (it might also be on Win98).
You have to look for it on the install CD-- it won't be installed
for you. If my daughter can use it (as impatient as she is), then
this says something to me about the success of this approach.

--
Warren W. Gay VE3WWG
http://members.home.net/ve3wwg

David Thornley

unread,
May 10, 2001, 4:08:06 PM5/10/01
to
In article <9dclnt$9i...@news.cis.okstate.edu>,

David Starner <dstar...@aasaa.ofe.org> wrote:
>On Wed, 09 May 2001 18:01:10 -0500, Sashank Varma <sashan...@vanderbilt.edu> wrote:
>
>Tell me what
> !bbz#,^az@bz,
>does.
>
>Then tell me what

>
> OPEN FILE ARGUMENT 2 AS 2
> BEGIN LOOP

> LOAD FILE ARGUMENT 1 INTO BUFFER
> COPY BUFFER TO 2
> FINISH LOOP
>does.
>
I can make much better guesses in the latter case. Is it realistic?

Is it going to fool the beginner into thinking that he or she can
write English? I knew a woman who had difficulty in learning
COBOL because she took the English-like quality too seriously,
and never remembered the exact phrase she needed. Like
READ FOO INTO BAR AT END GO TO BAZ.
She would substitute all sorts of apparently equivalent things
for "AT END".

>If I came upon the first, I would give up. The second, anyone can
>probably get some idea of basically what it's doing. For a new
>student, knowing that they aren't totally lost can be a huge
>confidence builder.
>

What's this BUFFER business? Isn't that something that you put
in aspirin? What are these 2s for and why are they arguing?
To understand the preceding, you need to have some idea of
how computer programs work, and hence you already need to
be a programmer.

>As for lisp itself, just from the name, what does defun or cadar

>do?

Anybody who teaches "cadar" and friends in a beginning course should
be deprived of tenure, or at least shot.

What do FUNCTION, PROCEDURE and BEGIN do?

Yeah, what do they do? How about READLN?

I've seen 2 + 2 since

>the first days of school. Why (+ 2 2)? Learning a new vocabulary,
>a new equation syntax is not what you want to be teaching when you
>have so much else to teach.
>

You know what threw me in my first computer language course? This
LET X = X + 1 thing is one of them. That makes absolutely no
sense. X = X + 1 is true iff X is infinite. It took me a
while to get the hang of the LET statement.

Every computer language is going to have odd stuff in it, and that
odd stuff is going to hit the student right away. Variables in
programming languages have surprisingly little in common with
mathematical variables; they're much more similar to mathematical
sequences. Most languages recommended for beginners require the
declaration of variables and types. Most of them require some
sort of magic invocations that are not going to be understood
until later. Most of them have, for example, much more intrusive
syntax than Common Lisp.

Learning to program is difficult, and learning the meanings of
a few words is unlikely to be much of an obstacle.


--
David H. Thornley | If you want my opinion, ask.
da...@thornley.net | If you don't, flee.
http://www.thornley.net/~thornley/david/ | O-

Marie-Noëlle Baechler

unread,
May 10, 2001, 4:15:03 PM5/10/01
to

>There's also a strong cultural element to be considered beyond the
>strict grammar of the language. A language that stays close to natural
>language (at least for the anglophone part of the population), which
>encourages meaningful variable names and cleanly structured, readable,
>well commented code is going to be far easier for someone with limited
>knowledge to understand (or maintain). A CS/SE course that teaches good
>coding practise rather than just coding is going to produce people
>who'll be both more useful to their employers and gain the course a good
>reputation

For elementary algorithms, as the one you give, this may be enough.
But most of the algorithms we use are much more complex and
understanding them may require a strong mathematical background. I
strongly doubt that mimicking "natural" language will make easier to
understand the query optimizer of a relational database or a truth
maintainance system.

Marie-Noelle Baechler

David Thornley

unread,
May 10, 2001, 4:17:43 PM5/10/01
to
In article <x5zocly...@arenal.cyberell.com>,

Ola Rinta-Koski <o...@cyberell.com> wrote:
>thor...@visi.com (David Thornley) writes:
>> C++, properly taught, does. I don't know if it's properly taught
>> anywhere. I've taught C as a first language successfully, and the
>> areas that gave the most trouble are the areas that I could avoid
>> using C++. No more pointers, C-style arrays, C-style string handling,
>> or printf/scanf.
>
> I must be missing something here. What kind of non-trivial program
> can be written without pointers in C++? Certainly not one using any
> OOP features like virtual functions etc.

You can rewrite most C programs that use pointers into C++ programs
that use references and STL vectors, and it is certainly possible
to write non-trivial C programs. In the context of this thread,
I'm talking about teaching people to program using a language, not
teaching them how best to use a language. If I were teaching
an introduction to programming class, I'd leave object orientation
for later.

Even there, you don't have to use pointers heavily. Common Lisp
and Java aren't difficult because almost everything is a pointer
in both languages. If you teach things like

Fnord *foo = new Fnord;
....
foo->bar(baz);

you can get polymorphism without getting as deep into pointers
as I had to do halfway through an Introduction to Programming in
C class.

I think C++ can be an excellent introductory language, provided
everybody is using standard compilers with standard libraries.
Just don't try to cover anywhere near the whole language in
the introductory course.

Simon Wright

unread,
May 9, 2001, 1:32:02 AM5/9/01
to
"Marin David Condic" <marin.condic...@pacemicro.com> writes:

> My advice for a first programming language would be Ada (for a lot
> of reasons besides being my favorite language :-) followed by Pascal
> & maybe Modula-2. Save the other stuff until the students have
> progressed a little.

All very heavy, what about Logo? (after all, it was designed for
beginners).

-S (tongue _not_ in cheek)

Kent M Pitman

unread,
May 10, 2001, 8:56:30 PM5/10/01
to Andreas Krennmair
[ replying to comp.lang.lisp only
http://world.std.com/~pitman/pfaq/cross-posting.html ]

Eugene Zaikonnikov <vik...@cit.org.by> writes:

(defstruct person
name
age
siblings ; brothers and sisters
s.o. ; "significant other" - who they're committed to
date) ; who they're going out with to dinner tonight.

Lisp also lets you describe yourself as:

#1=#S(person :name "Andreas" :age 18
:s.o. #S(person :name "Suzy" :age 17
:s.o. #1#))

or her as:

#1=#S(person :name "Suzy" :age 17
:s.o. #S(person :name "Andreas" :age 18
:s.o. #1#))

And Lisp lets you say describe soap opera setups like the
following games between two pairs of twins.

#1=#S(person
:name "Suzy" :age 17
:siblings (#2=#S(person
:name "Sally" :age 17
:siblings (#1#)
:s.o. #3=#S(person :name "Antonio" :age 18
:siblings (#4=#S(person
:name "Andreas"
:age 18
:siblings (#3#)
:s.o. #1#
:date #2#))
:s.o. #2#
:date #1#)
:date #4#))
:s.o. #4#
:date #3#)

Perhaps Perl has a convenient notion for talking about shared and circular
structure, too...?

[Btw, this triggers bugs in LWW 4.1.20's reader and printer, but I've
reported them and assume they'll be fixed. Unfortunately, though,
it made it hard to test the example. Hope I didn't screw it up.]

raj

unread,
May 10, 2001, 10:14:47 PM5/10/01
to
>All very heavy, what about Logo? (after all, it was designed for
>beginners).

I have taught Logo to my children.
My experience has been that after a few lessons, they lose
interest....

However, I was able to reinterest my 9 year old in programming by
using Game Maker by Mark Overmars.
Games can be made using drag and drop, but very soon one finds that
the "built in programming language " is necessary.
He loved being able to creat his own games.
However, he has now graduated to Black and White which is a little
beyond Game Maker's ability !

Check.
http://www.cs.ruu.nl/people/markov/kids/index.html

I just noticed that Mark had a program called Drape, a "Visual lego
for preschoolers who cannot read" . I havent checked that out yet.

Blurb from the site:
"Did you always want to design computer games but don't you want to
spend a lot of time learning to become a programmer?
Then you came to the right place. Game Maker is a program that allows
you to make exciting computer games without the need to write a single
line of code.
Using easy to learn drag-and-drop actions you can make professional
looking games in little time. Games with backgrounds, animated
graphics, music and sound effects. And once you get more experienced
there is a built-in programming language that gives you full
flexibility. What is best, Game Maker can be used completely free
of charge. And you can use the games you produced in any way you like.
You can even sell them!"

Friedrich Dominicus

unread,
May 11, 2001, 1:29:10 AM5/11/01
to
David Gillon <david....@baesystems.com> writes:

(defun sum-n-numbers (n)
"Read n numbers from the standard input and add them all"
(let ((element 0)
(total-sum 0))
(loop for i from 1 to n
do
(format t "Give me a number please : ")
(setf element (read))
(setf total-sum (+ total-sum element))

finally
(format t "Total Sum = ~A~%" total-sum))))


Now I don't think I ever would write it that way, but hey it's as
verbose as you want it to be ;-)

Now alternatively one could write:
(defun sum-n-numbers (n)
(loop for i from 1 to n
for prompt = (format t "Give me a number please ")
for element = (read)
sum element into total-sum

finally (format t "Total Sum = ~A~%" total-sum)))



or
(defun sum-n-numbers (n)
(let ((total-sum 0))
(dotimes (i n)
(format t "Give me a number please: ")
(let ((element (read)))
(incf total-sum element)))
(format t "Total Sum = ~A~%" total-sum)
(values)))

or
....

I doubt that the Basic solution is easier on the eyes for a beginner
than one of the Common Lisp solutions.

Anyway programming I would conclude that learning programming is
work it can be even very hard. As usual if you start with something
completly new you're lost in the details. You do not know what really
is important all looks more or less like black magic. So what a
beginner needs is either a very good book or a good teacher and he/she
must really want to learn programming.

What we never should forget is that having fun while learning is a
maybe not the worst thing. If you can get nice results fast, it's very
encouraging.

One can compare programming with a lot of other things. It's like a
game, a puzzle or like building a model.


Every game has it's rules a puzzle can be build just in one way and
you have to follow a order to get a model build. All this holds for
programming the rules are what the language asks you for, getting the
pieces together will gave the whole picture. If you miss one piece
well, your programm like you puzzle will be incomplete. The model is
the idea you have while working on you program.

I really can't tell what a beginer is looking for, those times are
still gone for me and for you. That means if we show "what we think"
is understandable or "readable" for a beginner, it's nearly completly
irrelevant to them. They have their own idea, there will some which
like C, Assembler, Pascal, Modula-2, C++, Java, Lisp, Haskell or
whatever and find some other things totally stupid.

So I suggest not to put one of the languages down, but assist anyone
who wants to learn programming in whatever you like. Let him/her make
the choice and fine...

Regards
Friedrich

Iain McNaughton

unread,
May 10, 2001, 4:55:57 AM5/10/01
to

Oh, what the heck, here's my two cents:

Seems to me that the best language for a beginner is BASIC. I'm quite
serious about this. I don't mean Visual Basic, or any of the other
recent extensions or amendments to BASIC; I mean original BASIC, as
developed at Dartmouth in the 60s. It was developed as a teaching tool,
and it has all the main requirements for helping someone with their
first steps in programming: it is simple to learn, requires the beginner
to understand simple ideas like input and output of data, if-then
statements, and for loops. Sure, it's not fancy, and it's certainly not
state-of-the-art. But that's not the point. The point is that the first
thing a beginner has to do is learn how to think a little more clearly,
and solve simple problems in a simple way. BASIC meets these criteria,
you can use it as a base for more learning, and it has a large
supporting literature for the student and the teacher alike.

For the next language, I'd choose Pascal. Wirth envisaged it as a
teaching language, and it works as such.

After that, you pick the language that the student is going to find most
useful in his future life.

I await my flaming with interest !

Iain McNaughton.

>
>Which is precisely why my preferred first language is something more like
>Haskell. If the student is already familiar with mathematical notation,
>Haskell comes naturally. Rather than spending brainshare on learning
>an unfamiliar syntax (and let's face it, Lisp/Scheme has an unfamiliar
>syntax, even if it is a simple one), the student can spend their energy
>on learning programming.
>
>Cheers,
>Andrew Bromage

P.S. Andrew, I don't think Haskell is a good idea as a first teaching
language, precisely for the reasons you mention: it's too close to
mathematics, and thus *too far* from the way that most computer
languages work.
--
Iain McNaughton

Ola Rinta-Koski

unread,
May 11, 2001, 3:34:52 AM5/11/01
to
sb4...@l1-hrz.uni-duisburg.de (Georg Bauhaus) writes:
> Marin David Condic (marin.condic...@pacemicro.com) wrote:
> : If you are familiar with Lisp, try this: Write a small program to read in a
> : couple of numbers from a keyboard, do some math with them and print the
> : result to the screen. Now look at it. Could a neophite with literally *zero*

> Then, Ola Rinta-Koski (with f'Up to iso-something):
>
> "(let ((foo 0))
> (dotimes (i 5)
> (incf foo (read)))
> foo)
>
> [is easy]"

> : That's why I wouldn't recommend Lisp as a first programming language in an
> : intro to CS course.
>
> : Gee. I never thought I'd have to defend THAT statement! :-)
>
> The above looks like Scheme with macros(?)

But is in fact straight ANSI Common Lisp.

> and has a few didactical problems, as I'd like to report, with some
> additional guesses thrown in. (not to say that these problems are
> not present in many or all other languages): You may have to answer
> some questions from your inexperieced(!) listeners,

But of course. That's what the teacher's job is.

> So some of these things (like creating "variables") had better
> explain themselves a bit more, i.e. without overloaded parentheses,
> for example.

And is there a rationale for this statement? Would it be better to
use brackets or curly brackets, so as not to use parentheses for
different purposes?

No language, even one designed solely for the purpose of teaching,
will be completely self-explanatory for a neophyte. What remains to
be debated is the degree of help needed for the student to "get
it". I am not advocating (Common) Lisp as a first language per se; I
am merely stating that it would not automatically be a worse choice
than <pick-your-lingo>.

> PS: What I find puzzling is the lack of an abundance of statements
> from people who have actually taught several very different
> languages...

On what basis do you make this statement? I can't speak for others,
but I have taught C and C++ in addition to Lisp. If you want
comments from only those with at least (say) five (or ten, or
twenty, or...) languages on the list, you'll have a quiet
conversation.

Pierre R. Mai

unread,
May 11, 2001, 5:30:23 AM5/11/01
to
Kent M Pitman <pit...@world.std.com> writes:

> #1=#S(person
> :name "Suzy" :age 17
> :siblings (#2=#S(person
> :name "Sally" :age 17
> :siblings (#1#)
> :s.o. #3=#S(person :name "Antonio" :age 18
> :siblings (#4=#S(person
> :name "Andreas"
> :age 18
> :siblings (#3#)
> :s.o. #1#
> :date #2#))
> :s.o. #2#
> :date #1#)
> :date #4#))
> :s.o. #4#
> :date #3#)
>
> Perhaps Perl has a convenient notion for talking about shared and circular
> structure, too...?
>
> [Btw, this triggers bugs in LWW 4.1.20's reader and printer, but I've
> reported them and assume they'll be fixed. Unfortunately, though,
> it made it hard to test the example. Hope I didn't screw it up.]

The examples seem to work correctly in CMU CL, being printed back as
expected, at least. BTW, the unsuspecting reader might want to bind
or set *PRINT-CIRCLE* to T before trying the examples out... ;)

Regs, Pierre.

--
Pierre R. Mai <pm...@acm.org> http://www.pmsf.de/pmai/
The most likely way for the world to be destroyed, most experts agree,
is by accident. That's where we come in; we're computer professionals.
We cause accidents. -- Nathaniel Borenstein

Torbjörn Lager

unread,
May 11, 2001, 7:13:07 AM5/11/01
to Biep @ http://www.biep.org/

"Biep @ http://www.biep.org/" wrote:
>
> On a related note, what would people think of OZ as a beginners' language?
> (http://www.mozart-oz.org) Is it used anywhere as such?

Two relevant items from the Mozart Latest News page at
http://www.mozart-oz.org/news.cgi:

----------------------------------------------------------
Apr 4,
2001 Mozart at the 7th World Conference on Computers in Education
(WCCE)

The 7th World Conference on Computers in Education (WCCE 2001) will
take place in Copenhagen, Denmark from July 28 to Aug. 3, 2001.

At WCCE 2001, there will be a panel discussion on Monday, July 30, from
11:00 to 12:30, on The Next Generation of Programming Languages.
Moderator: Juris Reinfelds. Participants: Peter Van Roy, Corky
Cartwright, Seif Haridi, Mikihiko Onari, Arthur Tattnall, and Ingrid de
Vargas Milto.

(Peter Van Roy and Seif Haridi are in the OZ development team, and are
also authors of the book draft at:

http://www.info.ucl.ac.be/~pvr/book.ps.gz
http://www.info.ucl.ac.be/~pvr/book.pdf

)

----------------------------------------------------------
Jan 31, 2001
Multiparadigm Programming Without Loss of Depth

There will be a session on the use of Mozart/Oz for computer science
education at the:

32nd SIGCSE Technical Symposium on Computer Science Education

to be held on Feb. 21-25, 2001, in Charlotte, NC USA. The SIGCSE
symposium Web site is:

http://www.math.grin.edu/~sigcse/2001/

The Mozart session is titled: Multiparadigm Programming Without Loss of
Depth and will be presented by Juris Reinfelds of New Mexico State
University in a "Birds of a Feather" session on Thursday Feb. 22, from
5:15 pm to 6:15 pm.
----------------------------------------------------------

--
----------------------------------------------------------------
Torbjörn Lager Computational Linguist
Department of Linguistics Uppsala University
S-751 20 Uppsala Sweden
Phone: +46 18 471 7860 http://stp.ling.uu.se/~torbjorn/
----------------------------------------------------------------

Marco Antoniotti

unread,
May 11, 2001, 10:22:44 AM5/11/01
to

Kent M Pitman <pit...@world.std.com> writes:

> [ replying to comp.lang.lisp only
> http://world.std.com/~pitman/pfaq/cross-posting.html ]

I have abstained so far from this cross-posting frenzy. But it has
been very hard to resist. I know I can be very polemic and therefore
exerted some self restraint.

However, I would claim that some croos-posting would have been
effective in this case :) Especially with the READ/PRINT example you
just posted :)


> Perhaps Perl has a convenient notion for talking about shared and circular
> structure, too...?

Of course it does. Remember Greenspun's Tenth Rule of Programming :)

Cheers


--
Marco Antoniotti ========================================================
NYU Courant Bioinformatics Group tel. +1 - 212 - 998 3488
719 Broadway 12th Floor fax +1 - 212 - 995 4122
New York, NY 10003, USA http://bioinformatics.cat.nyu.edu
"Hello New York! We'll do what we can!"
Bill Murray in `Ghostbusters'.

Kent M Pitman

unread,
May 11, 2001, 10:34:10 AM5/11/01
to
Marco Antoniotti <mar...@cs.nyu.edu> writes:

> > Perhaps Perl has a convenient notion for talking about
> > shared and circular structure, too...?
>
> Of course it does. Remember Greenspun's Tenth Rule of Programming :)

Uh, can't say that I do.

Georg Bauhaus

unread,
May 11, 2001, 10:47:49 AM5/11/01
to
Ola Rinta-Koski (o...@cyberell.com) wrote:

[Georg says:
(let ((foo 0)) ...) may confuse beginners because of double parens]

: And is there a rationale for this statement? Would it be better to


: use brackets or curly brackets, so as not to use parentheses for
: different purposes?

Every language has syntactical quirks, no doubt, I think this has
been said many times in this thread. In this case, using LET
involves several advanced concepts, or at least, it could,
for beginners. And as you have written, it is the teachers job
to explain them.

Now there are languages where variables spring into existence
when you name them. Good for beginners? Is scoping, besides
beeing required and good knowledge, an obstacle in some first
"Read five numbers" program? (Well, I don't think so,
_after_ some explanaitions about simpler language facilities.)

How many basic concepts do you need? Is this number relevant?
If so, to what? How difficult are they to remember syntax-wise?
From the little I know, most languages used will do, in combination
with good teachers and texts, so lets hope there are enough
good teachers :-) (I'm not a teacher, but in times, I teach
and can only say this is a hard job if you are seriously
trying to explain basics, no matter what language is used.)

Some posts have shown up that give credits to verbosity,
so should the syntax be verbose as well?

function square a number
with argument num
returning squared
is defined as
squared becomes num * num
return

Well...
I have no chance to try this out, has someone some
experience with this issue? (if this is an issue, i.e.:-)

So, yes:

: No language, even one designed solely for the purpose of teaching,


: will be completely self-explanatory for a neophyte. What remains to
: be debated is the degree of help needed for the student to "get
: it". I am not advocating (Common) Lisp as a first language per se; I
: am merely stating that it would not automatically be a worse choice
: than <pick-your-lingo>.


: > PS: What I find puzzling is the lack of an abundance of statements
: > from people who have actually taught several very different
: > languages...

: On what basis do you make this statement? I can't speak for others,
: but I have taught C and C++ in addition to Lisp. If you want
: comments from only those with at least (say) five (or ten, or
: twenty, or...) languages on the list, you'll have a quiet
: conversation.

Chances are that this is due to them not reading or posting news,
I'd say. OTOH, there are many who have defended their dearest language
when language superiority for (task x not= teaching) is
not the issue. For example, you could use Ada without nested
procedures for a start, and certainly without generics.
You could use some LISP without passing functions around,
although both are essential features of the respective
languages. (Meyer has dedicated a whole chapter in OOSC2 to teaching
Eiffel to students at different levels, BETA has been used
here some time ago, so who knows...)
But could you use languages that, internally, can be considered
as understandable in terms of trees, like PROLOG, when those
who have to learn programming, don't have a clear notion of trees yet?

From an old primer for SNOBOL4, I remember a sentence from
the preface that stated that you would have to know the meaning
of the most basic technical terms, or else programming will soon
become frustrating. Therefore, if the number of such technicalities
even for a subset of some language is high, it may not be the best
choice. class Obstacle { public static void main (String[] args) {
}}, a variation of what Jochen said. (From my experience, it is
_not_ the boilerplate stuff, but the syntax clutter, that makes C
syntax hard to comprehend: most symbols don't do anything that
has to do with data manipulation or calculations.)

One thing I would like to add to the discussion is
the quality of error messages. Imagine the translator complains
about an error and you cannot see the relation to your code
without some deeper knowledge of your language ...


Georg Bauhaus

Andreas Krennmair

unread,
May 11, 2001, 11:55:36 AM5/11/01
to
FM <da...@dartmouth.edu> wrote:
> >I currently go to an Austrian school where mostly programming/CS/software
> >engineering-related things are taught (it's for 5 years, and you start
> >at an age of 14),
>
> Ouch. This is probably a bad idea...
You mean the age? That's not a problem. This school actually educates Austria's
software engineering elite. The students who manage to do all 5 years are
usually very innovative. The most interesting project of the last few year was
e.g. an operating system (search for SkyOS on google). This year's projects
was an organization tool for a LAN party already tested in the real world (500
players, the site has more than 100000 hits and they already start licensing
the software to other LAN parties)

Regards,
Andreas Krennmair
--
MakeHacker: .
@echo "Just another make hacker."

Friedrich Dominicus

unread,
May 10, 2001, 4:11:45 AM5/10/01
to
a.kre...@aon.at (Andreas Krennmair) writes:

> > yes, yes
> for my comment, see above. Lisp has hardly anything in common with natural


> languages. Or could you express "My girlfriend's name is Suzy and her age
> is 17" as readable as this in Lisp:
> $girlfriend{'name'} = "Suzy";
> $girlfriend{'age'} = 17;

Now there are different ways to do it. Some were pointed out in
another mail, but you could expose the Data-Structure behind the Hash
Table in Lisp. You may say who cares, but learning programming is to
some extend about learning data structures too.

so there are different ways to make a girl-friend
a) as structure
(defstruct girl-friend
name
age)


(defvar *my-girl-friend* (make-girl-friend :name "Ann" :age 30))

b) as property list
left out because other have done it

c) as object (subject;-)
(defclass girl-friend ()
((name :initarg :name :accessor name)
(age :initarg :age :accessor age)))


(setf my-girl (make-instance 'girl-friend
:name "Foo"
:age 20))

Now you have just one option in Pascal you have to write

type Girl_friend = record
name : STRING [30];
age : INTEGER
end

my-girl : (POINTER ?) Girl_friend;

my_girl.name := "Ann";
my_girl.age := 30;

What is if you have a longer name? What is if you declare my_girl to
be a Pointer to Girl_friend?
Why should that be easier to understand?

I had to learn programming with Modula-2 and it was the hell for
me. I doubt that it could have been worse while learning Lisp.


> No. Only after understanding the fundamental concepts of Lisp.

So what? I have to understand the fundamental concepts of any
programming langauge why is Pascal different here.


>
> > >Is it intuitively obvious to
> > > even the most casual observer how to make a similar program?

> > yes
> No. See answer before. :)
Again why is a record struct in Pascal easier to understand than in
Lisp. What about the Pointers? What about memory handling etc?

> > he/she started from. If he starts with Lisp; C, Java looks messy. If


> It _does_ matter. Beginners can easily get frustrated because of the
> sometimes confusing syntax. BTW, I wouldn't recommend starting with Java
> or C/C++, either. I'd recommend and teach (if I were a teacher :) some
> Wirth language, because they're designed especially for teaching basics
> of programming.

For a special kind of learning inflexible languages. IMHO the whole
books and langauges have one big advantage. The are there for Top-down
devlopment. No space for errors, no space for piecemeal grow. If you
forget a ; you get a friendly message that you're an idiot (not
really) you have to go back to you editor fix that bug and compile it
again.

You can not simply test out a function by itself in no time. You have
to stop recompile and start again. All this is so tedious and
frustrating that I can't see any reason why that should be a good
thing.

Regards
Friedrich

Friedrich Dominicus

unread,
May 10, 2001, 1:04:24 PM5/10/01
to
Jochen Schmidt <j...@dataheaven.de> writes:

>
> #include <stdio.h>
>
> int main (int argc, char** argv) {

int main (void) should be enough here ;-)


> int sum=0;
> int foo=0;
> int i=0;
> for (;i<5;++i) {
> scanf("%d", &foo);
> sum=sum+foo;
> }
> printf("%d", sum);
> }
>
> It is not clear to me that this could be easier to explain then the first
> Lisp-variant.
>
> - What is #include
> - What is <stdio.h>
> - What is int
> - What is main


> - What is argc
unessary


> - What is char** (!!!)

dito
> - What is argv
dito

Till then Friedrich

Paolo Amoroso

unread,
May 11, 2001, 12:33:17 PM5/11/01
to
[Followup posted to comp.lang.lisp only - Paolo]

On 9 May 2001 18:24:26 GMT, a.kre...@aon.at (Andreas Krennmair) wrote:

> stuff with a unique concept like Lisp. Don't get me wrong, Lisp is a great
> language, and I personally find it quite exciting as four year Pascal and
> two year C/C++ programmer, but it's hardly usable for teaching, because it
> is so unique (well, you _could_ to functional programming in C, but it would
> be considered bad style).

Note that Common Lisp is a multiparadigm programming language by design.
You are not limited to using functional features.


Paolo
--
EncyCMUCLopedia * Extensive collection of CMU Common Lisp documentation
http://cvs2.cons.org:8000/cmucl/doc/EncyCMUCLopedia/

FM

unread,
May 11, 2001, 7:50:04 PM5/11/01
to
"Andreas Krennmair" <a.kre...@aon.at> wrote:
> FM <da...@dartmouth.edu> wrote:
> > >I currently go to an Austrian school where mostly programming/CS/software
> > >engineering-related things are taught (it's for 5 years, and you start
> > >at an age of 14),

> > Ouch. This is probably a bad idea...

> You mean the age? That's not a problem.

Specialized education at that age, to be honest, seems militaristic.


> This school actually educates Austria's
> software engineering elite.

This was probably my principal objection. Why should you or anyone
decide whether you are, at the age of 14, part of the nation's
software engineering elite or not? What the heck does it mean anyway?
If you refuse the assignment, then somehow you aren't part of that
elite?

As much as it might be inevitable, this practice of limiting young
people's options and permanently dividing them into different classes
for the future before they are even close to being adult, frightens
my humanistic side. I'm not sure if I see any tangible benefit either.

Why not start admitting 8-year olds? They are surely capable.


> The students who manage to do all 5 years are
> usually very innovative.

I think it's an excellent way to kill that innovative side everyone
is endowed with.


> The most interesting project of the last few year was
> e.g. an operating system (search for SkyOS on google).

I get some extremely annoying shockwave nonsense that says SkyOS is
the most powerful OS on earth with no other content.


> This year's projects
> was an organization tool for a LAN party already tested in the real world (500
> players, the site has more than 100000 hits and they already start licensing
> the software to other LAN parties)

I don't know what this means. What tool do you need to organize a
LAN party or whatever that is?


Dan.

Rob Warnock

unread,
May 12, 2001, 6:18:07 AM5/12/01
to
Kent M Pitman <pit...@world.std.com> wrote:
+---------------
+---------------

<URL:http://philip.greenspun.com/research/index.html>
Greenspun's Tenth Rule of Programming: "Any sufficiently complicated
C or Fortran program contains an ad-hoc, informally-specified bug-ridden
slow implementation of half of Common Lisp."


-Rob

-----
Rob Warnock, 31-2-510 rp...@sgi.com
SGI Network Engineering <URL:http://reality.sgi.com/rpw3/>
1600 Amphitheatre Pkwy. Phone: 650-933-1673
Mountain View, CA 94043 PP-ASEL-IA

raj

unread,
May 12, 2001, 7:59:15 AM5/12/01
to
>> > >I currently go to an Austrian school where mostly programming/CS/software
>> > >engineering-related things are taught (it's for 5 years, and you start
>> > >at an age of 14),

>> > Ouch. This is probably a bad idea...
>
>> You mean the age? That's not a problem.

>> This school actually educates Austria's
>> software engineering elite.
>
>Specialized education at that age, to be honest, seems militaristic.

That is probably "not a problem" either.
Remember, you are talking about the educational system of a country
that produced Joerg Haider , Kurt Waldheim and most (in)famously Adolf
Schicklgruber.

Andrew Cooke

unread,
May 12, 2001, 10:17:21 AM5/12/01
to

That's an impressively small-minded post from Australia. Following this
thread I had assumed - from the arrogant assumption that the poster's
cultural intuition was sufficient to dismiss the education system in
another country - that the posts were from the US. But no...
Congratulations!

Andrew

Andreas Krennmair

unread,
May 12, 2001, 10:33:09 AM5/12/01
to
FM <da...@dartmouth.edu> wrote:
> > You mean the age? That's not a problem.
>
> Specialized education at that age, to be honest, seems militaristic.
Nobody is forced to go to that school. If somebody's not talented, he will
leave school after one year anyway.

> As much as it might be inevitable, this practice of limiting young
> people's options and permanently dividing them into different classes
> for the future before they are even close to being adult, frightens
> my humanistic side. I'm not sure if I see any tangible benefit either.

The other side is that you get a great job already at an age of 19 to 20
(depends on your sex: young men have to go to the Austrian army for 8 months)
with a salary of at least ATS 30000 (EUR 2180). And those who are in the
higher classes are very motivated because everybody likes the stuff they're
doing.

> Why not start admitting 8-year olds? They are surely capable.

You don't have a general comprehensive education at an age of 8, but you have
one at an age of 14. That's what mostly left out on this school, only a little
bit of geography, chemistry and history, no arts subject or something, and
quite a lot of physics and maths.

> > The most interesting project of the last few year was
> > e.g. an operating system (search for SkyOS on google).
>
> I get some extremely annoying shockwave nonsense that says SkyOS is
> the most powerful OS on earth with no other content.

Indeed, it isn't, but it's a proof a concept, and a really great achievement
for that age, isn't it?

> I don't know what this means. What tool do you need to organize a
> LAN party or whatever that is?

On a LAN party young people usually meet to play multiplayer games (first
person shooter, strategy, whatever). You can do that privately, with say
10 people, or you can organize a big LAN party for 500 players.
Therefore you need a system to
- publish news
- give a possibility to let people communicate (messageboard, personal
messaging system) over the web
- organize catering on the LAN party
- do votes/polls
- organize which player gets which seat
- manage all tournaments
- etc.

Just have a look at http://www.dagor.net/ (unfortunately it's in German).

Best regards,
Andreas Krennmair
--
C.O.B.O.L - Completely Obsolete Boring Old Language.

Andreas Krennmair

unread,
May 12, 2001, 10:40:39 AM5/12/01
to
raj <isra...@optushome.com.au> wrote:
> Remember, you are talking about the educational system of a country
> that produced Joerg Haider , Kurt Waldheim and most (in)famously Adolf
> Schicklgruber.
You are so stupid. You think because there are a few "bad" guys from this
country, every Austrian must be evil. When you've heard of Jörg Haider,
did you also hear about the resistance against him inside of Austria? There
was quite a lot going on, and his party, the FPÖ, lost recent votes in
Vienna.

Andreas Krennmair
--
"This struct already has a perfectly good definition."
-- Apple MPW C Compiler

Markus Mottl

unread,
May 12, 2001, 1:20:12 PM5/12/01
to
In comp.lang.functional FM <da...@dartmouth.edu> wrote:
>> You mean the age? That's not a problem.

> Specialized education at that age, to be honest, seems militaristic.

Nobody is forced to go to this type of school ("HTL") - it's up to their
choice. They can also continue with more general education in a grammar
school ("AHS"). Some people choose to limit their choices...

>> This school actually educates Austria's software engineering elite.

> This was probably my principal objection. Why should you or anyone
> decide whether you are, at the age of 14, part of the nation's
> software engineering elite or not? What the heck does it mean anyway?
> If you refuse the assignment, then somehow you aren't part of that
> elite?

That's probably what their teachers told them. Their education is
very practically oriented (both in the positive and negative sense of
the word), which also includes a significant amount of e.g. mainframe
assembler programming etc. In my opinion they specialize far too much
on irrelevant details of certain platforms or technologies (including
programming languages).

> As much as it might be inevitable, this practice of limiting young
> people's options and permanently dividing them into different classes
> for the future before they are even close to being adult, frightens
> my humanistic side. I'm not sure if I see any tangible benefit either.

I agree on this.

>> The students who manage to do all 5 years are
>> usually very innovative.

> I think it's an excellent way to kill that innovative side everyone
> is endowed with.

My experience with graduates from these schools at university generally
is that their knowledge does not help them too much when faced with
tasks that they were not specially trained for (in comparison to other
students). Their technical mastery is certainly higher than average,
but not significantly different from the one of people who studied (<>
played with) computers for fun besides school.

Regards,
Markus Mottl

--
Markus Mottl, mo...@miss.wu-wien.ac.at, http://miss.wu-wien.ac.at/~mottl

FM

unread,
May 12, 2001, 1:06:55 PM5/12/01
to
"Jochen Schmidt" <j...@dataheaven.de> wrote:
> FM wrote:
>
> > Andreas Krennmair <a.kre...@aon.at> wrote:

> >>Of course, this is not the best example, since Perl has a syntax that is
> >>not the optimum for beginners.
> >
> > Perl's syntax is the closest thing I've seen to a natural
> > syntax in a programming language.
>
> ?? Is that meant as a joke or what????

I was dead serious. Its syntax looks more like a result
of evolution than design and that's what distinguishes
*natural* from *artificial*.

Dan.

(Sorry about multiple posts, but I didn't notice the followup.)

FM

unread,
May 12, 2001, 1:09:56 PM5/12/01
to
"Andrew Cooke" <and...@andrewcooke.free-online.co.uk> wrote:
>
> That's an impressively small-minded post from Australia. Following this
> thread I had assumed - from the arrogant assumption that the poster's
> cultural intuition was sufficient to dismiss the education system in
> another country - that the posts were from the US. But no...
> Congratulations!

May I arrogantly assume that it was your arrogant assumption that led
to the above conclusion that there was such an arrogant assumption? Or
was it your cultural intuition?

In any case, I didn't mean to dismiss Austria's education system with
my cultural intuition. The original poster (Andreas) somehow mentioned
his school, seemingly out of context, which led to a separate
discussion as to whether it is desirable.


Dan.

Marco Antoniotti

unread,
May 12, 2001, 3:23:02 PM5/12/01
to

raj <isra...@optushome.com.au> writes:

Very well. This has gone on long enough and I now see the signs of
"thread decay" getting in.

Please stop all cross postings.

regards

FM

unread,
May 12, 2001, 4:37:12 PM5/12/01
to
"Andreas Krennmair" <a.kre...@aon.at> wrote:
> FM <da...@dartmouth.edu> wrote:
> > > You mean the age? That's not a problem.
> >
> > Specialized education at that age, to be honest, seems militaristic.
> Nobody is forced to go to that school.

That's a questionable assumption. Kids are forced into a lot of
things without explicit coercion.


> If somebody's not talented, he will
> leave school after one year anyway.

I love the logic there. Would the kid feel the same about himself
when he leaves the school for whatever reason? It's not as though
there's a clear line between the "talented" and the "untalented"
either.


> > As much as it might be inevitable, this practice of limiting young
> > people's options and permanently dividing them into different classes
> > for the future before they are even close to being adult, frightens
> > my humanistic side. I'm not sure if I see any tangible benefit either.

> The other side is that you get a great job already at an age of 19 to 20
> (depends on your sex: young men have to go to the Austrian army for 8 months)
> with a salary of at least ATS 30000 (EUR 2180).

Whether this is a good thing, for the society or the individual, is
arguable. It's easy to get carried away with the notion of doing
things earlier than others could, but it's much harder to justify
the benefit.


> And those who are in the
> higher classes are very motivated because everybody likes the stuff they're
> doing.

I would think they would be just as motivated if they were studying
the same stuff on their own.


> > Why not start admitting 8-year olds? They are surely capable.
> You don't have a general comprehensive education at an age of 8, but you have
> one at an age of 14. That's what mostly left out on this school, only a little
> bit of geography, chemistry and history, no arts subject or something, and
> quite a lot of physics and maths.

I don't think you'd have "general comprehensive education" by age
14 either. I don't know about other people, but I had been hardly
taught anything in school by 14 beyond a few misrepresented facts.
Provided that you need to learn two kinds of subjects, one that you
are already good at and one that you aren't, it would probably be
better to learn the former by yourself and the latter in an
organized setting, than the other way around.


> > > The most interesting project of the last few year was
> > > e.g. an operating system (search for SkyOS on google).
> >
> > I get some extremely annoying shockwave nonsense that says SkyOS is
> > the most powerful OS on earth with no other content.
> Indeed, it isn't, but it's a proof a concept, and a really great achievement
> for that age, isn't it?

A shockwave page is a great achievement? <g>

Frankly, writing a primitive OS (that's what I would have to assume)
is a great exercise, not an achievement of any kind. Age is hardly a
factor.

I'm not sure what you're trying to show with these examples either.
If you put together a group of smart kids in a school, obviously
some of them will do interesting, even impressive, things. But that
happens regardless of the setting.

I happen to feel that the world needs more interdisciplinary types,
those who could cross the boundaries and challenge the establishment.


Dan.

Andreas Krennmair

unread,
May 12, 2001, 5:56:43 PM5/12/01
to
FM <da...@dartmouth.edu> wrote:
> > If somebody's not talented, he will
> > leave school after one year anyway.
>
> I love the logic there. Would the kid feel the same about himself
> when he leaves the school for whatever reason? It's not as though
> there's a clear line between the "talented" and the "untalented"
> either.
The line IS drawn clearly within the first year. Those who get it, have good
marks on the tests in subjects like programming and "basics of computer
science", and those who don't, will fail in at least 2 subjects (programming,
basics of computer science, sometimes also accounting, and quite often
maths).

> > And those who are in the
> > higher classes are very motivated because everybody likes the stuff they're
> > doing.
>
> I would think they would be just as motivated if they were studying
> the same stuff on their own.

Of course they would, but in school they're supported and trained by
professionals, either having several years of experience in the industry or
being respectable computer science professors.

> Frankly, writing a primitive OS (that's what I would have to assume)
> is a great exercise, not an achievement of any kind. Age is hardly a
> factor.

Well, I wouldn't call it too primitive, since it has some built-in layer
that makes in binary compatible with Linux. AFAIK, you can also easily
replace the scheduler, and they already have a quite good scheduler for
hard realtime applications.

Regards,
Andreas Krennmair
--
Users should be more Linux-friendly

Markus Mottl

unread,
May 12, 2001, 6:38:04 PM5/12/01
to
In comp.lang.functional raj <isra...@optushome.com.au> wrote:
>>Specialized education at that age, to be honest, seems militaristic.

> That is probably "not a problem" either.
> Remember, you are talking about the educational system of a country
> that produced Joerg Haider , Kurt Waldheim and most (in)famously Adolf
> Schicklgruber.

Although this is completely off topic, I still feel that it's necessary
to answer this statement.

First of all, there is nothing militaristic about the Austrian school
system. In fact, it was mainly shaped by the government of the social
democrats. E.g. in contrast to some other countries, there are no
competitive elements in it like e.g. having students compete for a place
at good schools. Until this year, access to universities was _free_
for everybody. Contrast this to most other countries.

Secondly, "good" education does not necessarily make "good" people. If
it only were so easy!

What concerns Adolf "Schicklgruber" (why not name the devil: it's
Hitler), I happened to go to the same school where he had also studied.
In contrast to him I completed the eight years there instead of being
thrown out after one. So no, there is no reason to think that his
"success" was encouraged by the school system of his time and definitely
even less by our current one.

Just for your interest, the history of and around World War II is a major
topic in (compulsory!) Austrian history classes. The crimes, which were
also supported to a quite significant part by Austrians, are covered
there in accurate detail. All classes had to see the concentration camp
in Mauthausen, a rather shocking experience for the average teenager.
I can only hope that your country educates its children equally well
to be watchful citizens, because I am absolutely convinced that what
happened here can otherwise happen anywhere at anytime.

If you really blame the Austrian school system for producing people
like above, why don't you also count other people educated by it,
like e.g. Ludwig Wittgenstein, Kurt Goedel, Ludwig Boltzmann, Erwin
Schroedinger, Wolfgang Pauli or (more recent - around the age of Haider)
Anton Zeilinger?

What concerns our current political situation, I know that there is
nothing to be proud of. It might be sufficient for you to know that alone
in our capital nearly 200,000 people demonstrated against the forming
of this government (the people are still alive) and that it was only
due to a coalition that the extreme right could enter it (the largest
party is still the social democrats, who are in opposition).

Also note that the Austrian law (which hasn't changed in this respect)
disallows national socialist activities. For example, people who
publically deny the existence of concentration camps can be sentenced to
life-long prison! I doubt that your country has only closely as strict
anti-nazi laws (if any at all). This also means that there is a hard
limit to which the extreme right can go without being forbidden due
to our constitutional laws (government does _not_ have the sufficient
majority in parliament for changing the constitution and would definitely
not dare to touch this specific issue).

Even if I am, as many others, extremely dissatisfied being governed
by a right-winged government, it was a democratic process that lead
to this result. If democracy is a value as such, we must accept its
outcomes. Everything else would just be another form of totalitarianism.
I don't think that the extreme right will get another chance to enter
government after the next elections. Their populist style has been
demasked by their sheer incompetence (e.g. they had to exchange half of
their ministers within not even a year), and they had severe losses in
_all_ provincial elections so far.

Last but not least, I'd be very, very happy if I were not constantly
confronted with the name "Haider", especially from foreign sources. The
more he is mentioned, the more power he gets, because some people say
"Look, he is not ignored on the international scene so he can defend
our interests.". In contrast to popular belief in other countries,
Haider is an _unimportant_ Austrian politician of a small (a few hundred
thousand citizens) province. The mayor of our capitol is responsible for
more than three times as many people. I don't think you know his name. (He
is a social democrat, by the way, and his party has the absolute majority
in this city).

I hope that this clarifies some things about Austria and will make people
think twice before making wrong generalizing claims. It's exactly this
kind of defamatory statements that cause the kind of evil that you
believe to be opposing.

Regards,
Markus Mottl

P.S.: My origin is neither Austrian nor German so you cannot take my opposition
against your statement as being caused by nationalist feelings.

FM

unread,
May 12, 2001, 7:50:03 PM5/12/01
to
"Andreas Krennmair" <a.kre...@aon.at> wrote:
> FM <da...@dartmouth.edu> wrote:
> > > If somebody's not talented, he will
> > > leave school after one year anyway.
> >
> > I love the logic there. Would the kid feel the same about himself
> > when he leaves the school for whatever reason? It's not as though
> > there's a clear line between the "talented" and the "untalented"
> > either.
> The line IS drawn clearly within the first year. Those who get it, have good
> marks on the tests in subjects like programming and "basics of computer
> science", and those who don't, will fail in at least 2 subjects (programming,
> basics of computer science, sometimes also accounting, and quite often
> maths).

Lovely assertion. How do you know? Even worse than using test
scores or grades to evaluate kids is putting blind trust in
evaluations based on those measures. This is only tangentially
related to the original point but if you think you can judge
14 year-olds purely based on their grades, well, I hope you
don't become a teacher.


> > > And those who are in the
> > > higher classes are very motivated because everybody likes the stuff they're
> > > doing.
> >
> > I would think they would be just as motivated if they were studying
> > the same stuff on their own.
> Of course they would, but in school they're supported and trained by
> professionals, either having several years of experience in the industry or
> being respectable computer science professors.

I think the better test of someone's talent and motivation is
whether one needs this type of support and/or training.


> > Frankly, writing a primitive OS (that's what I would have to assume)
> > is a great exercise, not an achievement of any kind. Age is hardly a
> > factor.
> Well, I wouldn't call it too primitive, since it has some built-in layer
> that makes in binary compatible with Linux. AFAIK, you can also easily
> replace the scheduler, and they already have a quite good scheduler for
> hard realtime applications.

Perhaps I should've said "trivial" or "of no theoretical or
practical significance." In any case, there's absolutely nothing
informative about this OS on the web as far as I could find,
except a short description on TUNES.org, which basically says the
system is a hack, but an impressive one in terms of the amount of
work put into it.


Dan.

It is loading more messages.
0 new messages