4 ms·
If the "it" in question is considered merely as the program and sum of CPU operations that the bytecode or binary-whatever reduces to, of course what you say is
by davesims 13y ago
If the "it" in question is considered merely as the program and sum of CPU operations that the bytecode or binary-whatever reduces to, of course what you say is true, and also completely uninteresting. All that we've stated in this case is that software is software, electrons are electrons and bytecode is bytecode. Computers compute, end of story.
But of course that's not what we do as coders. The code is never "complete" -- it's always striving towards some "meaning" that is for a human being. You cannot exclude the meaning of the code from the subject that it is intended for. A human being perceiving the code is always redacting the meaning of the code, not as a function of ones and zeros, but as a function of the analogy that code creates, pointing not towards electrons but towards: a product in a warehouse; a sum of sales at the end of a quarter; a flaming ball of death hurling towards my first-person-virtual head. And so on.
In this sense the electrons/ones and zeroes are no more significant than the paper that The Iliad is written on + the ink it is written with.
- kruhft 13y agoThen what does this specifically have to do with programs? All works of substance share such an 'incompleteness' and meaning. We just look to non-programming works as complete in a sense when they are recognized. But such works are constantly being rewritten in different forms in order to produce the effect they are known to be able to produce. In the end, everything is a program in some sense whether to be executed by a brain or computer. The point of what I was saying was to refute the idea that somehow our programs are so complex and have such amazing behaviour that they will not be reducable to a core set of rules. If the programs run on a computer they must be computable and thus reducable to a core set of rules. That's it. Whether we can be reduced to that core set of rules is not evident yet. Using logic, a statement that denies it's own provability in the language it was writen in was crewated. Logic was not thought to be able to lie, until it did. Who knows what the right brain can make it do?
- mjburgess 13y agoreduction implies elimination of something. the argument was never that a program could become incomputable, but that it is much more than merely what happens when it is run
- kruhft 13y ago> As we move from the "low" level to the "high", say from the domain of machine code all the way up to, for instance, a rich, expressive Ruby DSL, the question arises, as it does for all language: have we acquired a surplus of content that cannot be simply reduced to core rules? This was the statement that I started all this with. I am taking "surplus of content" to mean "a bunch of programs" in this context due to the quote speaking of a Ruby DSL. Programs can be reduced to a sequence of logical operations if they are computable, which I would take as 'core rules'. Therefore, only non-computable programs can not be reduced to a set of core rules by the definition of computability. QED Maybe you can explain 'it is much more than merely what happens when it runs'? Do you mean that what it took to create the program was greater than the resulting program and it's effects caused by running it? That the meta-logic used to create the program is far greater than the logic in the program itself? I am 'much more' than the results of actions when I act. I have a past history that has created me, a physical body being used to act with, the world I am acting in, and the resulting effects of my actions, plus everything else I have missed. I that what you mean by 'much more'?
- davesims 13y ago>> I am 'much more' than the results of actions when I act. I have a past history that has created me, a physical body being used to act with, the world I am acting in, and the resulting effects of my actions, plus everything else I have missed. I that what you mean by 'much more'? tl;dr -- Yes! The non-tl;dr: By "surplus of content" I meant to say that the rich, english-like syntax of something as high level as a Ruby DSL acquires rhetorical, intuitive meaning that cannot be reduced to a 1:1 symbolic relationship to the compiled instructions. But this "surplus" is supplied by the perceiving subject, in the same way that natural language itself is interpreted and redacted by the human being reading a particular work. I didn't mean to say that mathematical magic had happened as a result of complexity. I'm coming at this from a philosophical as well as a CS background (I studied both, but ended up in software). In philosophy, there is an ancient tension between rhetoric and logic. Logic is a brute force process -- a set of rules where the same input always produces the same output, just as (and, it turns out, according to the same rules) the same electrical series of pulses supplied to logic gates and pushed lockstep through them by the CPU clock will always produce the same output. Many analytic philosophical papers don't look all that different from a Karnaugh map describing the structure of a multiplexer, and the results of both are equally deterministic. This school of thought was galvanized by and built heavily upon the Principia we spoke of earlier. But there's another school of thought in philosophy that uses rhetoric and poetic devices as well as logic to achieve its ends. Language in this view (From Aristotle's Rhetoric to Heidegger's Building, Dwelling, Thinking) is decidedly not deterministic, but provocative, emotive and intuitive. Human beings communicating with each other with language use analogy and a commonly shared narrative history to provoke meaning to each other, rather than reduce statements to mere facts that are reduced to true or false. This school is commonly referred to as the "Continental" school, due to its prominence in France and Germany. Analytical approaches dominate British and American universities. So, my argument here is a function of a larger question about language itself. I'm saying that the English-like analogical techniques even at the lower levels are provocative and provide more meaning than can be reduced to the underlying logic. This is not to say that any software is less than deterministic -- of course it cannot be non-deterministic because the core functions are purely mechanistic and deterministic. So, an address changed in a DB is always changed in the same way, and a joystick moved in such a way to provide a stream of x,y coordinates to a controller will always move a character in the same way, etc. But the meaning on the other side of those events is supplied by a subject. At an extreme level, think of a high-resolution bitmap of Rembrandt's Philosopher in Meditation. The presentation of the pixels is deterministic, but the meaning is supplied by the subject. I'm saying that to a greater or lesser degree this redaction, the interpretive gesture that supplies a surplus of meaning is taking place at basically every level of computation. To a lesser degree at the low levels ("push", and so forth), but to higher degrees the closer to English-like (3G languages, etc.) we get. Images and literature presented in UTF-8 are just radical examples on one side of the spectrum, of how deterministic CPU instructions can result in this "surplus".
- davesims 13y agoI actually don't disagree with any of this, as far as I understand what you're saying. >> The point of what I was saying was to refute the idea that somehow our programs are so complex and have such amazing behaviour that they will not be reducable to a core set of rules. If the programs run on a computer they must be computable and thus reducable to a core set of rules. That's it. Considering a piece of software as a mathematical construction -- let's say, for instance, a C++ program compiled by the LLVM, and the LLVM bytecode expressed as machine instructions for the given chip, reduced to pure binary math, I totally agree with this.