←back to thread

Type checking is a symptom, not a solution

(programmingsimplicity.substack.com)
67 points mpweiher | 2 comments | | HN request time: 0.436s | source
Show context
jameshart ◴[] No.45142572[source]
All programmers need to try assembly programming just once.

Just a program counter, a stack, a flat addressable block of memory, and some registers.

You’ll very quickly learn how hard it is to program when you have complete responsibility for making sure that the state of the system is exactly as expected before a routine is called, and that it’s restored on return.

Every language tool we’ve built on top of that is to help programmers keep track of what data they stored where, what state things should be in before particular bits of code are run, and making it harder to make dumb mistakes like running some code that will only work on data of one sort on data of a totally different structure.

Of course types are a solution. You just have no idea what the problem was.

replies(7): >>45142961 #>>45143148 #>>45143298 #>>45143430 #>>45143718 #>>45145214 #>>45145436 #
1. TheCleric ◴[] No.45145214[source]
For anyone who just wants a taste of this I highly recommend the game Shenzen I/O. The game is your writing a subset of assembly for products at a manufacturing facility.
replies(1): >>45146119 #
2. jameshart ◴[] No.45146119[source]
Great recommendation, although the limited assembly language doesn't give you access to memory or a stack. Zachtronics have a couple more assembly-language-like games - TIS-100 and ExaPunks - both of which are also excellent for exploring the kind of coding you can do in a very limited programming environment. ExaPunks offers the most programming freedom (including a fully emulated handheld video game device you can use to implement actual games); TIS-100 is probably most like real assembly programming.