<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Fri, Aug 28, 2015 at 10:45 AM Silvio Frischknecht <<a href="mailto:silvio.frischi@gmail.com">silvio.frischi@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
In my opinion, Haskell is a terrible first language to learn.<br>
<br>
It has a very complicated type-system, and it's restriction to purely<br>
functional programming does not convey very well how (current) computers<br>
work. Current computers work by you giving them an step by step guide<br>
what to do. This I think is what should be at the base of any<br>
beginners-programming course.<br></blockquote><div><br></div><div>I have to disagree, and for much the same reason that Nicola does: these details matter if you're teaching computer architecture, but not if you are teaching programming. At least, not in an introductory course.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Python would by my language of choice. You won't have to worry about low<br>
level stuff or typing, but can still write those step by step programs.<br></blockquote><div><br></div><div>Python is a good language if you want an imperative language, but like Haskell it isn't a good choice for teaching computer architecture. For instance, computers manipulate values in a store. But Python and Haskell work with labels on values. A Python assignment statement doesn't change the value in storage as a computer would, but puts a label on a value.  Manipulating storage is as fundamental to common computers as sequential operation, so if you're going to drop Haskell for not having one, you should also drop Python for not having the other.</div><div></div></div></div>