[OT] Re: Using Haskell for teaching [was: Help me decide D or C]

Jonathan M Davis newsgroup.d at jmdavisprog.com
Sat Aug 3 05:24:27 UTC 2019

On Friday, August 2, 2019 11:05:13 AM MDT Russel Winder via Digitalmars-d-
learn wrote:
> On Fri, 2019-08-02 at 10:25 -0600, Jonathan M Davis via
> Digitalmars-d-learn wrote:
> […]
> > My feeling is that functional languages are likely to be a very poor
> > place for most folks to start learning, much as I think that they're
> > great for someone to learn and work with at some point. I have heard of
> > beginning programming classes using functional languages and having it
> > go very well, but it seems hard to believe to me. Imperative
> > programming can already be a lot for beginners, but most people really
> > don't think even vaguely in a functional manner. Even simple recursion
> > tends to be a bit of a mind-bender for people at first.
> […]
> At UCL in the late 1980s and early 1990s, we used a functional programming
> language in the first term and C++ in the second term for teaching
> programming. Initially Scheme was the functional programming language but
> we then switched to Miranda (which was a pre-cursor to Haskell).
> This deep immersion in two totally different programming paradigms worked
> very well. The mid/late 1990s mad rush to Java everywhere in teaching (of
> which I was a part) was in hindsight madness (of a global sort). The move
> by many institutions to using Python first and then Java rebalances
> somewhat but is missing the point – it's about the paradigms. I have
> retrenched as a believer in the Haskell/C++, or Prolog/Java, or some
> such. In the new era with new undergraduates already knowing Scratch and
> Python, universities should really go the whole hog in getting
> programming paradigms and programming as a skill as well as knowledge,
> with all the tools,fair and square into the first year curriculum.
> Of course I have been out of academia for 20 years, and am now out of
> employment, so my views have no impact. :-)

The university I went to had an undergrad class on programming paradigms
that I _think_ was required (maybe two even), but it was definitely just the
focus of a small number of classes, whereas my experience is that you get a
lot more out of it when you actually use a language with a different
paradigm for a while rather than just doing one group of assignments in it -
and when the class covers multiple programming paradigms, that also dilutes
how much you get out of each. On some level, as with many things, a lot of
it depends on how much the students decide to put into it on their own.

I still find it funny that the class that got me started with Haskell was
the grad version of the programming paradigms course, and we used Haskell
only because the teacher was always using Scheme (in fact, he was a
developer for Dr. Scheme IIRC) and felt like doing something different. So,
while I'd used Scheme some in an undergrad course, I ended up using Haskell
in the course with the teacher who was majorly into Scheme. It seemed a bit
like if one of the major D contributors decided to use Rust for a bit just
to try something different.

Of course, I haven't done anywhere near as good a job at learning new
languages for a while now, because I've been focused enough on D that I
haven't really wanted to spend time writing programs in something else. And
I don't think that it works very well to really learn a language if you
don't use it as your go-to language for a while (at least if you want to
be good at more than the basics). There's no question though that I'm better
at D thanks to the time I spent on languages such as Haskell.

- Jonathan M Davis

More information about the Digitalmars-d-learn mailing list