<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Aug 28, 2015 at 11:07 PM, Silvio Frischknecht <span dir="ltr"><<a href="mailto:silvio.frischi@gmail.com" target="_blank">silvio.frischi@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">> I kindly disagree.<br>
<br>
This being a haskell mailing list, I expected that :)<br>
<span><br>
> If the focus is to teach computer architecture, you are<br>
> not teaching programming. If the focus is on programming, then it should<br>
> focus on the conceptual aspects of programming, not on computers.<br>
> A course at school should of course teach both, but in my opinion not<br>
> concurrently. There’s no point in teaching something implicitly by using<br>
> the teaching of something else.<br>
<br>
</span>It's more about algorithms than computer architecture. An imperative<br>
program very clearly describes algorithms; Haskell does not. Unless you<br>
have a very good understanding of things like lazyness, non-strictness<br>
and tail recursion, you wont know what happens when and how.<br></blockquote><div><br>«It is easier to optimize correct code than to correct optimized code.»<br>--Bill Harlan<br><br></div><div>More heretically I draw your attention to Bob Harper's SECP<br><br>«everyone knows that <span>algorithm</span>s as welearned  them  at  school  are  irrelevant  to  practice.   »<br><a href="http://www.cs.cmu.edu/~rwh/papers/secp/secp.pdf" target="_blank">http://www.cs.cmu.edu/~rwh/papers/secp/secp.pdf</a><br><br></div><div>In my view «CS is the science of algorithms» is one of those memes that has held back our field because it underplays data.<br></div><div>And traditional programming pedagogy (aka imperative programming) is wrong because it emphasizes code at the cost of data<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<span><br>
> We are not talking about undergraduates here, but kids or teenagers.<br>
> Think about which is the reason why you are teaching something to them.<br>
> It is not to teach some specific skill or to make them be advantaged in<br>
> future undergraduate courses. It is to teach them to reason.<br>
> Functional programming is just more reasoning than technicalities.<br>
<br>
</span>All the more reason not to teach Haskell. To CS undergraduates you might<br>
teach your favorite programming paradigm. They can take it, and they<br>
will also learn others anyway. To teenagers who might never learn<br>
another language, it is not a good idea.<br>
<span><br>
>> There are also a lot of very basic data structures that can simply not<br>
>> be used in purely functional code like hash tables, pipes or random<br>
>> access arrays.<br>
><br>
> Why do you think that manipulating arrays is a better skill to teach<br>
> to kids than manipulating linked lists?<br>
<br>
</span>What about double linked lists then. Most updatable data structures are<br>
just clumsy in Haskell.<br></blockquote><div><br></div><div>I see a lot of naivete in this thread (not just your claims).<br></div><div>Every programming language will do some things niftily and (many) others clumsily.<br></div><div>And when as teachers we consider the importance of <a href="https://en.wikipedia.org/wiki/Principles_of_learning#Primacy" target="_blank">Law of Primacy</a> we need to carefully consider the order in which we introduce material.<br></div><div>A case could be made [as Donn Cave does below] for assembly.<br>From my pov getting Hindley-Milner intuitions right should take primacy over updatable data structures.<br></div><div>Likewise the best language of your choice will be based on what you consider primary.<br></div><div>How do we come to an objective evaluation of that??? Dunno...<br></div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<span><br>
> There was a nice article on reddit of a parent that was in progress of teaching<br>
> Haskell to his/her 10-years old, and it was a great experience. I cannot find it anymore.<br>
> Remember, kids (motivated kids, at least) are way smarter than what school<br>
> usually seems to think.<br>
<br>
</span>Some kids are smarter, some less so. In secondary school you should have<br>
a curriculum that most students can follow.<br></blockquote><div><br><br></div><div>Just to be clear I'd be pleasantly surprised if someone can show haskell is a good thing for school children.<br></div><div>I dont know what is... Depends on the school and the child I guess??<br><br></div><div>On FP finally (50 years after Lisp!) making it to the abc level of CS-curricula:   <a href="http://blog.languager.org/2015/06/functional-programming-moving-target.html">http://blog.languager.org/2015/06/functional-programming-moving-target.html</a><br><br></div></div>
</div></div>