Learning to make stuff with computers: from CPUs to Haskell Web Apps
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:
- CodeWorld: create your own pictures, animations, and games on the Web
- How The Web Just Happened
- CpuSim: An Interactive CPU Simulator
- From NAND to Tetris: Building a Modern Computer from First Principles
CodeWorld, by Chris Smith, was designed to teach math to teenagers. It lets brand 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.
Computer Science degree programs typically start students with Java or the like, but consider
x = x + 1
from the perspective of the typical high school algebra student. That's nonsense!
Then consider
main = animationOf(design)
design(t) = rotate(slot, 60 * t) & middle & outside
slot = solidRectangle(4, 0.4)
middle = solidCircle(1.2)
outside = circle(2)
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.
How The Web Just Happened 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.
CpuSim, by Dale Skrien at 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.
From NAND to Tetris, by 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.
originally published at https://www.codementor.io/tips/4919482737/learning-to-make-stuff-with-computers-from-cpus-to-haskell-web-apps .