I think this analogy fails to engage with how philosophically different consequentialist morality and non consequentialist morality. Here is how i would describe moral frameworks in programming terms, from an admittedly consequentialist perspective. Here a single line of machine code will correspond to some simple moral claim (eg “John prefers outcome A over outcome B”). The programming languages are different consequentialist moralities. Each of which will have some terminology which compiles down to the machine code. Examples of such terms could be “the common good”, “action A is better than action B in situation S”, “outcome A is good”, “person P is good”, which each language can include or exclude, also notably two languages might implement the same thing in ways that compile fundamentally differently (compare how the basic list type in some languages is an array and in some languages is a linked list).
Then non consequentialist positions is like having programming languages that cant compile to machine code. The non consequentialist claims that the machine language is impoverished. This would be similar to criticizing a programming language as not Turing complete. And maybe thats a correct criticism, but it is a fundamentally deeper disagreement.
Maybe its worthwhile to compare with the question of reductionist vs non reductionist ontology. Here the machine code is some simple empirical claim (eg “there is an electron at (x,y,z,w)”). The programming languages are languages that contain words that compile down to machine code (possibly in layers biology → chemistry → particle physics). Then non reductionism claims that there are real objects (eg souls or numbers) which cannot be compiled like that, the machine code forms an impoverished ontology, that cant explain/compile everything that exists.
I think this analogy fails to engage with how philosophically different consequentialist morality and non consequentialist morality.
Here is how i would describe moral frameworks in programming terms, from an admittedly consequentialist perspective. Here a single line of machine code will correspond to some simple moral claim (eg “John prefers outcome A over outcome B”).
The programming languages are different consequentialist moralities. Each of which will have some terminology which compiles down to the machine code. Examples of such terms could be “the common good”, “action A is better than action B in situation S”, “outcome A is good”, “person P is good”, which each language can include or exclude, also notably two languages might implement the same thing in ways that compile fundamentally differently (compare how the basic list type in some languages is an array and in some languages is a linked list).
Then non consequentialist positions is like having programming languages that cant compile to machine code. The non consequentialist claims that the machine language is impoverished. This would be similar to criticizing a programming language as not Turing complete. And maybe thats a correct criticism, but it is a fundamentally deeper disagreement.
Maybe its worthwhile to compare with the question of reductionist vs non reductionist ontology.
Here the machine code is some simple empirical claim (eg “there is an electron at (x,y,z,w)”).
The programming languages are languages that contain words that compile down to machine code (possibly in layers biology → chemistry → particle physics).
Then non reductionism claims that there are real objects (eg souls or numbers) which cannot be compiled like that, the machine code forms an impoverished ontology, that cant explain/compile everything that exists.