3 ms·
This is the first time I'm hearing a beginner looking at a program as algebraic equations! I wonder how people with such backgrounds will take to Haskell. I thi
by currywurst 14y ago
This is the first time I'm hearing a beginner looking at a program as algebraic equations! I wonder how people with such backgrounds will take to Haskell. I think their intuitions will get them a long way ...
- tikhonj 14y agoI've certainly seen plenty of beginners get confused by the idea of mutable state and assignments. The unfortunate syntax that looks like an equation but isn't doesn't help. When I was teaching Java to some younger students in high school, I had consistent problems explaining the idea of variables. Then again, I'm not the best of teachers :P. Seeing someone like that start with Haskell would be pretty cool. There, at the very least, the equations are actually just that.
- EvilTerran 14y agoThe Oxford undergraduate CS course starts people on Haskell before touching any other languages, and the prospectus actively discourages people from picking up a language as "prep work" (although, of course, most applicants are avid programming tinkerers already). My impression was that those with very little practice programming found Haskell no harder to pick up, if not a bit easier, than those who'd played with imperative languages beforehand -- everyone had a good grasp of high-school algebra (being most of the entrance exam), and that seemed to help more than any programming skills.
- tikhonj 14y agoAs you can guess from my other post, the intro CS class at my school (Berkeley) was based around Scheme and SICP. I noticed the something similar: people with no previous experience found Scheme much easier to pick up than Java. (Java was, unfortunately, the language in the second CS class.) In fact, as odd as it may seem to people well acquainted with C-like languages, people even had problems with the syntax. Some students just didn't know where to put the curly braces in if statements, for example. I think starting from Haskell or ML would be similar to starting from Scheme. While I actually like Haskell more for programming, I think Scheme has some slight advantages for learning: there's no syntax, it's very simple and it supports a ton of different paradigms. I would personally like to cover a whole bunch of different paradigms in Scheme before specializing with languages like Haskell or Prolog.
- EvilTerran 14y agoRegarding advantages for learning, via introducing concepts incrementally, Haskell has its own strengths over Scheme as well as vice-versa. You can start on both with "the interactive interpreter is a calculator!", and introduce the non-numeric data types -- but then, in Haskell, you can bring in the various monads to introduce other paradigms. For instance: once the students have a handle on pure code, show them State for, well, state; Maybe/Either for exception handling; Writer for output; lists for prolog-esque non-determinism; ST for a richer model of mutable state; and finally IO for side-effects. Also, I guess I like "getting them while they're young" when it comes to static typing -- it encourages a certain rigour of thought that I feel serves me well even in dynamically typed langauges.