We are getting dangerously off-topic here. (not that I mind).

On Tuesday 25 January 2005 04:05, Micha Feigin wrote:
> At Mon, 24 Jan 2005 13:33:20 +0200,
>
> Yedidyah Bar-David wrote:
> > On Mon, Jan 24, 2005 at 12:59:15PM +0200, Danny Lieberman wrote:
> > > muli
> > >
> > > Lisp is the language of Autocad - Scheme is the language of the TAU CS
> > > dept. Acad has a bigger install base. ;-)
> >
> > LISP is a family of languages, not one language. If one is to learn
> > LISP today they will probably learn CommonLisp, which AFAIK isn't
> > the variant Autocad uses. So if you hier a fresh LISP programmer he
>
> Talking of lisp, don't forget emacsen-lisp (and a few other more obscure
> programs that use lisp as a scripting language).
>

In my post I gave a coverage of several implementation-specific LISPs. But 
Scheme is still a dialect of LISP.

> > won't have a big advantage for programming Autocad over a seasoned
> > scheme programmer. I do not imply that our graduates are seasoned
> > scheme programmers. BTW, we started (or at least intend to in the
> > near future) teaching Java as a first language. I am not personally
> > confident this is the best choice, but noone asked me - I am a sys
> > admin, not a proffessor.
> > BTW - one of the main reasons, or so I have heard, for teaching
> > scheme, isn't that it's such a great language (it might be - I don't
> > know it. I do know LISP and think it's great), but the great book
> > they use to teach it ("Structure and Interpretation of Computer
> > Programs"). I do not underestimate such a reason, assuming the book
> > is indeed good.
>
> One of the main reasons for teaching scheme is that it was adopted from the
> MIT introduction course (I think one of the profesors brought it with him
> from a sabatical or something like that).
>

Well, the MIT introducory course and the book "Strucutre and Interpretation of 
Computer Programs" are highly related. The book was written by the two 
original lecturers who formulated the course at MIT.

> The reason they teach it there is that scheme is designed to handle
> computation theoretical concepts. Actually it was writen to handle a
> logical approach to symbolic math (lambda notation) but basic theoretical
> CS ideas fit nicely in that slot.

Scheme is very suitable for the book and course for several reasons. One that 
it is very simple and yet powerful enough to accomodate for the needs of the 
student. The other is that it contains the necessary primitives for 
recursion, closures, numeric operations, etc. Finally, it is very trivial to 
implement an interpreter or compiler for Scheme as is demonstrated in the 
book.

>
> If you read the course book you will see that its supposed to be a very
> interesting course with scheme used as a tool and not a goal. The course
> kind of missed on that.

I took the two corresponding courses at the Technion (EE Faculty) under the 
supervision of Prof. Jakob Katzenelson (who, BTW is credited in the second 
edition of the book), and I never felt this way. In the Technion, the course 
is not intended as an introducory course to programming, but rather as a 
course for learning how to program and think about programming creatively. I 
have read the book beforehand by reading it in one of the Technion libraries, 
and yet I found that performing the exercises was highly enlightening. 
(albeit for me - not too difficult). 

>
> I think that course should be tought after the students have had some basic
> programing experience so that things fit into place better, 

Right. SICP is too abstract for absolute beginners. Beginners need a more 
concrete and down-to-earth corriculum with more practical tasks.

> although I am 
> not sure if java is the right choice and c is definitely problematic. You
> need to understand OO programing to handle java properly and it has some
> problems with its approach to OO for teaching purposes and c is too
> flexible for this purpose. 

The problem with C is that it's too low-level and limiting for beginners. 
Beginners shouldn't need to write a Hello World program with an obscure 
#include <stdio.h> header, and an int main() function that returns 0. They 
shouldn't have to use printf("My integer is %i\n") instead of print "My 
integer is", i, "\n"; or something similar. And they don't need to be aware 
of pointers with all their nuances and caveats. C also requires quite a lot 
of code to do some extremely basic operations, which beginners would find 
annoying.

C is now being taught as the introducory language in the Technion (and for 
many students the language they'll use most of the time in their courses). I 
can tell that many people without a prior experience in programming, find it 
difficult to grasp and too hard. I really wish a different language was used.

My sister is now a CS undergraduate student in the Technion. She learned 
mostly ANSI C in the two introducery courses, but now she has the Data 
Structures course, for which the computer exercises were given in C++. (with 
classes, templates, functors, and other beasts). I don't see why they 
couldn't have simply given the assignments in ANSI C if that's what they 
taught the most.

> Tought as a first language it teaches people 
> very bad programing habits (mainly problems with good encasulation and
> segregation)
>

Are you referring to Java or to C?

Regards,

        Shlomi Fish

---------------------------------------------------------------------
Shlomi Fish      [EMAIL PROTECTED]
Homepage:        http://www.shlomifish.org/

Knuth is not God! It took him two days to build the Roman Empire.

=================================================================
To unsubscribe, send mail to [EMAIL PROTECTED] with
the word "unsubscribe" in the message body, e.g., run the command
echo unsubscribe | mail [EMAIL PROTECTED]

Reply via email to