The performance comparisons to other players is a brilliant feature, though.
Once I found myself trying to implement a mutex in it... I've just spent all day at work doing stuff like this, and then I come home from work and keep doing it there as well.
Great game, but it's like catnip for programmers.
Why Do We Play Video Games That Feel Like Work? - https://news.ycombinator.com/item?id=9495141
It's a puzzle game, though, and probably aims less at being a practical teaching tool than a set of novel and obscure problems. If it teaches anything it'd be approaching odd problems in general, just like spacechem did.
The moment you realize that you can use JRO with a direction to control flow from another node, it feels like a genuine revelation while being immediately obvious and logical in hindsight.
0 if LEFT is <= 0
UP if LEFT is > 0
So you have two options S: MOV LEFT ACC
JGE E
MOV 0 DOWN
MOV UP NIL
JMP S
E: MOV UP DOWN
Or you could do this: S: JRO LEFT
MOV UP NIL
MOV 0 DOWN
JMP S
MOV UP DOWN
And left would send 1 if its value is <= 0, or 4 if it's >0. In this case it only saves one cycle for the node under consideration, but it could be a good deal more if the conditional is more involved.I did notice that you can shorten labels to fit another line of code in, though :)
People accomplished great things back in the 8-bit era with the tools they had, but the stuff they do today with the same hardware is truly mind blowing. I attribute that at least partially to things like that C64 emulator [1] where you can just view all of the system's memory during execution.
[1] http://icu64.blogspot.com/2009/09/first-public-release-of-ic...
I think this is a very important part. Personally I enjoyed pre-spacechem games a lot (e.g. http://www.zachtronics.com/the-codex-of-alchemical-engineeri...) because they were difficult and because they were very simple. Spacechem got grander and it was still fun, but for my simple tastes infinifactory isn't bare enough.