Cybol Pages; [ Cjos Audience]
Article contributed by Gilbert Herschberger (30 November 2007).
Christian Heller Cybernetics Oriented Programming (CYBOP) - An Investigation on the Applicability of Inter-Disciplinary Concepts to Software System Development Tux Tax, 2006
Christian Heller paints a delightfully accurate picture of the history of human thought behind software. The only rational conclusion is this: I have been handicapped by traditional thinking for the past 25 years. While I have suspected that something might be wrong, Mr. Heller methodically presents the evidence and proves it. I will never think about software in the same way ever again. -- Gilbert Herschberger
Result 1: Meta-Meta-Meta-[...] Data
We have become too dependent upon safe assumptions. This is the industry-standard mode of operation. This is traditional thinking. While some assumption is necessary, all assumption is risky. Eliminate assumption and reduces risk.
When we think of data, we often think in terms of data and meta-data. Meta-data describes the data. But what describes the meta-data? It is meta-meta-data. What describes the meta-meta-data? It is meta-meta-meta-data. And so on.
In traditional practice, it is too difficult, too time-consuming, too little reward to fully describe data with meta-data. Therefore, we become dependent upon assumptions. Our assumptions are often challenged in the real world. Flawed assumptions decrease customer satisfaction, increase costs.
But what if the complexity of the description of meta-data were reduced? What if the presumption is that meta-data can be fully described, and should be? The CYBOL approach presumes that a software system can be more fully described in a mark-up language like XML.
Result 2: More code, only faster.
In a third-generation language, we think procedurally, in terms of how to do something. We go about instructing the computer how to go about reducing a problem to a series of steps. As we have great success with this approach, we might believe that we can win big by producing more third-generation code as quickly as possible. We turn to code generators for help. We produce a lot of code.
Some suggest that we should think in terms of what to do and less about how to do it. We have limited success with this approach because of our traditional thinking. CYBOL shows that we ought to think more in terms of knowledge. We describe what we know. As a consequence of what we know, we are less concerned about how to do something. We change our pattern of thinking. We change our focus.
What we know is always changing. We gather more and more information. We feed what we know into the software. What we know pushes the software system. If only we could feed what we know more directly into the software system. If only we could more easily understand what we already fed into the system.
In a third-generation language, we translate what we know into a procedural computer language. The translation is one way. The source code no longer resembles what we know, and yet, it represents the reality of the system.
In a language like CYBOL, the translation is two-way. The source code accurately resembles what we know.
Result 3: Bootstrap
We are not able to eliminate entirely a third-generation language. The CYBOI approach reduces the amount of third-generation language that is needed. The bulk of a customizing a system is written in CYBOL and interpreted by CYBOI.
Instead of writing more code, we write less code and more knowledge.
This book has made me a better programmer. When I am writing a lot of third-generation code, I am doing so with the understanding that this is not the way to win big.
This book required me to rethink my approach to XML Bind ( Xml Bind). And yet, I do not yet have the capacity to use XML Bind to create XML Bind. It is difficult to break bad habits and get past the meta-data road block.