Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!cs.utexas.edu!uunet!mcvax!kth!sunic!enea!sommar From: sommar@enea.se (Erland Sommarskog) Newsgroups: comp.lang.misc Subject: Re: Which language to teach first? Message-ID: <161@enea.se> Date: 5 Aug 89 22:24:30 GMT Organization: Enea Data AB, Sweden Lines: 45 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 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 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. -- Erland Sommarskog - ENEA Data, Stockholm - sommar@enea.se "Hey poor, you don't have to be Jesus!" - Front 242