× {{alert.msg}} Never ask again
Get notified about new tutorials RECEIVE NEW TUTORIALS

Learning to make stuff with computers: from CPUs to Haskell Web Apps

Dan Connolly
Dec 06, 2014
<p>We have multi-core, gigahertz processors on our wrists. Games are developed like Hollywood blockbusters, with hundreds of creative and technical people working together for years. As a new developer, where do you even start?! I have a few gems for you:</p><ul><li><a href="http://www.codeworld.info/">CodeWorld</a>: <span style="color:rgb(95, 99, 102); font-family:lato,sans-serif">create your own pictures, animations, and games on the Web</span></li><li><a href="https://www.youtube.com/watch?v=yF5-6AcohQw">How The Web Just Happened</a></li><li><a href="http://www.cs.colby.edu/djskrien/CPUSim/">CpuSim</a>: An Interactive CPU Simulator</li><li><a href="http://www.nand2tetris.org/">From NAND to Tetris</a>: Building a Modern Computer from First Principles</li></ul><p><a href="http://www.codeworld.info/">CodeWorld</a>, by Chris Smith, was designed to teach math to teenagers. <span style="color:rgb(95, 99, 102); font-family:lato,sans-serif">It lets b</span>rand new developers, with just a few hours of instruction, build haskell web apps right in your browser, without the hassle of text editors, compilers, etc.</p><p>Computer Science degree programs typically start students with Java or the like, but consider</p><pre><code class="language-java">x = x + 1</code></pre><p> from the perspective of the typical high school algebra student. That's nonsense!</p><p>Then consider</p><pre><code>main = animationOf(design) design(t) = rotate(slot, 60 * t) &amp; middle &amp; outside slot = solidRectangle(4, 0.4) middle = solidCircle(1.2) outside = circle(2)</code></pre><p>versus the mish-mash of concepts and code typical graphics and animation frameworks require. And while CodeWorld looks a bit like a toy, haskell is not. Haskell will take you a long way in the world of computing.</p><p><a href="https://www.youtube.com/watch?v=yF5-6AcohQw">How The Web Just Happened</a> is an hour talk by Tim Berners-Lee, inventor of the Web, explaining how he started by building magnets, and just as he mastered those, transistors became available to hobbyists. And just as he mastered transitors, integrated circuits came along. And so on, until he had a Next machine and the Internet at his disposal. My own career followed a similar path, just a few years behind his. I didn't build my own display, but with a Radio Shack Color Computer, I learned the principles of Unix from OS/9, and I built my own printer interface and wrote my own disk driver. Tim and I met in 1991 and worked together building the Web for the next 20 years.</p><p><a href="http://www.cs.colby.edu/djskrien/CPUSim/">CpuSim</a>, <span style="color:rgb(95, 99, 102); font-family:lato,sans-serif">by Dale Skrien at </span>Colby College, lets you really see how CPUs work, with registers and memory and assembly language and machine language. While it's great to know haskell and other high level programming languges, it's still important to know what's going on underneath. This one you have to download and install to run, but it took me just a few minutes, and as a Java app, it runs on lots of platforms.</p><p><a href="http://www.nand2tetris.org/">From NAND to Tetris</a>, b<span style="color:rgb(95, 99, 102); font-family:lato,sans-serif">y Noam Nisan and Shimon Schocken, covers the parts in between: operating systems, compilers, and all that. It's a course of many weeks, and I haven't done it, personally. But if you're willing to spend the time, it lets you walk the path that Tim and I did, even though the giga-scale technology is all ready rolled out everywhere.</span></p>
comments powered by Disqus