There's a story about this spiral way of writing the whole numbers. I think it's called "the Ulam spiral" after a guy called Stanislaw Ulam who was sitting a math lecture one day, and it was a bit boring, so he wasn't really listening. He just started with your first spiral of the numbers 1,2,3,4,5,... going around the central point and spiraling outwards. Then he shaded in the prime numbers and he noticed something, which is that there were several diagonal lines on a kind of diamond-shaped grid pattern, which had far more primes on them than all the others. So he wrote down a recursive formula for those lines and they allowed him to find a lot of prime numbers very quickly, because the prime numbers were more dense on those lines than they are on the number line. Check "Ulam spiral" on Wikipedia to see some computer drawings. There's also a version with a triangular spiral with vertical lines of primes that was discovered earlier. And there are hexagonal ones too.
I mean, how to get the best of the two different philosophies of computation. One is based on typed programming languages and the other on engineering with diagrams . This is about practical computing and the cost and feasibility of software development in general. Here is the problem: We have a lot of algorithms which can all be described abstractly using some sort of pseudocode, or perhaps using some particular language (usually Python!). These algorithms are often well-studied and a lot is known about them in terms of their computational complexity in time and space. Substantive practical software systems invariably employ many such algorithms, often implemented in libraries with more or less well-specified APIs. But very few of these libraries are capable of interoperating because they are either packages written in some specific programming language like Java or Haskell, say, or they are written in C and used as object code, or they are written in an interpreted language like Sc...
Listening to Freya Holmér last night I started to get glimmers of an idea I had long ago about how to represent vector spaces in computational processes using this recursive abstract type : abstype 'a point = POINT of {getx : 'a vector, diff : 'a point -> 'a point, move : 'a point -> 'a point, scale : 'a -> 'a point, proj : 'a point -> 'a} with fun new i (op +) (op -) (op * ) dot = let fun self x = POINT {getx = x, move = fn (POINT pr) => (self (x + (#getx pr))), diff = fn (POINT pr) => self (x - (#getx pr)), scale = fn i => (self (x * i)), proj = fn (POINT pr) => ...
Just testing stuff: SVG You can click on the blue circle: MathML There is not much you can do with this. See Mathematical Markup Language 1.01 Specification 7.1.5 Mixing and Linking MathML and HTML . It's the big problem of how you compose languages. a x 2 + b x + c = 0 You can click on the discriminant: x = − b ± b 2 − 4 a c 2 a 2D Canvas Sound Beep! WebGPU Next level Parser expression grammar compiler: https://peggyjs.org/online.html Devine Lu Linvega's unxtal assembler/debugger: https://wiki.xxi...
Comments
Post a Comment