Georg Wilhelm Friedrich Hegel (image from Harpers)
Dialectical programming consists of programming languages and methods (paradigms) to a achieve a synthesis* of contrasting or contradicting domains (dialectics).
Some dialectic / paradigm examples:
- linguistic|material / substrate-targeted programming
- discrete|continuous / differentiable programming
- logical|nonlogical / dialectical refinement
- informational|experiential / experience processing**
- conventional vs. unconventional (and natural) computing
- the computable vs. the uncomputable
* The contradiction between Being and Nothing thus is not a reductio ad absurdum, or does not lead to the rejection of both concepts and hence to nothingness—as Hegel had said Plato’s dialectics does—but leads to a positive result, namely, to the introduction of a new concept—the synthesis—which unifies the two, earlier, opposed concepts.
Hegel’s most usual terms were: Abstract-Negative-Concrete … the formula, abstract-negative-concrete, suggests a flaw, or perhaps an incompleteness, in any initial thesis—it is too abstract and lacks the negative of trial, error, and experience.
** It turns out that the Hegelian argument does not support only panpsychism. It also supports a certain sort of panprotopsychism: roughly, the view that fundamental entities are protoconscious, that is, that they have certain special properties that are precursors to consciousness and that can collectively constitute consciousness in larger systems.
— David Chalmers