At Tue, 25 Jan 2005 06:40:12 +0200,
Shlomi Fish wrote:
> 
> 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.
> 

When I started at least it was taught as the second language after scheme. From
doing later projects with people I can tell you it caused a lot of
misunderstandings and bad coding habits, especially the pointer stuff. Learning 
c
first also makes people use c++ as a functional language instead of as an OO
language.

A first language should be an OO one with clean syntax and no pointers. It
doesn't need to be a powerful, but it has to be clear and simple so that people
understand the concepts before they start using the heavy and obscure tools that
allow them to break the concepts. Some of the problem is that lecturers tend to
teach the language more then the concept (there are a few good ones, but then
the course is considered difficult and people try to avoid it ;-)

> 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.
> 

BTW I'm not sure what was the first language I learned but IIRC it was LOGO if
anyone recalls that (IIRC correctly its also a variant of lisp - still exists,
called ucblogo under debian). I think the second language was basic (I used to
lock up the XT machines in high school drawing Mandelbrot sets in b/w using
basic).

> > 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?
> 

I'm referring to c here. As a first language its taught with great emphasis on
functional programing (as opposed to OO). Although it is, good functional
programing should take in mind OO ideas which make the code much more
maintainable.

I see a lot of code written by people who started out with c and there is a
tendency to use too many global variables, not defining functions as static when
they are used locally and shouldn't be globally visible, etc. Using callbacks 
is a
very neglected subject, and yes, pointers can make things very confusing at
first, although they can also be a very powerful tool if you use them correctly.

C++ is a bad language for beginners also since among other things its not strict
enough on OO (as it stays compliant with c) and really need to know what it does
behind the scenes if you don't want to have a very inefficient code in the end
(for example STL is not the best choice for programs that are supposed to be
real time and highly optimized). Besides, STL syntax can make things VERY
complicated at first.

> 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]
> 
>  
>  +++++++++++++++++++++++++++++++++++++++++++
>  This Mail Was Scanned By Mail-seCure System
>  at the Tel-Aviv University CC.
> 

=================================================================
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