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.

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

Attachment: 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).

Reply via email to