I notice confusion in myself over the swiftly emergent complexity of mathematics. How the heck does the concept of multiplication lead so quickly into the Ulam spiral? Knowing how to take the square root of a negative number (though you don’t even need that—complex multiplication can be thought of completely geometrically) easily lets you construct the Mandelbrot set, etc. It feels impossible or magical that something so infinitely complex can just exist inherent in the basic rules of grade-school math, and so “close to the surface.” I would be less surprised if something with Mandelbrot-level complexity only showed up when doing extremely complex calculations (or otherwise highly detailed “starting rules”), but something like the 3x+1 problem shows this sort of thing happening in the freaking number line!
I’m confused not only at how or why this happens, but also at why I find this so mysterious (or even disturbing).
I was listening to a podcast the other day Lex Friedman interviewing Michael Littman and Charles Isbell, and Charles told an interesting anecdote.
He was asked to teach an ‘introduction to CS’ class as a favor to someone, and he found himself thinking, “how am I going to fill an hour and a half of time going over just variables, or just ‘for’ loops?” and every time he would realize an hour and a half wasn’t enough time to go over those ‘basic’ concepts in detail.
He goes on to say that programming is reading a variable, writing a variable, and conditional branching. Everything else is syntactic sugar.
The Tao Te Ching talks about this, broadly: everything in the world comes from yin and yang, 1 and 0, from the existence of order in contrast to chaos. Information is information and it gets increasingly more complex and interesting the deeper you go. You can study almost anything for 50 years and still be learning new things. It doesn’t surprise me at all that such interesting, complex concepts come from number lines and negative sqrts, these are actually already really complex concepts, they just don’t seem that way because they are the most basic concepts one needs to comprehend in order to build on that knowledge and learn more.
I’ve never been a programmer, but I’ve been trying to learn Rust lately. Somewhat hilariously to me, Rust is known as being ‘a hard language to learn’, similarly to Haskell. It is! It is hard to learn. But so is every other programming language, they just hide the inevitable complexity better, and their particular versions of these abstractions are simpler at the outset. Rust simply expects you to understand the concepts early, rather than hiding them initially like Python or C# or something.
Hope this is enlightening at all regarding your point, I really liked your post.
I notice confusion in myself over the swiftly emergent complexity of mathematics. How the heck does the concept of multiplication lead so quickly into the Ulam spiral? Knowing how to take the square root of a negative number (though you don’t even need that—complex multiplication can be thought of completely geometrically) easily lets you construct the Mandelbrot set, etc. It feels impossible or magical that something so infinitely complex can just exist inherent in the basic rules of grade-school math, and so “close to the surface.” I would be less surprised if something with Mandelbrot-level complexity only showed up when doing extremely complex calculations (or otherwise highly detailed “starting rules”), but something like the 3x+1 problem shows this sort of thing happening in the freaking number line!
I’m confused not only at how or why this happens, but also at why I find this so mysterious (or even disturbing).
I was listening to a podcast the other day Lex Friedman interviewing Michael Littman and Charles Isbell, and Charles told an interesting anecdote.
He was asked to teach an ‘introduction to CS’ class as a favor to someone, and he found himself thinking, “how am I going to fill an hour and a half of time going over just variables, or just ‘for’ loops?” and every time he would realize an hour and a half wasn’t enough time to go over those ‘basic’ concepts in detail.
He goes on to say that programming is reading a variable, writing a variable, and conditional branching. Everything else is syntactic sugar.
The Tao Te Ching talks about this, broadly: everything in the world comes from yin and yang, 1 and 0, from the existence of order in contrast to chaos. Information is information and it gets increasingly more complex and interesting the deeper you go. You can study almost anything for 50 years and still be learning new things. It doesn’t surprise me at all that such interesting, complex concepts come from number lines and negative sqrts, these are actually already really complex concepts, they just don’t seem that way because they are the most basic concepts one needs to comprehend in order to build on that knowledge and learn more.
I’ve never been a programmer, but I’ve been trying to learn Rust lately. Somewhat hilariously to me, Rust is known as being ‘a hard language to learn’, similarly to Haskell. It is! It is hard to learn. But so is every other programming language, they just hide the inevitable complexity better, and their particular versions of these abstractions are simpler at the outset. Rust simply expects you to understand the concepts early, rather than hiding them initially like Python or C# or something.
Hope this is enlightening at all regarding your point, I really liked your post.