Path: utzoo!mnetor!tmsoft!torsqnt!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!wuarchive!cs.utexas.edu!uunet!mcsun!ukc!edcastle!cs.ed.ac.uk!mikef From: mikef@cs.ed.ac.uk (Mike Fourman) Newsgroups: comp.edu Subject: Re: Language Use Keywords: C,Ada,Pascal,C++,Other? Message-ID: <8177@skye.cs.ed.ac.uk> Date: 25 Mar 91 11:19:20 GMT References: <1150@ra.MsState.Edu> Sender: nnews@cs.ed.ac.uk Reply-To: mikef@lfcs.ed.ac.uk (Mike Fourman) Organization: Laboratory for the Foundations of Computer Science, Edinburgh U Lines: 83 In article eibo@rosun1.informatik.uni-hamburg.de (Eibo Thieme) writes: >If I were to decide which language to use, especially to start with I suggest you use Standard ML >I would consider the following objectives: Let's consider them > > * Immediate Reward > "Write down a few lines of code and watch things happen." > Don't let them be bored by extensive syntax-checking or > mystical compiler usage. ML can be used as an interactive language, with a read-eval-print interface, a la lisp (but (far) fewer () {:-)}). > > * Being Modern > "Look, I can do fancy windows too." Beginners want their > programs to be as pleasing to the eye as those shiny > products they see on the market. Too true! We've spent some effort producing simple graphics for ML for use in introductory courses, and it pays off. (Some ML implementations also have sophisticated graphics for fully-fledged user-interfaces.) > > * Essential Programming > "The algorithm was in the books but doing the interface > took me a week." Most of real world applications seem to > be 90% user-interface, students instinctively try to > adapt to this situation. The interactive nature of ML and the built-in parsing for user-defined (and built-in) datatypes make it possible to concentrate on the algorithms. > > * Software Engineering > "When I saw the other group understood our code I knew it > was worth the effort." Systematic construction of software > is a far higher good than freaky code dabbling. Don't use > a language which invites "creativity". ML has: static typing, polymorphism, controlled assignment, higher-order functions, abstract types, and a module system for 'programming in the large'. > > * Reliable Software > "I was dumbfounded when the compiler found my conceptual > glitch." Beginners should learn to appreciate extensive > syntax-checking, type-checking, etc. ML's static analysis performs type inference, type checking, and analysis of cases for redundant patterns and missing cases. The first perception of ML is invariably that once it type checks it's correct. (Second perceptions are more realistic, but most of the bugs you would have put in in C, for example, are caught by ML's static analysis.) In addition, ML has a formal semantics, and the Extended ML specification and refinement language supports top-down program development > >I cannot think of any small set of languages taking into account >all these constraints and there will be even more to add to the list. Hope the list is small enough :-) Prof. Michael P. Fourman email mikef@lfcs.ed.ac.uk Dept. of Computer Science 'PHONE (+44) (0)31-650 5198 (sec) JCMB, King's Buildings, Mayfield Road, (+44) (0)31-650 5197 Edinburgh EH9 3JZ, Scotland, UK FAX (+44) (0)31 667 7209 ------------------------------------------------------------------------------- -- Prof. Michael P. Fourman email mikef@lfcs.ed.ac.uk Dept. of Computer Science 'PHONE (+44) (0)31-650 5198 (sec) JCMB, King's Buildings, Mayfield Road, (+44) (0)31-650 5197 Edinburgh EH9 3JZ, Scotland, UK FAX (+44) (0)31 667 7209