Path: utzoo!utgpu!watmath!att!tut.cis.ohio-state.edu!cica!ctrsol!ginosko!aplcen!aplvax.jhuapl.edu!genesch From: genesch@aplvax.jhuapl.edu (Eugene Schwartzman) Newsgroups: comp.lang.misc Subject: Re: Which language to teach first? Message-ID: <2550@aplcen.apl.jhu.edu> Date: 7 Aug 89 19:57:26 GMT Sender: news@aplcen.apl.jhu.edu Reply-To: genesch@aplvax.jhuapl.edu (Eugene Schwartzman) Organization: The Johns Hopkins University Applied Physics Laboratory Lines: 84 In article <161@enea.se> sommar@enea.se (Erland Sommarskog) writes: #Marc Sabatella (marc@hpfcdc.HP.COM) writes: #>I could probably make a good argument for a language like Ada as a beginning #>language - if you stick to basics it is as easy as Pascal (easier, really - #>I think in/out is more intutive than "var"), and when it is time to learn #>more advanced concepts (say, in a second or third course) you don't have to #>switch languages. # #I am about to second that. If I were to choose an introductury #langauge for people that would be like me, a computer consultant #working with industrial real-time applications and information #systems, I would choose a language that supported the most #important concepts for that type of programs: safety, modularity #and reusuability. I would also choose a real-world language, i.e. #a language that the students most likely will come in touch with #in their professional career. Safety means a strongly and statically #typed language so that leaves out languages like Lisp and Smalltalk, #but also C and Pascal. (And I guess Modula-2.) And with the last Why Pascal, it's just as strongly typed as ADA? #two requirements there are not too many langauges left. Finally, #the real-world requirement would exclude things like Mesa, Turing #and ML which to my knowledge is not used much in practice. # What remains here is Ada and Eiffel (which qualifies as a real-world #langauge since I believe it's going to spread in use, and it will #take some years until my students are there, out in real life). #My choice for the first year would be Ada, since the modularization AAAAAAAAAHHHHHHHHHHHHHHHH!!!!!!!! #concepts can be kept simple in Ada with flattening the language #too much. And, as Marc says, I wouldn't take all of the language, #only what I need to demonstrate the important issues about typing #and modularization. # In Eiffel, on the other hand, the inheritance mechanism is not #trivial, and leaving it out to begin with would give a strange #light on the language. But, of course, I wouldn't let the students #out of my university without an course in object-oriented programming #with Eiffel as the course language. # They would also have to learn some assembler, some about query #languages (so they know how powerless they are.) But, there would #be no C, Lisp, or Scheme. C is something they can learn by them- #selves if they really have to. Lisp have I personally only used to #program Emacs, but seems to me most like a toy language, nothing #for type of system I work with. Scheme I don't even know what it #is, from which I conlude it's no real-world langague. # #But as I said, that is for people who would grew up and be like me. It seems to me that your are pushing ADA merely based on the fact that it is useful for the system *you* work with. Everything you have stated about Ada can be used to say about Pascal, except one - ease of programming. I think it's a lot easier to program in Pascal than in Ada. Why? Because, Pascal is not as restrictive. In Pascal, if you have a problem, more than likely you will be able to debug it step by step (syntax problem, not logical), but with Ada it is almost impossible. Why? Personal example - I wrote a *very* small program (2 -3 packages, ~10 lines/package) and it took me days to figure out why I kept getting certain syntax error (not that the errors themselves were very helpful). Call be stupid, inexperienced with Ada, whatever, but imagine a biginning student running into that. You know what he'll do - say "fuck this"drop class, and switch majors. I know, because I've seen many people drop simply because they were having trouble with the language. Personally, I've never had a syntax error I couldn't fix within a matter of minutes using Pascal,logic is another story :-) As far as Lisp being a toy language, I would like to see you do AI work in Ada.... It might not be right for you, but I think it's just right depending on what oyu wnat to do. I wouldn't want to write an OS in it, but do to AI work, it's great. As far as Ada being real-world, I'd have to disagree with you very loudly. The only "real" world that uses it with any regularity is government and military. What if the person doesn't want to work for either? As far as switching, I learned Pascal first and had absolutely no problem understanding Ada syntax, the problem I ran into is the stupidity of having all of the I/O packages, etc... and because it's so restrictive. If you really want to teach reusability, restrictiveness, etc.. use Pascal, it has all of that, but Pascal also gives you lot's of freedom if needed, something Ada doesn't have. gene schwartzman genesch@aplvax.jhuapl.edu _______________________________________________________________________________ | GO BEARS, GO CUBS, GO WHITE SOX, GO BULLS, GO BLACKHAWKS, GO TERPS !!!!! | | Soccer is a kick in the grass (and sometimes on astroturf)! | | GO DIPLOMATS, GO STARS, GO BAYS, GO BLAST !!!! | | CFL -> GO EDMONTON ESKIMOS!!!! VFL -> GO CARLTON BLUES !!!! | |_____________________________________________________________________________| Disclaimer: These are my opinions and not of my employer.