* Re: Beginner's Language?
2001-05-09 13:55 ` Marin David Condic
@ 2001-05-09 14:18 ` Ola Rinta-Koski
2001-05-09 15:53 ` Marin David Condic
2001-05-10 17:15 ` David Gillon
2001-05-09 14:53 ` Biep @ http://www.biep.org/
` (6 subsequent siblings)
7 siblings, 2 replies; 157+ messages in thread
From: Ola Rinta-Koski @ 2001-05-09 14:18 UTC (permalink / raw)
"Marin David Condic" <marin.condic.auntie.spam@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 ola@cyberell.com
Cyberell Oy +358 41 467 2502
Rauhankatu 8 C, FIN-00170 Helsinki, FINLAND www.cyberell.com
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-09 14:18 ` Ola Rinta-Koski
@ 2001-05-09 15:53 ` Marin David Condic
2001-05-10 17:15 ` David Gillon
1 sibling, 0 replies; 157+ messages in thread
From: Marin David Condic @ 2001-05-09 15:53 UTC (permalink / raw)
(Something is wrong with how this exists in my newsreader. How did this
resolve to a single newsgroup called "iso-8859-1"??? I'm posting it to
Comp.Lang.Ada where I know it exists, but I don't want to spam a bunch of
other groups if it isn't in context there...)
"Ola Rinta-Koski" <ola@cyberell.com> wrote in message
news:x58zk6zjv8.fsf@arenal.cyberell.com...
> (let ((foo 0))
> (dotimes (i 5)
> (incf foo (read)))
> foo)
>
Native language and verbosity issues being separate, it seems to me that
something like this is a more readable, more easily comprehended example:
with Ada.Text_IO ;
with Ada.Integer_Text_IO ;
use Ada.Text_IO ;
use Ada.Integer_Text_IO ;
procedure Example is
X : Integer ;
Y : Integer ;
begin
Put_Line ("Hello World!") ;
Put_Line ("Enter a number") ;
Get (X) ;
Put_Line ("Enter another number") ;
Get (Y) ;
Put_Line ("The Sum Is") ;
Put (X + Y) ;
end Example ;
The statements are in plain English and one can readily guess at what they
do. It is also more representative of how most other languages would do the
same thing. (The structure would not be substantially different in C or Java
or a large number of other languages.)
I guess what is intuitively obvious to the casual observer is going to
depend on who is the casual observer. I've never found Lisp to be
particularly readable or easily comprehendable. I know numerous other
programmers who feel the same way. If you use Lisp on a regular basis, I
suppose it gets to looking "intuitively obvious" to you after a while. I
wouldn't ban the teaching of Lisp in a CS program, but I wouldn't make it
the FIRST language taught. I must not be alone in that thinking because I
know of many universities that offer courses that use Lisp, but they don't
start their students off with it.
MDC
--
Marin David Condic
Senior Software Engineer
Pace Micro Technology Americas www.pacemicro.com
Enabling the digital revolution
e-Mail: marin.condic@pacemicro.com
Web: http://www.mcondic.com/
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-09 14:18 ` Ola Rinta-Koski
2001-05-09 15:53 ` Marin David Condic
@ 2001-05-10 17:15 ` David Gillon
2001-05-10 19:50 ` Warren W. Gay VE3WWG
` (2 more replies)
1 sibling, 3 replies; 157+ messages in thread
From: David Gillon @ 2001-05-10 17:15 UTC (permalink / raw)
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
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-10 17:15 ` David Gillon
@ 2001-05-10 19:50 ` Warren W. Gay VE3WWG
2001-05-10 20:15 ` Marie-No�lle Baechler
2001-05-11 5:29 ` Friedrich Dominicus
2 siblings, 0 replies; 157+ messages in thread
From: Warren W. Gay VE3WWG @ 2001-05-10 19:50 UTC (permalink / raw)
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
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-10 17:15 ` David Gillon
2001-05-10 19:50 ` Warren W. Gay VE3WWG
@ 2001-05-10 20:15 ` Marie-No�lle Baechler
2001-05-11 5:29 ` Friedrich Dominicus
2 siblings, 0 replies; 157+ messages in thread
From: Marie-No�lle Baechler @ 2001-05-10 20:15 UTC (permalink / raw)
>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
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-10 17:15 ` David Gillon
2001-05-10 19:50 ` Warren W. Gay VE3WWG
2001-05-10 20:15 ` Marie-No�lle Baechler
@ 2001-05-11 5:29 ` Friedrich Dominicus
2001-05-27 12:59 ` Alejandro R. Mosteo
2 siblings, 1 reply; 157+ messages in thread
From: Friedrich Dominicus @ 2001-05-11 5:29 UTC (permalink / raw)
David Gillon <david.gillon@baesystems.com> writes:
> 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;
(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
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-11 5:29 ` Friedrich Dominicus
@ 2001-05-27 12:59 ` Alejandro R. Mosteo
2001-05-27 22:34 ` Larry Elmore
0 siblings, 1 reply; 157+ messages in thread
From: Alejandro R. Mosteo @ 2001-05-27 12:59 UTC (permalink / raw)
Mmm... I've used many languages and Lisp was taught to me after two or
three years of programming experience.
I can't understand how anyone could defend Lisp as a first language. You
can get crazy with the parentheses, the reference/no-reference things
(setf, set...) Recursivity, lists in all places... Car and cdr... mapcar
and friends... XD
I admit: after some time, I get comfortable with Lisp. Even could say it
is funny. But I know people that never was capable of fully understand
what was happening in some of his own programs :-)
Definitely, Lisp for a newbie on programming is... Oh, I have no words!
Of course, this is a personal interpretation ;-)
------------------------------
Alejandro R. Mosteo
mailto: 402450@cepsz.unizar.es
------------------------------
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-27 12:59 ` Alejandro R. Mosteo
@ 2001-05-27 22:34 ` Larry Elmore
2001-06-03 21:18 ` Stefan Skoglund
0 siblings, 1 reply; 157+ messages in thread
From: Larry Elmore @ 2001-05-27 22:34 UTC (permalink / raw)
"Alejandro R. Mosteo" wrote:
>
> Mmm... I've used many languages and Lisp was taught to me after two or
> three years of programming experience.
>
> I can't understand how anyone could defend Lisp as a first language. You
> can get crazy with the parentheses, the reference/no-reference things
> (setf, set...) Recursivity, lists in all places... Car and cdr... mapcar
> and friends... XD
I don't see what's so bad about the parentheses, not if you're using any
kind of a decent editor that understands such things. With a lot of code
I don't think there's a great deal of difference between the number of
parentheses in Lisp and the number of parentheses plus square brackets,
curly braces, semicolons, etc. At least with the Lisp code, there's _no_
amibiguity about operator precedence!
As far as pointers and lists go, I suspect that if you'd learned Lisp
first, you'd have had no problem at all with them, and then would've
been highly annoyed by the comparatively primitive aspects of so many
other languages when dealing with higher-level constructs.
> I admit: after some time, I get comfortable with Lisp. Even could say it
> is funny. But I know people that never was capable of fully understand
> what was happening in some of his own programs :-)
I've known programmers who have the same problem with C/C++, and worse,
have had to maintain code written by them! They'd have problems in any
language they used, I think -- if they can't properly use lists in Lisp,
heaven help them when they need to handle lists in C/C++!
> Definitely, Lisp for a newbie on programming is... Oh, I have no words!
It certainly beats the hell out of C/C++, Fortran, Cobol or Basic! Of
course, you'd teach programming in Lisp with a subset of the language.
It'd be even more likely to confuse them if you hit them with the full
complexity of Ada right off the bat (and with all of C++, you'd likely
scare off 99% of them).
Larry
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-27 22:34 ` Larry Elmore
@ 2001-06-03 21:18 ` Stefan Skoglund
0 siblings, 0 replies; 157+ messages in thread
From: Stefan Skoglund @ 2001-06-03 21:18 UTC (permalink / raw)
Larry Elmore wrote:
> It certainly beats the hell out of C/C++, Fortran, Cobol or Basic! Of
> course, you'd teach programming in Lisp with a subset of the language.
> It'd be even more likely to confuse them if you hit them with the full
> complexity of Ada right off the bat (and with all of C++, you'd likely
> scare off 99% of them).
Avoid side-effects and LISP gets much simpler.
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-09 13:55 ` Marin David Condic
2001-05-09 14:18 ` Ola Rinta-Koski
@ 2001-05-09 14:53 ` Biep @ http://www.biep.org/
2001-05-09 15:39 ` Friedrich Dominicus
` (5 subsequent siblings)
7 siblings, 0 replies; 157+ messages in thread
From: Biep @ http://www.biep.org/ @ 2001-05-09 14:53 UTC (permalink / raw)
"Friedrich Dominicus" <frido@q-software-solutions.com> wrote in message
news:87snihxiwc.fsf@frown.here...
> Why no Lisp?
"Marin David Condic" <marin.condic.auntie.spam@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?
--
Biep
Reply via http://www.biep.org
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-09 13:55 ` Marin David Condic
2001-05-09 14:18 ` Ola Rinta-Koski
2001-05-09 14:53 ` Biep @ http://www.biep.org/
@ 2001-05-09 15:39 ` Friedrich Dominicus
2001-05-09 18:24 ` Andreas Krennmair
2001-05-09 22:56 ` David Thornley
` (4 subsequent siblings)
7 siblings, 1 reply; 157+ messages in thread
From: Friedrich Dominicus @ 2001-05-09 15:39 UTC (permalink / raw)
"Marin David Condic" <marin.condic.auntie.spam@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
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-09 15:39 ` Friedrich Dominicus
@ 2001-05-09 18:24 ` Andreas Krennmair
2001-05-09 23:01 ` Sashank Varma
` (7 more replies)
0 siblings, 8 replies; 157+ messages in thread
From: Andreas Krennmair @ 2001-05-09 18:24 UTC (permalink / raw)
Friedrich Dominicus <frido@q-software-solutions.com> wrote:
> "Marin David Condic" <marin.condic.auntie.spam@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++;}}
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-09 18:24 ` Andreas Krennmair
@ 2001-05-09 23:01 ` Sashank Varma
2001-05-10 0:01 ` David Starner
2001-05-10 6:06 ` Mark VandeWettering
` (6 subsequent siblings)
7 siblings, 1 reply; 157+ messages in thread
From: Sashank Varma @ 2001-05-09 23:01 UTC (permalink / raw)
In article <9dc20p$hh15e$1@ID-37382.news.dfncis.de>, a.krennmair@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
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-09 23:01 ` Sashank Varma
@ 2001-05-10 0:01 ` David Starner
2001-05-10 6:10 ` Mark VandeWettering
` (4 more replies)
0 siblings, 5 replies; 157+ messages in thread
From: David Starner @ 2001-05-10 0:01 UTC (permalink / raw)
On Wed, 09 May 2001 18:01:10 -0500, Sashank Varma <sashank.varma@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 - dstarner98@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
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-10 0:01 ` David Starner
@ 2001-05-10 6:10 ` Mark VandeWettering
2001-05-10 8:08 ` FM
` (3 subsequent siblings)
4 siblings, 0 replies; 157+ messages in thread
From: Mark VandeWettering @ 2001-05-10 6:10 UTC (permalink / raw)
David Starner <dvdeug@x8b4e53cd.dhcp.okstate.edu> wrote:
>On Wed, 09 May 2001 18:01:10 -0500, Sashank Varma <sashank.varma@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.
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 - dstarner98@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
--
/* __ __ __ ____ __*/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 <markv@telescopemaking.org> */puts("");}}
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-10 0:01 ` David Starner
2001-05-10 6:10 ` Mark VandeWettering
@ 2001-05-10 8:08 ` FM
2001-05-10 15:07 ` Eugene Zaikonnikov
` (2 subsequent siblings)
4 siblings, 0 replies; 157+ messages in thread
From: FM @ 2001-05-10 8:08 UTC (permalink / raw)
David Starner <dvdeug@x8b4e53cd.dhcp.okstate.edu> wrote:
>On Wed, 09 May 2001 18:01:10 -0500, Sashank Varma <sashank.varma@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
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-10 0:01 ` David Starner
2001-05-10 6:10 ` Mark VandeWettering
2001-05-10 8:08 ` FM
@ 2001-05-10 15:07 ` Eugene Zaikonnikov
2001-05-10 20:08 ` David Thornley
2001-05-16 18:00 ` Robert Posey
4 siblings, 0 replies; 157+ messages in thread
From: Eugene Zaikonnikov @ 2001-05-10 15:07 UTC (permalink / raw)
* "DS" == David Starner <dvdeug@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
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-10 0:01 ` David Starner
` (2 preceding siblings ...)
2001-05-10 15:07 ` Eugene Zaikonnikov
@ 2001-05-10 20:08 ` David Thornley
2001-05-16 18:00 ` Robert Posey
4 siblings, 0 replies; 157+ messages in thread
From: David Thornley @ 2001-05-10 20:08 UTC (permalink / raw)
In article <9dclnt$9ic1@news.cis.okstate.edu>,
David Starner <dstarner98@aasaa.ofe.org> wrote:
>On Wed, 09 May 2001 18:01:10 -0500, Sashank Varma <sashank.varma@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.
david@thornley.net | If you don't, flee.
http://www.thornley.net/~thornley/david/ | O-
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-10 0:01 ` David Starner
` (3 preceding siblings ...)
2001-05-10 20:08 ` David Thornley
@ 2001-05-16 18:00 ` Robert Posey
2001-05-16 18:19 ` stephan
` (2 more replies)
4 siblings, 3 replies; 157+ messages in thread
From: Robert Posey @ 2001-05-16 18:00 UTC (permalink / raw)
David Starner wrote:
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.
I agree, no modern program works anything like natural language, and while
reserved word and functions should resemble a natural language summary,
real natural language would be useless as a programing tool. Do you really
want to have to explain a function like printf using standard English. I have
never seen it attempted, and even with lots of programing references C String
and file functions confuse almost everyone. So it is pretty clear there is no
natural language equivalent of most programing Token(functions, reserved words)
that would comprise pages of text. Thus, the direct mapping to natural language
should be at the memory key level, while not getting excessive in length or spelling
complexity for tokens that will be typed millions and billions of times.
I pick Java as the first language, it makes C++ easier to learn, it has fewer nasty
surprises, and integrates with the web well, so that fun projects are possible. In
addition, it is important in the modern University Environment to allow work to
be done on either Windoze, Linux, Mac and Unix environments and Java does that
without forcing the Graders to maintain different systems. Java IDE vendors
IBM and Sun also provide relatively easy to use and free IDE's.
LISP is a great language, but its so different it is nightmarish at first to people with
some programing experience, and I would assume the reverse is true. I also would
never want a student to be able to ignore what type of number they are using, its
very bad practice in most cases.
Muddy
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-16 18:00 ` Robert Posey
@ 2001-05-16 18:19 ` stephan
2001-05-21 4:15 ` Lao Xiao Hai
` (2 more replies)
2001-05-16 20:44 ` brlewis
2001-05-21 5:09 ` vsync
2 siblings, 3 replies; 157+ messages in thread
From: stephan @ 2001-05-16 18:19 UTC (permalink / raw)
On Wed, 16 May 2001 13:00:59 -0500, Robert Posey <muddy@raytheon.com> wrote:
>I agree, no modern program works anything like natural language, and while
>reserved word and functions should resemble a natural language summary,
>real natural language would be useless as a programing tool.
The most serious effort to create a programming language that
"imitates natural language" is called COBOL. 'Nuf said.
Stephan
>Do you really want to have to explain a function like printf using standard English.
Do you want to explain it at all? ;-)
>I also would
>never want a student to be able to ignore what type of number they are using, its
>very bad practice in most cases.
COBOL has lots of interesting numerical types, such as fixed-precision
decimal numbers. Very useful for counting beans.
I definitely nominate COBOL. It will have the added advantage that
whatever comes next will look as an improvement. (OK, there's still
INTERCAL).
Stephan
--
ir. Stephan H.M.J. Houben
tel. +31-40-2474358 / +31-40-2743497
e-mail: stephanh@win.tue.nl
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-16 18:19 ` stephan
@ 2001-05-21 4:15 ` Lao Xiao Hai
2001-05-21 11:53 ` raj
2001-05-21 21:30 ` Marie-No�lle Baechler
2001-05-27 12:59 ` Alejandro R. Mosteo
2001-05-30 20:26 ` Florian Weimer
2 siblings, 2 replies; 157+ messages in thread
From: Lao Xiao Hai @ 2001-05-21 4:15 UTC (permalink / raw)
stephan@pcrm.win.tue.nl wrote:
> I definitely nominate COBOL. It will have the added advantage that
> whatever comes next will look as an improvement. (OK, there's still
> INTERCAL).
I assume this was a joke. In reality, there are still a lot of people successfully
developing software with COBOL. Moreover, the current COBOL standard,
and its planned successor, are both quite easy for applications developers to
learn and use. One of COBOL's virtues has been that, in large corporations,
people who understand the problem domain have been able to transition to
the role of programmer and create solutions. Typically, these people have
little training in computer science. They are able to learn on the job.
I have seen a lot of excellent COBOL programmers who have made the
leap from clerical jobs to programming jobs and who have done really
good work. Also, COBOL is not going away anytime soon, contrary
to popular opinion. And it is still better for business data processing
applications than C++, any day of the week. I would have to say it is
better for most of these kinds of applications than Perl or Scheme, Smalltalk
or even Java. Ada might be the exception because it has a built-in decimal
type and a well-defined Information Systems Annex. However, I don't
see Ada replacing COBOL anytime soon any more than I see any of those
other languages replacing it. COBOL continues to evolve and improve,
but few in the programming community keep up-to-date about those
changes. So many of them wrote it off long ago that they don't know
how it has improved over what it once was. It is much like those who
still criticize Ada based on the old Ada 83 standard or Smalltalk based
on an outdated view of that language. Hmmmm. Maybe Ruby will do. :-)
Richard Riehle
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-21 4:15 ` Lao Xiao Hai
@ 2001-05-21 11:53 ` raj
2001-05-23 10:33 ` Liam Devlin
2001-05-21 21:30 ` Marie-No�lle Baechler
1 sibling, 1 reply; 157+ messages in thread
From: raj @ 2001-05-21 11:53 UTC (permalink / raw)
>stephan@pcrm.win.tue.nl wrote:
>
>> I definitely nominate COBOL. It will have the added advantage that
>> whatever comes next will look as an improvement. (OK, there's still
>> INTERCAL).
I nominate FORTRAN. :-)
It is so appalling that any other language that they learn will come
as a pleasant relief !
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-21 11:53 ` raj
@ 2001-05-23 10:33 ` Liam Devlin
0 siblings, 0 replies; 157+ messages in thread
From: Liam Devlin @ 2001-05-23 10:33 UTC (permalink / raw)
raj wrote:
>
> >stephan@pcrm.win.tue.nl wrote:
> >
> >> I definitely nominate COBOL. It will have the added advantage that
> >> whatever comes next will look as an improvement. (OK, there's still
> >> INTERCAL).
>
> I nominate FORTRAN. :-)
> It is so appalling that any other language that they learn will come
> as a pleasant relief !
Give RPG a shot before signing any contracts.
LiamD
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-21 4:15 ` Lao Xiao Hai
2001-05-21 11:53 ` raj
@ 2001-05-21 21:30 ` Marie-No�lle Baechler
1 sibling, 0 replies; 157+ messages in thread
From: Marie-No�lle Baechler @ 2001-05-21 21:30 UTC (permalink / raw)
>I assume this was a joke. In reality, there are still a lot of people
>successfully developing software with COBOL. Moreover, the current
>COBOL standard, and its planned successor, are both quite easy for
>applications developers to learn and use. One of COBOL's virtues has
>been that, in large corporations, people who understand the problem
>domain have been able to transition to the role of programmer and create
>solutions. Typically, these people have little training in computer
>science. They are able to learn on the job.
In my employer, a teaching hospital, COBOL was still very important
a few years ago, but it will have disappeared by January 1, 2002.
The only system still using it, our patient management system will
be replaced at that time.
Here, COBOL is disappearing because informations systems based on
relational databases are used for all the major tasks. We also tend
to rely on packages, we try to minimize local adaptations and they
are developped as specific extensions by our suppliers.
Local extensions of our major information systems are mostly very
specific queries and they are developped in ORACLE SQL. We have a
few programs developped in PL/SQL.
Some of our large packages are not yet client/server. When they
are, the client is developped in C++ (with one major exception
using UNIFACE). A few less important applications have been
developped as Intranet applications in ORACLE PL/SQL. Small
specific client/server applications have been developped with
a VB client.
So, for us, COBOL is finally disappearing. But it took 10 more
years than what I expected.
Marie-Noelle Baechler
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-16 18:19 ` stephan
2001-05-21 4:15 ` Lao Xiao Hai
@ 2001-05-27 12:59 ` Alejandro R. Mosteo
2001-05-30 20:26 ` Florian Weimer
2 siblings, 0 replies; 157+ messages in thread
From: Alejandro R. Mosteo @ 2001-05-27 12:59 UTC (permalink / raw)
stephan@pcrm.win.tue.nl ha escrito esto previamente:
> (OK, there's still INTERCAL).
Yes, it was a real find XD!
Cheers.
------------------------------
Alejandro R. Mosteo
mailto: 402450@cepsz.unizar.es
------------------------------
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-16 18:19 ` stephan
2001-05-21 4:15 ` Lao Xiao Hai
2001-05-27 12:59 ` Alejandro R. Mosteo
@ 2001-05-30 20:26 ` Florian Weimer
2001-05-30 21:56 ` Johan Kullstam
2 siblings, 1 reply; 157+ messages in thread
From: Florian Weimer @ 2001-05-30 20:26 UTC (permalink / raw)
stephan@pcrm.win.tue.nl () writes:
> COBOL has lots of interesting numerical types, such as fixed-precision
> decimal numbers. Very useful for counting beans.
Well, fixed point decimal numbers are extremely useful, and many
people actually need them. Just try to implement the ECB currency
conversion guidelines in a language without fixed-point decimal
support, and you'll see what I mean.
Just my EUR .0000010100011110101110000101000111101011100001...
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-30 20:26 ` Florian Weimer
@ 2001-05-30 21:56 ` Johan Kullstam
2001-05-31 9:01 ` Jean-Pierre Rosen
0 siblings, 1 reply; 157+ messages in thread
From: Johan Kullstam @ 2001-05-30 21:56 UTC (permalink / raw)
Florian Weimer <fw@deneb.enyo.de> writes:
> stephan@pcrm.win.tue.nl () writes:
>
> > COBOL has lots of interesting numerical types, such as fixed-precision
> > decimal numbers. Very useful for counting beans.
>
> Well, fixed point decimal numbers are extremely useful, and many
> people actually need them. Just try to implement the ECB currency
> conversion guidelines in a language without fixed-point decimal
> support, and you'll see what I mean.
>
> Just my EUR .0000010100011110101110000101000111101011100001...
you can always do fixed point with integers.
for example, to do dollars to two decimal places, just count pennies
instead of dollars.
other than a little notational convenience, i've never understood what
the big deal was with fixed point.
--
J o h a n K u l l s t a m
[kullstam@ne.mediaone.net]
sysengr
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-30 21:56 ` Johan Kullstam
@ 2001-05-31 9:01 ` Jean-Pierre Rosen
2001-05-31 13:29 ` Raymond Toy
0 siblings, 1 reply; 157+ messages in thread
From: Jean-Pierre Rosen @ 2001-05-31 9:01 UTC (permalink / raw)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 998 bytes --]
"Johan Kullstam" <kullstam@ne.mediaone.net> a �crit dans le message news: m3r8x6tsa5.fsf@sysengr.res.ray.com...
> you can always do fixed point with integers.
>
> for example, to do dollars to two decimal places, just count pennies
> instead of dollars.
>
> other than a little notational convenience, i've never understood what
> the big deal was with fixed point.
>
Everything looks simple to people who didn't try to implement it...
Addition and subtraction are easy, but multiplication and division require some care.
If you implement fixed points with integers, you'll end up doing by hand exactly what the compiler does for you, except that the
people who wrote the compiler were educated in computer arithmetic, and believe me, there are lots of pitfalls there.
(Said by someone who did an implementation of fixed point arithmetic).
--
---------------------------------------------------------
J-P. Rosen (rosen@adalog.fr)
Visit Adalog's web site at http://www.adalog.fr
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-31 9:01 ` Jean-Pierre Rosen
@ 2001-05-31 13:29 ` Raymond Toy
2001-05-31 13:51 ` Jean-Pierre Rosen
0 siblings, 1 reply; 157+ messages in thread
From: Raymond Toy @ 2001-05-31 13:29 UTC (permalink / raw)
>>>>> "Jean-Pierre" == Jean-Pierre Rosen <rosen@adalog.fr> writes:
Jean-Pierre> "Johan Kullstam" <kullstam@ne.mediaone.net> a �crit dans le message news: m3r8x6tsa5.fsf@sysengr.res.ray.com...
>> you can always do fixed point with integers.
>>
>> for example, to do dollars to two decimal places, just count pennies
>> instead of dollars.
>>
>> other than a little notational convenience, i've never understood what
>> the big deal was with fixed point.
>>
Jean-Pierre> Everything looks simple to people who didn't try to implement it...
Jean-Pierre> Addition and subtraction are easy, but multiplication
Jean-Pierre> and division require some care. If you implement
Jean-Pierre> fixed points with integers, you'll end up doing by
Jean-Pierre> hand exactly what the compiler does for you, except
Jean-Pierre> that the people who wrote the compiler were educated
Jean-Pierre> in computer arithmetic, and believe me, there are
Jean-Pierre> lots of pitfalls there. (Said by someone who did an
Jean-Pierre> implementation of fixed point arithmetic).
Why is multiplication/division much harder? You pretend the numbers
of integers, do the operation, and then figure out where the fixed
point should be. That's not too hard. As a DSP guy working on
fixed-point DSPs, we do this all the time.
Ray
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-31 13:29 ` Raymond Toy
@ 2001-05-31 13:51 ` Jean-Pierre Rosen
0 siblings, 0 replies; 157+ messages in thread
From: Jean-Pierre Rosen @ 2001-05-31 13:51 UTC (permalink / raw)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 1313 bytes --]
"Raymond Toy" <toy@rtp.ericsson.se> a �crit dans le message news: 4npucpsl3r.fsf@rtp.ericsson.se...
> Why is multiplication/division much harder? You pretend the numbers
> of integers, do the operation, and then figure out where the fixed
> point should be. That's not too hard. As a DSP guy working on
> fixed-point DSPs, we do this all the time.
>
Yes, you "just" have to figure out where the fixed point should be.
Note that the result has twice more digits after the point than the original operands. This means that there is some rounding
involved, and of course if you want to meet the numerics annex requirements, this should be done right.
And did you consider the case where operands are of different fixed point types, with different smalls, and the expected result type
is a third fixed point type, or even a floating point type ? And of course, you should consider arbitrary smalls, not just powers of
2... That makes determining the correct rounding of the result more interesting.
Of course, it is doable. Compilers do it all the time. But why bother to reinvent the wheel, when the compiler provides a carefully
tested implementation ?
--
---------------------------------------------------------
J-P. Rosen (rosen@adalog.fr)
Visit Adalog's web site at http://www.adalog.fr
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-16 18:00 ` Robert Posey
2001-05-16 18:19 ` stephan
@ 2001-05-16 20:44 ` brlewis
2001-05-21 5:09 ` vsync
2 siblings, 0 replies; 157+ messages in thread
From: brlewis @ 2001-05-16 20:44 UTC (permalink / raw)
Robert Posey <muddy@raytheon.com> writes:
> I pick Java as the first language, it makes C++ easier to learn, it
> has fewer nasty surprises,
You mean than C++?
> and integrates with the web well, so that
> fun projects are possible.
Why should an introductory programming course involve knowing about
structured documents? Shouldn't the focus be on the structure of
programs instead?
In Scheme, the actual *programming* is fun; no need to wrap a pretty web
page around it. After the beginning programming course is over, those
who want to do web work have good tools to choose from, e.g. SSAX if
they want to write programs that manipulate structured documents, BRL if
they just want to stick server-side program code inside a web page. To
see some fun, quick web hacks with source visit
http://www.webappcabaret.com/brl/p/brlewis/index.brl
> In addition, it is important in the modern
> University Environment to allow work to be done on either Windoze,
> Linux, Mac and Unix environments and Java does that without forcing
> the Graders to maintain different systems.
What release of Java is the Mac up to now? How about BSD? Do you have
all the platforms stick with the least common denominator? This version
skew is why a lot of languages now boast of being "more portable than
Java."
> Java IDE vendors IBM and
> Sun also provide relatively easy to use and free IDE's.
Do they work with the least-common-denominator Java, or do you need a
recent version?
I notice that the latest version of the DrScheme IDE is available for
all the platforms you mentioned. I've tried it on NT and Linux; it
works the same on those platforms, and presumably on Mac as well.
> LISP is a great language, but its so different it is nightmarish at
> first to people with some programing experience
Not everyone finds it nightmarish to learn something new and different.
The two coworkers I've been teaching Scheme to have found it
interesting.
> I also would never want a student to be able to
> ignore what type of number they are using, its very bad practice in
> most cases.
You mean like writing x/y in Java without paying attention to whether x
and y are floats or ints? How do you keep a student from doing that?
--
Bruce R. Lewis http://brl.sourceforge.net/
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-16 18:00 ` Robert Posey
2001-05-16 18:19 ` stephan
2001-05-16 20:44 ` brlewis
@ 2001-05-21 5:09 ` vsync
2 siblings, 0 replies; 157+ messages in thread
From: vsync @ 2001-05-21 5:09 UTC (permalink / raw)
Robert Posey <muddy@raytheon.com> writes:
> LISP is a great language, but its so different it is nightmarish at first to people with
> some programing experience, and I would assume the reverse is true. I also would
Really? I loved learning it.
--
vsync
http://quadium.net/ - last updated Tue May 15 15:02:08 PDT 2001
(cons (cons (car (cons 'c 'r)) (cdr (cons 'a 'o))) ; Orjner
(cons (cons (car (cons 'n 'c)) (cdr (cons nil 's))) nil))
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-09 18:24 ` Andreas Krennmair
2001-05-09 23:01 ` Sashank Varma
@ 2001-05-10 6:06 ` Mark VandeWettering
2001-05-10 7:57 ` Andrew Bromage
2001-05-10 13:03 ` John English
2001-05-10 7:28 ` FM
` (5 subsequent siblings)
7 siblings, 2 replies; 157+ messages in thread
From: Mark VandeWettering @ 2001-05-10 6:06 UTC (permalink / raw)
On 9 May 2001 18:24:26 GMT, Andreas Krennmair <a.krennmair@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++;}}
--
/* __ __ __ ____ __*/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 <markv@telescopemaking.org> */puts("");}}
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-10 6:06 ` Mark VandeWettering
@ 2001-05-10 7:57 ` Andrew Bromage
2001-05-10 8:55 ` Iain McNaughton
[not found] ` <3AFA5A92.5D4F191C@info.unicaen.fr>
2001-05-10 13:03 ` John English
1 sibling, 2 replies; 157+ messages in thread
From: Andrew Bromage @ 2001-05-10 7:57 UTC (permalink / raw)
G'day all.
markv@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
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-10 7:57 ` Andrew Bromage
@ 2001-05-10 8:55 ` Iain McNaughton
2001-05-15 2:02 ` Rob Warnock
[not found] ` <3AFA5A92.5D4F191C@info.unicaen.fr>
1 sibling, 1 reply; 157+ messages in thread
From: Iain McNaughton @ 2001-05-10 8:55 UTC (permalink / raw)
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
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-10 8:55 ` Iain McNaughton
@ 2001-05-15 2:02 ` Rob Warnock
2001-05-15 11:56 ` Andreas Krennmair
0 siblings, 1 reply; 157+ messages in thread
From: Rob Warnock @ 2001-05-15 2:02 UTC (permalink / raw)
Iain McNaughton <im@t956379207.demon.co.uk> wrote:
+---------------
| 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.
+---------------
Not everyone will agree with you. In fact, some have been known to be
quite vehement about it, such as Dijkstra's classic flame:
It is practically impossible to teach good programming to students
that have ad a prior exposure to BASIC: as potential programmers
they are mentally multilated beyond hope of regeneration.[*]
In that same paper, he says somewhat similar things (in varying degrees)
about FORTRAN, PL/I, COBOL, APL, and (reading between the lines) Ada.
And since this thread included a considerable amount of Lisp/Scheme-bashing
because the syntax isn't "natural" (by some opinions), one more excerpt:
Projects promoting programming in "natural language" are
intrinsically doomed to fail.
-Rob
[*] EWD 498 "How do we tell truths that might hurt?", pp.129-131
in Edsger W. Dijkstra, "Selected Writing on Computing: A Personal
Perspective" (Springer Verlag, 1982) ISBN 0-387-90652-5. Scanned
version at <URL:http://www.cs.utexas.edu/users/EWD/ewd04xx/EWD498.PDF>
-----
Rob Warnock, 31-2-510 rpw3@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
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-15 2:02 ` Rob Warnock
@ 2001-05-15 11:56 ` Andreas Krennmair
2001-05-15 17:14 ` FM
0 siblings, 1 reply; 157+ messages in thread
From: Andreas Krennmair @ 2001-05-15 11:56 UTC (permalink / raw)
Rob Warnock <rpw3@rigden.engr.sgi.com> wrote:
> And since this thread included a considerable amount of Lisp/Scheme-bashing
> because the syntax isn't "natural" (by some opinions), one more excerpt:
>
> Projects promoting programming in "natural language" are
> intrinsically doomed to fail.
And that's what Lisp does, according to Paul Foley. He expressed the sentence
"My girlfriend's name is Suzy and her age is 17" in Lisp via
(and (name (girlfriend me) Suzy) (age her 17))
To quote him:
"and there you have it -- a perfect representation of natural language!"
ergo: Lisp is intrinsically doomed to fail.
Regards,
Andreas Krennmair
--
Find bad web sites 8x faster."
-- Motorola ISDN modem ad
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-15 11:56 ` Andreas Krennmair
@ 2001-05-15 17:14 ` FM
2001-05-15 18:08 ` Andreas Krennmair
0 siblings, 1 reply; 157+ messages in thread
From: FM @ 2001-05-15 17:14 UTC (permalink / raw)
"Andreas Krennmair" <a.krennmair@aon.at> wrote:
> Rob Warnock <rpw3@rigden.engr.sgi.com> wrote:
> > And since this thread included a considerable amount of Lisp/Scheme-bashing
> > because the syntax isn't "natural" (by some opinions), one more excerpt:
> >
> > Projects promoting programming in "natural language" are
> > intrinsically doomed to fail.
> And that's what Lisp does, according to Paul Foley. He expressed the sentence
> "My girlfriend's name is Suzy and her age is 17" in Lisp via
> (and (name (girlfriend me) Suzy) (age her 17))
> To quote him:
> "and there you have it -- a perfect representation of natural language!"
>
> ergo: Lisp is intrinsically doomed to fail.
There's a *clear* distinction between a metalanguage that *could* be
used to represent X and X itself. Lisp does not promote programming
in the above style. That it makes manipulation of such representation
extremely trivial is a point in its favor.
In any case, I still find it odd that you'd claim a lot of things
about Lisp just a few days after proclaiming yourself as "an absolute
beginner with Lisp."
Dan.
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-15 17:14 ` FM
@ 2001-05-15 18:08 ` Andreas Krennmair
2001-05-15 20:37 ` FM
0 siblings, 1 reply; 157+ messages in thread
From: Andreas Krennmair @ 2001-05-15 18:08 UTC (permalink / raw)
FM <danfm@dartmouth.edu> wrote:
> In any case, I still find it odd that you'd claim a lot of things
> about Lisp just a few days after proclaiming yourself as "an absolute
> beginner with Lisp."
To be honest, I already know what Lisp is about for about one year (you
won't believe it, I learned about it in school!). But I never really used
it, I only heard many things about it in theory.
And, damn, although I read this group for a few days, I already found out
that there are many competent Lisp hackers and at least as many bigots
and ignorant advocates.
Andreas Krennmair
--
When the pin is pulled, Mr. Grenade is not our friend.
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-15 18:08 ` Andreas Krennmair
@ 2001-05-15 20:37 ` FM
2001-05-16 17:56 ` Andreas Krennmair
0 siblings, 1 reply; 157+ messages in thread
From: FM @ 2001-05-15 20:37 UTC (permalink / raw)
"Andreas Krennmair" <a.krennmair@aon.at> wrote:
> FM <danfm@dartmouth.edu> wrote:
> > In any case, I still find it odd that you'd claim a lot of things
> > about Lisp just a few days after proclaiming yourself as "an absolute
> > beginner with Lisp."
> To be honest, I already know what Lisp is about for about one year (you
> won't believe it, I learned about it in school!). But I never really used
> it, I only heard many things about it in theory.
In other words, you probably realize that don't know enough to
make sweeping, unqualified statements about Lisp.
> And, damn, although I read this group for a few days,
Note that you've been crossposting to many different newsgroups.
I've been reading this thread from comp.lang.functional, though
I'm also subscribed to comp.lang.scheme and comp.lang.lisp.
> I already found out
> that there are many competent Lisp hackers and at least as many bigots
> and ignorant advocates.
Not that I necessarily disagree with your observation, but your
judgment and dismissal of a language without relevant knowledge
would, in many people's minds, qualify you as a bigot. Whether
it would in your mind, well, that's a good test of hypocrisy,
isn't it?
Dan.
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-15 20:37 ` FM
@ 2001-05-16 17:56 ` Andreas Krennmair
2001-05-17 3:06 ` FM
0 siblings, 1 reply; 157+ messages in thread
From: Andreas Krennmair @ 2001-05-16 17:56 UTC (permalink / raw)
FM <danfm@dartmouth.edu> wrote:
> > And, damn, although I read this group for a few days,
> Note that you've been crossposting to many different newsgroups.
Who cares? International usenet is totally crappy already, much too much
noise, and too much traffic, also. And spam!! We hardly have _any_ spam
in at.*, and when, it's quickly cancelled by a cancelbot.
> Not that I necessarily disagree with your observation, but your
> judgment and dismissal of a language without relevant knowledge
> would, in many people's minds, qualify you as a bigot. Whether
I'm not a bigot, since I have my very own opinion on Lisp, and I see both
its good and bad sides. I don't shout "[my favorite language] �ber alles".
What many here miss to understand that there's always the right tool for
the right job, and obviously Lisp can't be it in all disciplines, nor does
any other language (because no language is perfect, also see my signature :).
Regards,
Andreas Krennmair
--
We'll try to make different mistakes this time
-- Larry Wall
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-16 17:56 ` Andreas Krennmair
@ 2001-05-17 3:06 ` FM
0 siblings, 0 replies; 157+ messages in thread
From: FM @ 2001-05-17 3:06 UTC (permalink / raw)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 2072 bytes --]
"Andreas Krennmair" <a.krennmair@aon.at> wrote:
> FM <danfm@dartmouth.edu> wrote:
> > > And, damn, although I read this group for a few days,
> > Note that you've been crossposting to many different newsgroups.
> Who cares?
You should. Or do you not care if you have unresolvable references
in your sentences, which make them completely incomprehensible? Or
did you just miss the point?
> International usenet is totally crappy already, much too much
> noise, and too much traffic, also. And spam!! We hardly have _any_ spam
> in at.*, and when, it's quickly cancelled by a cancelbot.
What are you babbling about? Are you confusing the usenet with a
particular view of it provided by your news server?
> > Not that I necessarily disagree with your observation, but your
> > judgment and dismissal of a language without relevant knowledge
> > would, in many people's minds, qualify you as a bigot. Whether
> I'm not a bigot, since I have my very own opinion on Lisp, and I see both
> its good and bad sides.
Of course no one accused you of being a bigot. And every bigot
*does* have his/her own opinions, even though they may not be
particularly well-informed. Whether you see its good and bad
sides is irrelevant.
> I don't shout "[my favorite language] �ber alles".
Not that I read German, but who has?
> What many here miss to understand that there's always the right tool for
> the right job,
What you fail to observe is that, nearly everyone understands
it. The problem here is that you refuse to believe that other
people are disagreeing with you because you are wrong, not
because they are biased in any way. Heck, I don't even like
Lisp all that much (even if I prefer it to some languages that
I've been forced to learn and use).
> and obviously Lisp can't be it in all disciplines, nor does
> any other language (because no language is perfect, also see my signature :).
No one ever suggested that Lisp is perfect in any form. It's
quite strange that you would perceive other people's arguments
as being absolute. Or maybe not.
Dan.
^ permalink raw reply [flat|nested] 157+ messages in thread
[parent not found: <3AFA5A92.5D4F191C@info.unicaen.fr>]
* Re: Beginner's Language?
2001-05-10 6:06 ` Mark VandeWettering
2001-05-10 7:57 ` Andrew Bromage
@ 2001-05-10 13:03 ` John English
2001-05-10 13:44 ` Michael Livshin
1 sibling, 1 reply; 157+ messages in thread
From: John English @ 2001-05-10 13:03 UTC (permalink / raw)
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:je@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
-----------------------------------------------------------------
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-10 13:03 ` John English
@ 2001-05-10 13:44 ` Michael Livshin
2001-05-16 17:59 ` Lex Spoon
0 siblings, 1 reply; 157+ messages in thread
From: Michael Livshin @ 2001-05-10 13:44 UTC (permalink / raw)
John English <je@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
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-10 13:44 ` Michael Livshin
@ 2001-05-16 17:59 ` Lex Spoon
2001-05-22 14:16 ` John English
0 siblings, 1 reply; 157+ messages in thread
From: Lex Spoon @ 2001-05-16 17:59 UTC (permalink / raw)
Michael Livshin <mlivshin@yahoo.com> writes:
> John English <je@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.
And it's not specific to perl..................
-Lex
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-16 17:59 ` Lex Spoon
@ 2001-05-22 14:16 ` John English
2001-05-22 23:31 ` raj
` (2 more replies)
0 siblings, 3 replies; 157+ messages in thread
From: John English @ 2001-05-22 14:16 UTC (permalink / raw)
Lex Spoon wrote:
>
> Michael Livshin <mlivshin@yahoo.com> writes:
>
> > John English <je@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.
>
> And it's not specific to perl..................
Go on then, write me a poem in Lisp (or Cobol, or Ada, or Java)... :-)
"I think that I will never see
A poem lovely as a... doubly-linked list? ISAM file? etc..."
-----------------------------------------------------------------
John English | mailto:je@brighton.ac.uk
Senior Lecturer | http://www.comp.it.bton.ac.uk/je
Dept. of Computing | ** NON-PROFIT CD FOR CS STUDENTS **
University of Brighton | -- see http://burks.bton.ac.uk
-----------------------------------------------------------------
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-22 14:16 ` John English
@ 2001-05-22 23:31 ` raj
2001-05-23 0:44 ` Chad R. Meiners
2001-05-28 0:17 ` Lao Xiao Hai
2 siblings, 0 replies; 157+ messages in thread
From: raj @ 2001-05-22 23:31 UTC (permalink / raw)
>>I nominate FORTRAN. :-)
>>It is so appalling that any other language that they learn will come
>>as a pleasant relief !
>>
>Volker Bandke <vbandke@bsp-gmbh.com>
>Said by someone who probably never coded a single line of Fortran in his life.
Dem's fighting words ! Put yer dukes up matey ! :-)
But seriously, I have coded a couple of university projects in
Fortran. But yes, I have never had to do it professionally.
( For which I thank, Moloch, Baal and Ceruneo
> And probably not a single line of code in any language, except possibly one.....
I don't want to turn this into a my ** is bigger than yours :-) but
for what it is worth ( about 10 cents ), I have programmed in:
Basic and VB ( for my sins ! )
Pascal
Modula-2
Ada
Occam ( yes ! I am that ancient...)
Fortan ( see above )
C
C++
Some Java
Currently learning Haskell and Squeak and playing with Lisp and
Scheme.
PS: Has anyone seen the great SICP video lectures that are available
free from MIT ?
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-22 14:16 ` John English
2001-05-22 23:31 ` raj
@ 2001-05-23 0:44 ` Chad R. Meiners
2001-05-28 0:17 ` Lao Xiao Hai
2 siblings, 0 replies; 157+ messages in thread
From: Chad R. Meiners @ 2001-05-23 0:44 UTC (permalink / raw)
Strange you should ask for one. I wrote this when I was a first year
college student just learning the language. I don't make any claims that it
is wonderful.
with Ada.text_IO; use Ada.text_IO;
Procedure hierarchy_of_need is
Type hierarchy is (nothing, faith, trust, truth,acceptance,love);
Package Hierarchy_IO is new Ada.Text_IO.Enumeration_IO(hierarchy);
use Hierarchy_IO;
Procedure hierarchy_is(Current_Level : hierarchy) is
begin
If Current_Level <hierarchy'pred(hierarchy'last) then
hierarchy_is(hierarchy'succ(Current_level));
end if;
Put(hierarchy'succ(Current_Level));
Put(" requires ");
Put(Current_Level);
new_line;
end hierarchy_is;
begin
Hierarchy_is(nothing);
end hierarchy_of_need;
-Chad R. Meiners
"John English" <je@brighton.ac.uk> wrote in message
news:3B0A74D9.2A811C9D@brighton.ac.uk...
not specific to perl..................
>
> Go on then, write me a poem in Lisp (or Cobol, or Ada, or Java)... :-)
>
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-22 14:16 ` John English
2001-05-22 23:31 ` raj
2001-05-23 0:44 ` Chad R. Meiners
@ 2001-05-28 0:17 ` Lao Xiao Hai
2001-05-30 20:34 ` Florian Weimer
2 siblings, 1 reply; 157+ messages in thread
From: Lao Xiao Hai @ 2001-05-28 0:17 UTC (permalink / raw)
John English wrote:
> ....Go on then, write me a poem in Lisp (or Cobol, or Ada, or Java)... :-)
>
> "I think that I will never see
> A poem lovely as a... doubly-linked list? ISAM file? etc..."
Poetry, by its very nature, relies heavily on ambiguity. This is discussed
quite comprehensively in William Empsom's great book, "Seven Types
of Ambiguity," in which he lays out the models of ambiguity reflected
in various styles of poetry. Poetry also makes it statement with
simile and metaphor. Although we use metaphor often when discussing
programming, we avoid it when actually writing programs.
Programming, by its very nature relies on lack of ambiguity. Well, of
course, that is generally true. If one is programming in C++, ambiguity
is part of the fun.
Richard Riehle
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-28 0:17 ` Lao Xiao Hai
@ 2001-05-30 20:34 ` Florian Weimer
0 siblings, 0 replies; 157+ messages in thread
From: Florian Weimer @ 2001-05-30 20:34 UTC (permalink / raw)
Lao Xiao Hai <laoxhai@ix.netcom.com> writes:
> Poetry, by its very nature, relies heavily on ambiguity.
Another definition of poetry involves the concept of 'bounded
language' (sorry, I don't know the English translation). This means
that the poet obeys to certain restrictions (meter, overall and verse
structure, distinguished vocabulary, certain symbols or subjects).
This characterization is necessary if you look at 20th century poetry.
Some works are not ambiguous at all, but really drastic. Nevertheless,
they are poems.
> Programming, by its very nature relies on lack of ambiguity. Well,
> of course, that is generally true. If one is programming in C++,
> ambiguity is part of the fun.
Ada provides ambiguity resolution rules as well (but doesn't go as far
as C++, of course).
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-09 18:24 ` Andreas Krennmair
2001-05-09 23:01 ` Sashank Varma
2001-05-10 6:06 ` Mark VandeWettering
@ 2001-05-10 7:28 ` FM
2001-05-10 8:51 ` Jochen Schmidt
2001-05-11 15:55 ` Andreas Krennmair
2001-05-10 8:11 ` Friedrich Dominicus
` (4 subsequent siblings)
7 siblings, 2 replies; 157+ messages in thread
From: FM @ 2001-05-10 7:28 UTC (permalink / raw)
Andreas Krennmair <a.krennmair@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.
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-10 7:28 ` FM
@ 2001-05-10 8:51 ` Jochen Schmidt
2001-05-10 21:32 ` FM
` (2 more replies)
2001-05-11 15:55 ` Andreas Krennmair
1 sibling, 3 replies; 157+ messages in thread
From: Jochen Schmidt @ 2001-05-10 8:51 UTC (permalink / raw)
FM wrote:
> Andreas Krennmair <a.krennmair@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))
(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
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-10 8:51 ` Jochen Schmidt
@ 2001-05-10 21:32 ` FM
2001-05-11 0:26 ` James Rogers
2001-05-12 2:56 ` FM
2001-05-12 17:06 ` FM
2 siblings, 1 reply; 157+ messages in thread
From: FM @ 2001-05-10 21:32 UTC (permalink / raw)
Jochen Schmidt <jsc@dataheaven.de> wrote:
>FM wrote:
>> Andreas Krennmair <a.krennmair@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.
--
Love is an ideal thing, marriage a real thing; a confusion of the real
with the ideal never goes unpunished.
-- Johann Wolfgang von Goethe
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-10 21:32 ` FM
@ 2001-05-11 0:26 ` James Rogers
0 siblings, 0 replies; 157+ messages in thread
From: James Rogers @ 2001-05-11 0:26 UTC (permalink / raw)
FM wrote:
>
> Jochen Schmidt <jsc@dataheaven.de> wrote:
> >FM wrote:
> >> Andreas Krennmair <a.krennmair@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*.
>
Aha, comp.lang.Ada now ventures into the off-topic discussion of
creationism versus evolution theory.
I can see why someone might believe that the Perl syntax is a
product of purely chaotic forces, with no elements of planning or
design. On a closer inspection, however, one must admit that
features of Perl could never have evolved from C, its original
syntactic progenitor.
For example, look at the I/O model for Perl. No loops required.
That could never come from C.
Example:
@contents = <>;
The above statement reads all of Standard Input into a vector
named "@contents".
If there is any relationship with C it must be in the form of
a genetic mutation. If so, what is the C genetic feature altered
to produce this Perl feature?
Note also that the theory of evolution always procedes from the
simple to the complex. On a feature-by-feature comparison most
of Perl's syntax is simpler than C's. Perl's data model is certainly
simpler than C's. This is progress directly opposite evolution.
No, the evidence clearly shows that Perl is not the result of
evolution, but merely the result of a brilliant but undisciplined
intelligence.
Jim Rogers
Colorado Springs, Colorado USA
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-10 8:51 ` Jochen Schmidt
2001-05-10 21:32 ` FM
@ 2001-05-12 2:56 ` FM
2001-05-12 17:06 ` FM
2 siblings, 0 replies; 157+ messages in thread
From: FM @ 2001-05-12 2:56 UTC (permalink / raw)
"Jochen Schmidt" <jsc@dataheaven.de> wrote:
> FM wrote:
> > Andreas Krennmair <a.krennmair@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????
By natural, I meant that it seems to have arisen through evolution,
rather than by design.
Dan.
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-10 8:51 ` Jochen Schmidt
2001-05-10 21:32 ` FM
2001-05-12 2:56 ` FM
@ 2001-05-12 17:06 ` FM
2 siblings, 0 replies; 157+ messages in thread
From: FM @ 2001-05-12 17:06 UTC (permalink / raw)
"Jochen Schmidt" <jsc@dataheaven.de> wrote:
> FM wrote:
>
> > Andreas Krennmair <a.krennmair@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.)
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-10 7:28 ` FM
2001-05-10 8:51 ` Jochen Schmidt
@ 2001-05-11 15:55 ` Andreas Krennmair
2001-05-15 9:19 ` Siegfried Gonzi
1 sibling, 1 reply; 157+ messages in thread
From: Andreas Krennmair @ 2001-05-11 15:55 UTC (permalink / raw)
FM <danfm@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."
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-11 15:55 ` Andreas Krennmair
@ 2001-05-15 9:19 ` Siegfried Gonzi
2001-05-15 9:47 ` Preben Randhol
2001-05-15 12:06 ` Andreas Krennmair
0 siblings, 2 replies; 157+ messages in thread
From: Siegfried Gonzi @ 2001-05-15 9:19 UTC (permalink / raw)
Andreas Krennmair wrote:
> > 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.
[all the crosspostings are not deleted from my side, so be aware]
>
You are joking? I also attended such a (to be honest not computer-science but
mechanical-engineering) school.
Now I am at the university and in July I will start with my PhD thesis in physics.
So, I know what I am talking about when I say that the difference between the HTL
(the above mentioned school is named that in Austria: Hoehere Technische
Bundeslehranstalt) and the university is similar to black and white.
Sure HTL graduates have some basic knowledge, but it is not legal to compare that
knowledge to knowledge which graduates from universities own.
Do not get me wrong, but the teachers at the HTL only have got as a degree a MS.
Knowing different programming languages (and more is not teached at the HTL during
the 5 years) is not enough. So, I think the phrase "elite" is in no way appropiate
for HTL graduates. But that doesn't mean that I connect with "elite" university
graduates only. What counts is what someone know...
S. Gonzi
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-15 9:19 ` Siegfried Gonzi
@ 2001-05-15 9:47 ` Preben Randhol
2001-05-15 12:06 ` Andreas Krennmair
1 sibling, 0 replies; 157+ messages in thread
From: Preben Randhol @ 2001-05-15 9:47 UTC (permalink / raw)
On Tue, 15 May 2001 11:19:17 +0200, Siegfried Gonzi wrote:
> Knowing different programming languages (and more is not teached at the HTL during
> the 5 years) is not enough. So, I think the phrase "elite" is in no way appropiate
> for HTL graduates. But that doesn't mean that I connect with "elite" university
> graduates only. What counts is what someone know...
>
What does this have to do with Ada ? Please move the discussion to some
list concerning education systems etc..
--
Preben Randhol ------------------- http://www.pvv.org/~randhol/ --
�For me, Ada95 puts back the joy in programming.�
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-15 9:19 ` Siegfried Gonzi
2001-05-15 9:47 ` Preben Randhol
@ 2001-05-15 12:06 ` Andreas Krennmair
1 sibling, 0 replies; 157+ messages in thread
From: Andreas Krennmair @ 2001-05-15 12:06 UTC (permalink / raw)
Siegfried Gonzi <siegfried.gonzi@kfunigraz.ac.at> wrote:
> Do not get me wrong, but the teachers at the HTL only have got as a degree
> a MS.
As already mentioned somewhere else, I have two teachers being doctors of
computer science. One of them also teaches in Johannes Kepler University/Linz,
and the other one taught operating systems in FHS Hagenberg.
> Knowing different programming languages (and more is not teached at the HTL
> during
> the 5 years) is not enough. So, I think the phrase "elite" is in no way
Of course a lot more is taught
- algorithms and data structures
- object oriented design
- project development in teams
- network technologies
Just have a look at http://www.htl-leonding.ac.at/, there you can find a
complete list of all subjects.
Best regards,
Andreas Krennmair
--
10 PRINT "Just another BASIC hacker"
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-09 18:24 ` Andreas Krennmair
` (2 preceding siblings ...)
2001-05-10 7:28 ` FM
@ 2001-05-10 8:11 ` Friedrich Dominicus
2001-05-10 11:09 ` Markus Mottl
` (3 subsequent siblings)
7 siblings, 0 replies; 157+ messages in thread
From: Friedrich Dominicus @ 2001-05-10 8:11 UTC (permalink / raw)
a.krennmair@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
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-09 18:24 ` Andreas Krennmair
` (3 preceding siblings ...)
2001-05-10 8:11 ` Friedrich Dominicus
@ 2001-05-10 11:09 ` Markus Mottl
2001-05-10 14:44 ` Eugene Zaikonnikov
` (2 subsequent siblings)
7 siblings, 0 replies; 157+ messages in thread
From: Markus Mottl @ 2001-05-10 11:09 UTC (permalink / raw)
In comp.lang.functional Andreas Krennmair <a.krennmair@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, mottl@miss.wu-wien.ac.at, http://miss.wu-wien.ac.at/~mottl
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-09 18:24 ` Andreas Krennmair
` (4 preceding siblings ...)
2001-05-10 11:09 ` Markus Mottl
@ 2001-05-10 14:44 ` Eugene Zaikonnikov
2001-05-10 15:34 ` ssthapa
2001-05-14 19:58 ` Johan Kullstam
7 siblings, 0 replies; 157+ messages in thread
From: Eugene Zaikonnikov @ 2001-05-10 14:44 UTC (permalink / raw)
* "AK" == Andreas Krennmair <a.krennmair@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
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-09 18:24 ` Andreas Krennmair
` (5 preceding siblings ...)
2001-05-10 14:44 ` Eugene Zaikonnikov
@ 2001-05-10 15:34 ` ssthapa
2001-05-14 19:58 ` Johan Kullstam
7 siblings, 0 replies; 157+ messages in thread
From: ssthapa @ 2001-05-10 15:34 UTC (permalink / raw)
Andreas Krennmair <a.krennmair@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-thapa-11@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
----------------------------------------------------------------------------
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-09 18:24 ` Andreas Krennmair
` (6 preceding siblings ...)
2001-05-10 15:34 ` ssthapa
@ 2001-05-14 19:58 ` Johan Kullstam
2001-05-14 20:14 ` Matthias Blume
7 siblings, 1 reply; 157+ messages in thread
From: Johan Kullstam @ 2001-05-14 19:58 UTC (permalink / raw)
a.krennmair@aon.at (Andreas Krennmair) writes:
> Friedrich Dominicus <frido@q-software-solutions.com> wrote:
> > "Marin David Condic" <marin.condic.auntie.spam@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).
in C, functions are not first class objects; you cannot do functional
programming in C.
example 1
how do i take a function of two args in C and pass it to a function
which expects a funciton of only one arg?
(defun foo (x y) (...))
(bar #'(lambda (u) (foo u 4)))
in C, this can be kluged by using a global variable and a named helper
function which accesses the global and calls foo. it's very ugly and
not re-entrant.
example 2
how do i have a function *create* and return a *function*?
(defun power-function (power)
#'(lambda (x) (expt x power)))
now use it to get
lisp> (mapcar (power-function 3) '(1 2 3))
(1 8 27)
afaik this cannot be done in C at all.
--
J o h a n K u l l s t a m
[kullstam@ne.mediaone.net]
sysengr
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-14 19:58 ` Johan Kullstam
@ 2001-05-14 20:14 ` Matthias Blume
2001-05-16 16:16 ` J�rgen Exner
0 siblings, 1 reply; 157+ messages in thread
From: Matthias Blume @ 2001-05-14 20:14 UTC (permalink / raw)
Johan Kullstam wrote:
>
> a.krennmair@aon.at (Andreas Krennmair) writes:
>
> > Friedrich Dominicus <frido@q-software-solutions.com> wrote:
> > > "Marin David Condic" <marin.condic.auntie.spam@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).
>
> in C, functions are not first class objects; you cannot do functional
> programming in C.
false and (in some sense) true
(Functions _are_ first-class objects in C; and you cannot do _elegant_ functional
programming in C.)
>
> how do i take a function of two args in C and pass it to a function
> which expects a funciton of only one arg?
What does this have to do with first-class-ness and/or functional programming?
In ML or Haskell, I cannot take a function of two arguments and pass it to a
function that expects a function of only one argument.
> (defun foo (x y) (...))
>
> (bar #'(lambda (u) (foo u 4)))
>
> in C, this can be kluged by using a global variable and a named helper
> function which accesses the global and calls foo. it's very ugly and
> not re-entrant.
Oh, I see. You are talking about closures and partial application. In C this can
be (and often has been) done using explicit closure passing style. See your
favorite X windows toolkit for plentiful examples. (I didn't say it was pretty.)
To go back to ML or Haskell (or Lisp or Scheme): What you are doing is not "passing
of a function of two args to a place that expects a function of one arg", you are
actually passing a function that expects one arg (and which happens to call the original
function of two args).
> example 2
>
> how do i have a function *create* and return a *function*?
>
> (defun power-function (power)
> #'(lambda (x) (expt x power)))
>
> now use it to get
>
> lisp> (mapcar (power-function 3) '(1 2 3))
> (1 8 27)
>
> afaik this cannot be done in C at all.
Can be done. Same trick, explicit closure passing. (Of course, you won't be passing
"just a function" then in C.)
Matthias
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-14 20:14 ` Matthias Blume
@ 2001-05-16 16:16 ` J�rgen Exner
2001-05-16 20:49 ` Matthias Blume
0 siblings, 1 reply; 157+ messages in thread
From: J�rgen Exner @ 2001-05-16 16:16 UTC (permalink / raw)
"Matthias Blume" <blume@research.bell-labs.com> wrote in message
news:3B003CA2.D24D083C@research.bell-labs.com...
> false and (in some sense) true
> (Functions _are_ first-class objects in C; and you cannot do _elegant_
functional
> programming in C.)
Sorry, that's not correct.
In C the only first-class objects are byte, chars, ints, doubles, ..., and
pointers. These are the only objects you can use
- as elements of a complex data structure (array, record or however you
want to call it)
- return value of a function/procedure
Second class objects in C are e.g. strings, arrays, and functions/procedures
because they cannot be be used as elements in a complex data structure or as
a return value of a function.
Of course, because C is so low-level, you can simulate functional
programming by using pointers to functions and for complex datastructes. But
with the same argument could be applied to even assembler.
jue
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-16 16:16 ` J�rgen Exner
@ 2001-05-16 20:49 ` Matthias Blume
2001-05-17 0:22 ` Boris Smilga
2001-05-17 1:29 ` a
0 siblings, 2 replies; 157+ messages in thread
From: Matthias Blume @ 2001-05-16 20:49 UTC (permalink / raw)
"J�rgen Exner" wrote:
>
> "Matthias Blume" <blume@research.bell-labs.com> wrote in message
> news:3B003CA2.D24D083C@research.bell-labs.com...
> > false and (in some sense) true
> > (Functions _are_ first-class objects in C; and you cannot do _elegant_
> functional
> > programming in C.)
>
> Sorry, that's not correct.
> In C the only first-class objects are byte, chars, ints, doubles, ..., and
> pointers. These are the only objects you can use
> - as elements of a complex data structure (array, record or however you
> want to call it)
> - return value of a function/procedure
>
> Second class objects in C are e.g. strings, arrays, and functions/procedures
A agree about the arrays, C does not have strings so the comment about them
is pointless, and I DO NOT agree about functions. In C functions are function
pointers, and they are completely first-class because they can be used "as
elements of a complex data structure (array, record or however you want to
call it)" and they can be the "return value of a function/procedure".
> Of course, because C is so low-level, you can simulate functional
> programming by using pointers to functions
Functions and pointers to functions are the same in C. There is some slight
syntactic confusion about that because of some apparent differences between
f and (*f). But the difference is not really there. If you think about
every function expression F as a pointer to the function, you get the right
interpretation. In other words, there are no functions in C beyond function
pointers.
Matthias
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-16 20:49 ` Matthias Blume
@ 2001-05-17 0:22 ` Boris Smilga
2001-05-17 1:29 ` a
1 sibling, 0 replies; 157+ messages in thread
From: Boris Smilga @ 2001-05-17 0:22 UTC (permalink / raw)
Matthias Blume <blume@research.bell-labs.com> writes:
> <...> In C functions are function
> pointers, and they are completely first-class because they can be used "as
> elements of a complex data structure (array, record or however you want to
> call it)" and they can be the "return value of a function/procedure".
Pronouncing this explicitely, "being a first-class object" is not the
same as "being dynamically creatable". [Can one say "creatable" in
English?] The ability to generate first-class procedures (closures) on
the fly is, probably, one of the most pleasant distinctions of Scheme.
(There are other languages with that feature, of course, but Scheme
was, most likely, the first one to provide it.)
-BSm
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-16 20:49 ` Matthias Blume
2001-05-17 0:22 ` Boris Smilga
@ 2001-05-17 1:29 ` a
2001-05-17 3:07 ` FM
2001-05-17 13:56 ` Matthias Blume
1 sibling, 2 replies; 157+ messages in thread
From: a @ 2001-05-17 1:29 UTC (permalink / raw)
On Wed, 16 May 2001 16:49:39 -0400, Matthias Blume
<blume@research.bell-labs.com> wrote:
>is pointless, and I DO NOT agree about functions. In C functions are function
>pointers, and they are completely first-class because they can be used "as
In C, a function has to have a name, and it can't be instantiated at run time
from data available only at run time. If that's first class, what class is a
Lisp lambda? Do ordinal numbers go that low?
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-17 1:29 ` a
@ 2001-05-17 3:07 ` FM
2001-05-17 13:56 ` Matthias Blume
1 sibling, 0 replies; 157+ messages in thread
From: FM @ 2001-05-17 3:07 UTC (permalink / raw)
<a@b.c> wrote:
> On Wed, 16 May 2001 16:49:39 -0400, Matthias Blume
> <blume@research.bell-labs.com> wrote:
>
> >is pointless, and I DO NOT agree about functions. In C functions are function
> >pointers, and they are completely first-class because they can be used "as
>
> In C, a function has to have a name, and it can't be instantiated at run time
> from data available only at run time.
That's a completely different issue. Type "int" is a finite set of
values (as every integral type in C is) and you can say that it's
always instantiated from data avaiable at compile time as well. If
you see a closure as a function/environment pair, then the
"function" part of the closure is static as well. There's nothing
first-class about being able to instantiate at runtime anyway.
On the other hand, there's something odd about calling functions
first-class in C. I'd rather phrase it "function pointers are
first-class values in C." Then again, I'd do the same for Common
Lisp.
Dan.
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-17 1:29 ` a
2001-05-17 3:07 ` FM
@ 2001-05-17 13:56 ` Matthias Blume
2001-05-17 17:54 ` J�rgen Exner
1 sibling, 1 reply; 157+ messages in thread
From: Matthias Blume @ 2001-05-17 13:56 UTC (permalink / raw)
a@b.c wrote:
>
> On Wed, 16 May 2001 16:49:39 -0400, Matthias Blume
> <blume@research.bell-labs.com> wrote:
>
> >is pointless, and I DO NOT agree about functions. In C functions are function
> >pointers, and they are completely first-class because they can be used "as
>
> In C, a function has to have a name, and it can't be instantiated at run time
> from data available only at run time. If that's first class, what class is a
> Lisp lambda? Do ordinal numbers go that low?
You are confusing issues. C functions are not exactly the same as functions in
functional programming languages. C functions are first-order (not to be confused
with first-class). This means that there are no _nested_ functions. If you leave
out the nested functions from, say, ML (without perturbing anything else), you get
precisely the C model. You can still pass these functions around with abandon, but
in implementation terms you don't need more than one instance of each one.
So the problem is one of terminology:
ML- (or Lisp-) functions are first class.
C functions are first class.
But:
ML functions and C functions are not the same concept.
Because:
ML functions are higher-order.
C functions are first-order.
In other words, C functions are first-class for what they are, but this does not mean
that they are in some way equivalent to ML functions.
Think of it like this: We can say: "C integers are first class" (which is undisputed,
or so I hope), but C _integers_ are in no way equivalent to ML _reals_ (which are also
first class but otherwise different).
Matthias
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-17 13:56 ` Matthias Blume
@ 2001-05-17 17:54 ` J�rgen Exner
0 siblings, 0 replies; 157+ messages in thread
From: J�rgen Exner @ 2001-05-17 17:54 UTC (permalink / raw)
"Matthias Blume" <blume@research.bell-labs.com> wrote in message
news:3B03D88B.E878B018@research.bell-labs.com...
> a@b.c wrote:
[excellent explanation clipped]
> ML functions and C functions are not the same concept.
> Because:
> ML functions are higher-order.
> C functions are first-order.
>
> In other words, C functions are first-class for what they are, but this
does not mean
> that they are in some way equivalent to ML functions.
Very nicely put. That's what I tried to say, but I couldn't phrase it right.
jue
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-09 13:55 ` Marin David Condic
` (2 preceding siblings ...)
2001-05-09 15:39 ` Friedrich Dominicus
@ 2001-05-09 22:56 ` David Thornley
2001-05-10 9:16 ` Ola Rinta-Koski
2001-05-10 5:53 ` Mark VandeWettering
` (3 subsequent siblings)
7 siblings, 1 reply; 157+ messages in thread
From: David Thornley @ 2001-05-09 22:56 UTC (permalink / raw)
In article <9dbi83$sji$1@nh.pace.co.uk>,
Marin David Condic <marin.condic.auntie.spam@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.
david@thornley.net | If you don't, flee.
http://www.thornley.net/~thornley/david/ | O-
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-09 22:56 ` David Thornley
@ 2001-05-10 9:16 ` Ola Rinta-Koski
2001-05-10 20:17 ` David Thornley
0 siblings, 1 reply; 157+ messages in thread
From: Ola Rinta-Koski @ 2001-05-10 9:16 UTC (permalink / raw)
thornley@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.
--
Ola Rinta-Koski ola@cyberell.com
Cyberell Oy +358 41 467 2502
Rauhankatu 8 C, FIN-00170 Helsinki, FINLAND www.cyberell.com
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-10 9:16 ` Ola Rinta-Koski
@ 2001-05-10 20:17 ` David Thornley
0 siblings, 0 replies; 157+ messages in thread
From: David Thornley @ 2001-05-10 20:17 UTC (permalink / raw)
In article <x5zocly361.fsf@arenal.cyberell.com>,
Ola Rinta-Koski <ola@cyberell.com> wrote:
>thornley@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.
--
David H. Thornley | If you want my opinion, ask.
david@thornley.net | If you don't, flee.
http://www.thornley.net/~thornley/david/ | O-
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-09 13:55 ` Marin David Condic
` (3 preceding siblings ...)
2001-05-09 22:56 ` David Thornley
@ 2001-05-10 5:53 ` Mark VandeWettering
2001-05-10 9:22 ` Francis Leboutte
` (2 subsequent siblings)
7 siblings, 0 replies; 157+ messages in thread
From: Mark VandeWettering @ 2001-05-10 5:53 UTC (permalink / raw)
Marin David Condic <marin.condic.auntie.spam@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.condic@pacemicro.com
>Web: http://www.mcondic.com/
>
>
>"Friedrich Dominicus" <frido@q-software-solutions.com> wrote in message
>news:87snihxiwc.fsf@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 <markv@telescopemaking.org> */puts("");}}
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-09 13:55 ` Marin David Condic
` (4 preceding siblings ...)
2001-05-10 5:53 ` Mark VandeWettering
@ 2001-05-10 9:22 ` Francis Leboutte
2001-05-10 15:13 ` Georg Bauhaus
2001-05-10 15:17 ` brlewis
7 siblings, 0 replies; 157+ messages in thread
From: Francis Leboutte @ 2001-05-10 9:22 UTC (permalink / raw)
"Marin David Condic" <marin.condic.auntie.spam@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
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-09 13:55 ` Marin David Condic
` (5 preceding siblings ...)
2001-05-10 9:22 ` Francis Leboutte
@ 2001-05-10 15:13 ` Georg Bauhaus
2001-05-10 16:49 ` Jochen Schmidt
2001-05-11 7:34 ` Ola Rinta-Koski
2001-05-10 15:17 ` brlewis
7 siblings, 2 replies; 157+ messages in thread
From: Georg Bauhaus @ 2001-05-10 15:13 UTC (permalink / raw)
Marin David Condic (marin.condic.auntie.spam@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.
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-10 15:13 ` Georg Bauhaus
@ 2001-05-10 16:49 ` Jochen Schmidt
2001-05-10 17:04 ` Friedrich Dominicus
2001-05-11 7:34 ` Ola Rinta-Koski
1 sibling, 1 reply; 157+ messages in thread
From: Jochen Schmidt @ 2001-05-10 16:49 UTC (permalink / raw)
Georg Bauhaus wrote:
> Marin David Condic (marin.condic.auntie.spam@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
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-10 16:49 ` Jochen Schmidt
@ 2001-05-10 17:04 ` Friedrich Dominicus
0 siblings, 0 replies; 157+ messages in thread
From: Friedrich Dominicus @ 2001-05-10 17:04 UTC (permalink / raw)
Jochen Schmidt <jsc@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
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-10 15:13 ` Georg Bauhaus
2001-05-10 16:49 ` Jochen Schmidt
@ 2001-05-11 7:34 ` Ola Rinta-Koski
2001-05-11 14:47 ` Georg Bauhaus
1 sibling, 1 reply; 157+ messages in thread
From: Ola Rinta-Koski @ 2001-05-11 7:34 UTC (permalink / raw)
sb463ba@l1-hrz.uni-duisburg.de (Georg Bauhaus) writes:
> Marin David Condic (marin.condic.auntie.spam@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.
--
Ola Rinta-Koski ola@cyberell.com
Cyberell Oy +358 41 467 2502
Rauhankatu 8 C, FIN-00170 Helsinki, FINLAND www.cyberell.com
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-11 7:34 ` Ola Rinta-Koski
@ 2001-05-11 14:47 ` Georg Bauhaus
0 siblings, 0 replies; 157+ messages in thread
From: Georg Bauhaus @ 2001-05-11 14:47 UTC (permalink / raw)
Ola Rinta-Koski (ola@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
^ permalink raw reply [flat|nested] 157+ messages in thread
* Re: Beginner's Language?
2001-05-09 13:55 ` Marin David Condic
` (6 preceding siblings ...)
2001-05-10 15:13 ` Georg Bauhaus
@ 2001-05-10 15:17 ` brlewis
7 siblings, 0 replies; 157+ messages in thread
From: brlewis @ 2001-05-10 15:17 UTC (permalink / raw)
"Marin David Condic" <marin.condic.auntie.spam@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
^ permalink raw reply [flat|nested] 157+ messages in thread