1. 12
  1.  

  2. 12

    For a few years now, my response to this question is a counter-question:

    Is reading/writing/arithmetic a science or an art?

    Of course they’re neither. So it is with programming. You can use programming to do either science or art. But it’s just a tool.


    There’s a cool question in the middle of the post. As I understand “ontological status”:

    Where does the essence of a program reside?

    Following Peter Naur, the unsatisfactory answer for most programs is, “in the programmers’ heads,” with the increasing implication of incoherence for large teams of programmers. Very large programs stop being comprehensible in humanistic terms, and start to rather resemble egregores. Like gods, or bureaucracies.

    But I think we can do better, retain more control. A better answer, for well-written programs, is “in the space of inputs accepted, as categorized into different regimes with relatively linear processing logic.” Personally I like to visualize this input space as tests. Haskell/OCaml and APL propose alternative approaches that also seem plausible.

    1. 3

      But I think we can do better, retain more control. A better answer, for well-written programs, is “in the space of inputs accepted, as categorized into different regimes with relatively linear processing logic.” Personally I like to visualize this input space as tests. Haskell/OCaml and APL propose alternative approaches that also seem plausible.

      I think I’d say you were somewhere near the mark with “egregore”, a cool word I just learned from your comment, but that the space of what a program “really is” extends not just to the minds of the people who write / maintain / administer it, but to the entire substrate it operates on, including physical hardware and the minds of its users and the shadowy, informal conceptual footprint it has therein. Much like the way that, say, a fictional / mythological / historical narrative exists in the often vast and highly ramified space between authors and readers and cultural context.

      Not that there’s anything wrong with trying to delineate space-of-inputs-accepted and the like - just that we’re probably kidding ourselves if we think that we’re going to get to comprehensibility at all, for large things. Creating bounded spaces within which to reason and exercising extreme humility about the big pictures seems like as good as it’s ever really going to get, most days.

      1. 2

        Very valid considerations. My answer to that is: if making it large gives up control over it, perhaps we shouldn’t make it large.

        As a concrete example, one project I work on explores maintaining control over a full computing stack with the following limitations:

        • single instruction set (32-bit x86)
        • single video mode (1024x768 with 256 colors)
        • single fixed-width font (8x16px)
        • mostly text mode
        • only ATA (IDE) disk drives, running in a slow non-DMA mode

        It’ll add features over time, but only so fast as I can figure out how to track – and communicate to others! – the input space. For example, it doesn’t have a mouse yet, because I don’t understand it and because I don’t want to just pull in a mouse driver without understanding it and having thorough unit tests (in machine code!) for it.

        Basically I want to consider the possibility that humanity has been adopting computers way too aggressively and introducing lots of risks to all of society at large. I don’t want software to go from explosive adoption to another hamstrung and stiflingly regulated field, bureaucracy by other means. There’s too much promise here for that, even if we take a hundred years to slowly develop it.

        1. 2

          Very valid considerations. My answer to that is: if making it large gives up control over it, perhaps we shouldn’t make it large. … Basically I want to consider the possibility that humanity has been adopting computers way too aggressively and introducing lots of risks to all of society at large.

          Well said, even if I’m personally pretty sure the genie is out of the bottle at this point.

          I don’t think I can really draw a clear line in my own mind between what bureaucracy is and what software is, but I welcome efforts to ameliorate and rate-limit the poisoning of things that seems to come with scaling software.

      2. 0

        Uh, writing is definitely an art?

        1. 12

          Not if I’m writing a grocery list.

          1. 1

            hmm. I was initially unsure reading this, but I think I agree writing a grocery list is probably not an art. I’m not shocked there’s an edge case here, but it’s interesting to think about. I guess the programming equivalent would be code ls or similar trivial cases

            1. 5

              It is by no means a rare edge case. If you assume all writing is art, that implies science is also art. Which is a reasonable and internally consistent interpretation of the terms, but not the frame of reference of the original question.

              1. 2

                Scientific writing (such as journal articles) is certainly an art. Many good scientists are bad at the writing.

                1. 2

                  It sounds like you aren’t bothered by the original question. Which is great; it’s not a very interesting question. I’m personally more curious what you think about the second half of my first comment :)

                  1. 2

                    It’s a skill for sure, but that doesn’t necessarily make it an art. If I look at my own writing (which isn’t scientific but is technical) then the amount of creativity that’s involved isn’t much more than, say, fixing my bike: it requires a bit at times, but mostly it’s just working at it.

            2. 6

              It’s definitely a craft.

              1. 3

                That’s been my opinion for a long time now. Like other crafts it isn’t automatically included or excluded from other human activities - art, science, commerce, hobbies …

                If you accept that then the question posed isn’t very interesting.

                1. 1

                  I think the interesting question is whether it’s a craft or an engineering discipline.

                2. 2

                  Not necessarily. Designing a building can an art, a science, or a combination of both. A friend of mine does ghost writing for non-fiction. Most of it follows a formula and neither of us would consider it art.

                  Words are a tool used to communicate the same way verbal speech is.

                  1. 1

                    But surely in ghostwriting non-fiction you still have choice in what words you use to convey the concepts?

                    1. 1

                      I’ve done a fair amount of technical writing for hire. Art enters the picture somewhere, to be sure, but where you’re writing to strict house standards and pre-set outlines it does have a way of driving most of the feeling of creative expression out of things. And I suppose that gets at how I understand “art” - a feeling as much as anything.

              2. 4

                I don’t think programming can be a science. Science is involved with discovering the rules and behavior of the world and things that exist in it. Programming is creation — it corresponds to engineering, using tools to build useful structures. The furthest I’d go is to say that the more theoretical parts of computer science merge with applied mathematics, especially areas like Boolean algebra, set theory and number theory.

                Debugging, however, is a kind of science … only the rules & behavior you’re examining are those of the program being debugged, which are of course not understood clearly and must be doing something unexpected.

                Programming is also clearly a medium that can be used to create art.

                1. 4

                  I would go further and add that the essentialist view of categories underlying questions like “is X part of category A or B?” is not a useful model. Categories are better thought of as something acted out between a person or community and a thing rather than as a property of a thing. Different people or communities (or the same person or community in different contexts) may (and probably should) categorize a thing differently – this is expected and appropriate.

                  1. 4

                    See also, The Categories Were Made For Man, and the post it’s based on, How An Algorithm Feels From Inside.

                    tl;dr We mentally use (semi-)binary classifiers to decide group membership, and that means we vacuously believe there’s “a state of a thing being a member of a group” that’s independent from all the individual factors playing into the question. This drives approximately every categorization debate ever.

                    1. 1

                      They both look super interesting, thanks for the links! :)

                  2. 3

                    As a former scientist, I always had the feeling that science - the act of research - is also an art. Purely following reason won’t lead you anywhere new.

                    When I do “artistic” things, the process I follow isn’t so different to science (research). It’s usually a combination of applying known stuff (techniques you’ve practiced a lot, whether it is drawing or writing or maths or coding or whatever) in creative ways, usually with some rough goal, and seeing what pops out. Then iterate.

                    I like to break tasks/activities down into “creating”, or not - this seems correlated with what parts of my brain it feels like is being activated. Perhaps, in this way, “craft” is a decent word afterall?

                    1. 2

                      I suggest that it is neither art nor science.

                      While it would be nice for it to be a “science” to support lofty associations with “engineering”, we remain entirely unable given the need to model a complex system or problem, to produce it to some known standard or cost in time and money with any predictability.