| This doesn't match my experience at all. People with literally no programming experience do not magically understand what a for-loop does. In fact--at least among the people I've tried teaching myself--they don't even understand what a mutable variable is! (And it's not like I used that term: I try to explain it in a simple way.) Learning the syntax for Php or JavaScript isn't that easy. On the other hand, anybody with some math experience already knows and understands what a function is. At least to these people, Haskell syntax is clearer because it more closely matches something they're already familiar with: defining functions by cases. Sure, if you use some weird operators from odd libraries, people won't be able to follow. But that's true of using odd libraries in any language: people won't inherently understand AbstractBeanFactories or __magic_names__ either! Now, if you already have some programming experience and little math, it's a completely different story. Once you've seen one imperative language with loops, statements and variables, you've seen them all. But this says more about how similar they are them about how easy they are to understand without background. The usual experience people have with teaching Haskell and Scheme is that it's actually easier for people without prior programming experience! Colleges starting with either of these languages use them partly to level the playing field, and it seems to have worked reasonably well. Besides, C and especially C++ are both very difficult to pick up. This hadn't stopped them from being people's first languages and becoming extremely popular. There's definitely much more to the equation, and I think the perceived difficulty of learning is both less important and less pronounced many people believe. |