On 2009-12-28 12:53:28 +0100, retard <[email protected]> said:
I'm not saying that everyone should learn Haskell, but I know it's
possible to learn stuff like Curry-Howard isomorphism, hylomorphisms,
monads, monad transformers, comonads, and analysing amortized costs of
algorithms at that age. It's just dumb to assume that young people can't
learn something as complex as static types!

With respect to education: I think that exposing different programming paradigms to students has a lot of merit. Each paradigm has different structuring of data and execution, and is taylored to different problems. Pick a language for each paradigm that is as simple as possible, but still powerful enough to solve practical problems. This will avoid students to be overwhelmed by the multitude of possible construction combinations. E.g. a plausible language selection with varying typing disciplines would be:

- Haskell or ML (functional programming, static typing)
- Prolog (declarative/logics programming)
- Python or maybe Ruby (object-oriented programming, dynamic typing)

While D2 is nice for people who want great performance without many of the downsides of C++, I do not think it makes a good first language for education. Various stumbling blocks I see include asymmetry of struct/class, immutable (which tends to creep in everywhere, and can be cast away with undefined behavior), static vs. dynamic arrays, use of multiple paradigms (structured, OO, functional), and not so strong typing. Besides availability of books, tools, and libraries of course.

Of course, some of the practical problems may be solved in short term, if Andrei's book sparks more interest from the wider programming community.

-- Daniel

Reply via email to