From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 107f24,626a0a064b320310 X-Google-Attributes: gid107f24,public X-Google-Thread: 10259a,626a0a064b320310 X-Google-Attributes: gid10259a,public X-Google-Thread: f4fd2,626a0a064b320310 X-Google-Attributes: gidf4fd2,public X-Google-Thread: 103376,ea8ea502d35ca2ce X-Google-Attributes: gid103376,public X-Google-Thread: 114809,626a0a064b320310 X-Google-Attributes: gid114809,public X-Google-Thread: 1164ba,626a0a064b320310 X-Google-Attributes: gid1164ba,public X-Google-Thread: 103d24,626a0a064b320310 X-Google-Attributes: gid103d24,public X-Google-ArrivalTime: 2001-05-11 07:48:20 PST Path: archiver1.sj.google.com!newsfeed.google.com!sn-xit-03!supernews.com!logbridge.uoregon.edu!news.maxwell.syr.edu!news-was.dfn.de!news-koe1.dfn.de!RRZ.Uni-Koeln.DE!uni-duisburg.de!l1-hrz.uni-duisburg.de!sb463ba From: sb463ba@l1-hrz.uni-duisburg.de (Georg Bauhaus) Newsgroups: comp.lang.ada,comp.lang.lisp,comp.lang.smalltalk,comp.lang.basic,comp.lang.functional,comp.lang.scheme,comp.lang.perl Subject: Re: Beginner's Language? Followup-To: comp.lang.ada,comp.lang.lisp,comp.lang.smalltalk,comp.lang.basic,comp.lang.functional,comp.lang.scheme,comp.lang.perl Date: Fri, 11 May 2001 14:47:49 +0000 (UTC) Organization: GMUGHDU Message-ID: <9dgu2l$eeo$1@a1-hrz.uni-duisburg.de> References: <9cukad$nn68@news-dxb> <9d6b6e$1bt$1@nh.pace.co.uk> <87snihxiwc.fsf@frown.here> <9dbi83$sji$1@nh.pace.co.uk> <9deb6a$hdp$1@a1-hrz.uni-duisburg.de> NNTP-Posting-Host: l1-hrz.uni-duisburg.de X-Trace: a1-hrz.uni-duisburg.de 989592469 14808 134.91.4.34 (11 May 2001 14:47:49 GMT) X-Complaints-To: usenet@news.uni-duisburg.de NNTP-Posting-Date: Fri, 11 May 2001 14:47:49 +0000 (UTC) X-Newsreader: TIN [version 1.2 PL2] Xref: archiver1.sj.google.com comp.lang.ada:7395 comp.lang.lisp:9850 comp.lang.smalltalk:9567 comp.lang.functional:5550 comp.lang.scheme:3719 comp.lang.perl:2651 Date: 2001-05-11T14:47:49+00:00 List-Id: 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 . : > 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