On Mon, 2011-06-13 at 14:47 +1200, Peter Gutmann wrote: > "Richard O'Keefe" <o...@cs.otago.ac.nz> writes: > > >Well in that case, perhaps the language to start with should be Haskell... > > Teaching programming by starting people on Haskell is like teaching ESOL > (English for non-English speakers) by starting them on Klingon [0].
We tried using Miranda (a precursor to Haskell) followed by C++ in the late 1980s at UCL. In many ways it was very successful but as will not surprise anyone here, I think this was mainly due to the energy and enthusiasm of the teaching. In long distance hindsight, the main problems were the emphasis on mathematically related problems, and the REPL. I remain totally unconvinced by the emphasis on using REPLs in even the most recent books on teaching programming languages, cf. Haskell, Scala, and some Python books. File editor + execution systems, such as Python's IDLE or Groovy's GroovyConsole seem to me to be far better tools for teaching -- Emacs doesn't count as lightweight, and IDEs such as Eclipse and IntelliJ IDEA certainly do not. I am not sure what has happened to BlueJ recently. If I were still involved in introductory programming teaching (as opposed to training/education of programming professionals which I do quite a lot of now), I would be thinking of replacing Java with either Scala or Groovy depending on whether static typing or dynamic typing was the approach the rest of the people involved in the teaching preferred. The Java Platform is a multi language platform, Java, Scala, and Groovy being the main languages with Clojure in a group on its own following, with Jython, JRuby, BeanShell, etc. in a third group following that. The libraries that come as standard, and that which can be obtained from the Maven repository are the true powerhouse of the Java Platform, not Java per se. Using Groovy or Scala to teach how to use the Java Platform seems entirely natural to me since both remove all the ceremony that the Java programming language continues to suffer. And Java 7 will not fix that. Nor will Java 8. And in the modern era concurrency and parallelism should not be a specialist final year option, it should simply crop up naturally as integral part of introducing people to programming. Groovy+GPars and Scala allow for this, Java does not. > Peter. > > [0] For those unfamiliar with it, it's been specifically designed to be unlike > any other language spoken on earth. > -- Russel. ============================================================================= Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.win...@ekiga.net 41 Buckmaster Road m: +44 7770 465 077 xmpp: rus...@russel.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
signature.asc
Description: This is a digitally signed message part
-- The Open University is incorporated by Royal Charter (RC 000391), an exempt charity in England & Wales and a charity registered in Scotland (SC 038302).