• An algorithm is:

    A finite set of unambiguous instructions that, given some set of initial conditions, can be performed in a prescribed sequence to achieve a certain goal and that has a recognizable set of end conditions.

    For the sake of argument, let’s be real generous with the terms “unambiguous”, “sequence”, “goal”, and “recognizable” and say everything is an algorithm if you squint hard enough. It’s still not the end-all-be-all of takes that it’s treated as.

    When you create an abstraction, you remove context from a group of things in order to focus on their shared behavior(s). By removing that context, you’re also removing the ability to describe and focus on non-shared behavior(s).So picking and choosing which behavior to focus on is not an arbitrary or objective decision.

    If you want to look at everything as an algorithm, you’re losing a ton of context and detail about how the world works. This is a useful tool for us to handle complexity and help our minds tackle giant problems. But people don’t treat it as a tool to focus attention. They treat it as a secret key to unlocking the world’s essence, which is just not valid for most things.

    • cosecantphi [he/him]@hexbear.net
      link
      fedilink
      English
      arrow-up
      4
      ·
      1 year ago

      Thanks for the help, but I think I’m still having some trouble understanding what that all means exactly. Could you elaborate on an example where thinking of something as an algorithm results in a clearly and demonstrably worse understanding of it?

      • Algorithmic thinking is often bad at examining aspects of evolution. Like the fact that crabs, turtles, and trees are all convergent forms that have each evolved multiple times through different paths. What is the unambiguous instruction set to evolve a crab? What initial conditions do you need for it to work? Can we really call the “instruction set” to evolve crabs “prescribed”? Prescribed by whom? Like, there’s a really common mental pattern with evolutionary thinking where we want to sort variations into meaningful and not-meaningful buckets, where this particular aspect of this variation was advantageous, whereas this one is just a fluke. Stuff like that. That’s much closer to algorithmic thinking than the reality where it is a truly random process and the only thing that makes it create coherent results is relative environmental stability over a really long period of time.

        I would also guess that algorithmic thinking would fail to catch many aspects of ecological systems, but have thought less about that. It’s not that these subjects can’t gaining anything by looking at them through an algorithmic lens. Some really simple mathematical models of population growth are scarily accurate, actually. But insisting on only seeing them algorithmically will not bring you closer to the essence of these systems either.

        • cosecantphi [he/him]@hexbear.net
          link
          fedilink
          English
          arrow-up
          4
          ·
          1 year ago

          Okay, I think I get it now. I see how one could really twist something like your evolution example every which way to make it look like an algorithm. Things like saying the process to crabs is prescribed by the environmental conditions selecting for crab like traits or whatever, but I can see how doing that is so overly broad as to be a useless way to analyze the situation.

          One more thing: I don’t know enough about algorithms to really say, but isn’t it possible for an algorithm to produce wildly varying results from nearly identical inputs? Like how a double pendulum is analytically unpredictable. What’s more, could the algorithmic nature of a system be entirely obscured as a result of it being composed of many associated algorithms linked input to output in a net, some of which may even be recursively linked? That looks to me like it could be a source of randomness and ambiguity in an algorithmic system that would be borderline impossible to sus out.

          • I think what you’re talking about starts to get into definitional differences between different fields, but regardless I think the answer to the underlying questions is “yes”. We can talk about a function’s “purity”, meaning that if a function is pure, it will always produce the same output for the same input and will not change the state of any other aspects of the system it exists within. This concept is different from chaotic systems like you’re discussing, where the “distance” between outputs tends to be large between inputs whose distance is small. So some computer systems have the properties you’re talking about because they’re impure. Others have them because they’re chaotic.

            A lot of functions which are both pure and chaotic are used as pseudo-random number generators, meaning they will always produce the same number for a given seed, but are exceedingly difficult to predict. But creating perfectly chaotic systems is very difficult (maybe mathematically impossible? idr) and a lot of the math used in cryptography involves attacking functions by finding ways to reverse them efficiently, as well as finding ways to prevent those attacks.

            But yes, all of the things you mentioned can be sources of complexity that can make things chaotic, but that doesn’t necessarily make them nondeterministic. A lot of chaotic systems are sensitive to things like the exact millisecond at which some function runs or other sources of userspace randomness like user input or resource usage. Meanwhile, a good chunk of nondeterministic behavior in software comes from asynchronous race conditions.