1. 17

  2. 3

    I think the “AI” point was dismissed way too quickly. We’re already seeing hugely impressive programs (in image recognition and elsewhere) based on incomplete input–output pairs, i.e. they do the right thing even when presented with an input it has not seen before. Why not use this for code, once we can?

    I know these algorithms are fallible, but perfection is not the target. Beating the human is.

    Edit: to br clear, I’m also not saying this will give better results than conventional programming, only that it will be so much cheaper to produce so that a big number of businesses will accept the inaccuracies.

    1. 3

      That’s a very unfortunate comparison, since the “End of History” in Fukuyama’s conception, is the butt of countless jokes and Fukuyama himself, 20 years later, admitted it was a very naive idea.

      This article doesn’t seem like it will age much better.

      1. 1

        I think the point about mathematical programming languages is missing something: is it haskell or mathematica?

        Take the example given for &&:

        True  && x     = x
        x     && True  = x
        False && False = False

        In the context of a haskell-like language, this is syntactic sugar for something like this:

        && x y = match (x,y) among
                 | (True,x) -> x
                 | (x,True) -> x
                 | (False,False) -> False

        On the other hand in a mathematica-like language, every one of those initial rules is a pattern which the evaluation engine may match, at its own discretion. It doesn’t desugar to anything.

        In a certain sense, this is an even stronger way to abstract over evaluation (in the manner discussed by TFA), but it is also accompanied by a loss of determinism.

        1. 1

          To go in another direction, a C program is a precise mathematical formula whose meaning is expressed in terms of C abstract machine.

          I don’t see a sharp distinction between math/non math in programming languages. Rather, I see different notational conveniences some of which are easier for humans to reason about.

          1. 1

            When i picture the engineering crew updating the LCARS widgets on star trek, i imagine them entering instructions in some mathematical/declarative language. It needs to be the ultimate language to transform idea to program by simply writing the idea down as closely as possible to how it goes in your head. This includes concise notation.

            1. 9

              It needs to be the ultimate language to transform idea to program by simply writing the idea down as closely as possible to how it goes in your head.

              The trouble is, the idea in my head usually starts out being short-sighted and inconsistent until I spend days trying to squeeze it through the filter that’s a precise specification, which is basically any programming language.

              1. 1

                It does, but when editing code the existing formulation and language makes a huge difference to how quickly you can get there; some edits take minutes to make while others take weeks.

                While this is primarily a function of the existing formulation, the availability of language features (eg exhaustiveness checking) makes a big difference too.

              2. 6

                That’s one vision of the future of software.

                Another is the need for a “software archeologist” as in Vinge’s A Deepness in the Sky, who spelunks through the untold depths of accumulated cruft to find the routine needed.

                I know which future I believe it most plausible.

                1. 2

                  That part of Deepness is among my favorite predictions in any sci fi I’ve read.

                  1. 1

                    As someone who has just yesterday spent around an hour discussing with coauthors what exactly can be extracted from some paper pointed out by reviewers (a lot, but not what we need)… I see no reason to find these predictions in any kind of contradiction.

                    I expect some checks to demand you clarify your thoughts before them becoming executable, but I also expect some automatic checks to the mathematical languages used for preparing maths articles…