<br><br>
<div><span class="gmail_quote">On 4/16/07, <b class="gmail_sendername">Ketil Malde</b> &lt;<a href="mailto:ketil@ii.uib.no">ketil@ii.uib.no</a>&gt; wrote:</span></div>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">On Mon, 2007-04-16 at 13:27 +0200, Thomas Hartman wrote:<br><br>&gt; To recap: transform a piece of simple code that works in serial, so it
<br>&gt; works in parallel. Maybe even a couple, or three ways: using forks,<br>&gt; using threads, using map reduce.<br><br>This made me think of one of my favorite observations.<br><br>You occasionally hear how the wonderful static type system just forces
<br>your program to be correct: if they compile, they work.&nbsp;&nbsp;We all know<br>that this is an exaggeration, </blockquote>
<div>&nbsp;</div>
<div>No we don&#39;t! At least not anywhere near as much of an exaggeration as that statement would be about an strongly typed imperative language (sequencing can&#39;t be type checked*, imperative programs are mostly sequencing, thus imperative programs are mostly unchecked).
</div>
<div>&nbsp;</div>
<div>Strong static typing + expression-based programming + rich support for custom data types&nbsp;= &quot;if the compiler doesn&#39;t beep, the program almost always works&quot;.</div>
<div>&nbsp;</div>
<div>I think this is a key selling point. Not sure how to convince people it&#39;s actually true in a 3 hour tutorial, though.</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>* well, you can check scoping, but that&#39;s about it, right?<br>&nbsp;</div>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">-- <br>Sebastian Sylvan<br>+44(0)7857-300802<br>UIN: 44640862 </blockquote>