Information programming is programming primarily at the level of Real Information rather than at the level of data, or in using Information Programming techniques to work with data. The Endeme Set is the core data structure for information programming. Other data structures may include Fuzzy Logic data structures, or XML.
Information Programming includes a focus on Separation Of Concerns when those concerns are Real Information and Data Orientation. Here is a proposed architecture for this separation. This architecture could easily be used as the basis for a Service Oriented Architecture or a Data Flow Diagram for a system:
+--------------------------------------------------------+ | | | Architecture To Separate the Concerns of | | Data and Information | | | | | | (B)ack end (M)odel (V)iew | | | | +------+ +------+ +------+ | | |(K)now| (Q)uery | | (T)ell |(W)in-| | | |-ledge| --------> |(I)nfo| --------> | dow | | | | | | tier | | | | <- information programming area of the diagram | | data | (E)nter | | (H)ear |front | | | | base | <-------- | | <-------- | end | | | | | +------+ | | | | |\\\\\\| ^ | |//////| | | |(O)s- | (A)bstract | | (R)ender |(J)oin| | | | mosis| | v | -ing | | | |//////| +------+ |\\\\\\| | | | | (L)oad | | (P)ut | | | | | | --------> |(D)ata| --------> | | | | | | | tier | | | | | | | (S)ave | | (G)et | | | | |(N)or-| <-------- | | <-------- |(U)ser| | <- data programming area of the diagram | | mal | +------+ |Inter-| | | | | | face | | | | data | (F)ill | | | | | base | ---------------------------> |front | | | | | | end | | | | | (C)opy | | | | | | <--------------------------- | | | | +------+ +------+ | | | | | +--------------------------------------------------------+
There is a significant difference between the mindset of an Information Programmer and a Data Oriented Programmer. A lot of the good rules for data oriented programming don't work well for information programming and vice versa. Sometimes when you see bad programming it is from inexperience or laziness. Sometimes however it is from an intuitive sense int he programmer that is information oriented rather than data oriented. At this point I can program both ways and I can smell when a programmer has been using data oriented programming in an information context or information oriented programming for data context (see Code Smell). This is part of the reason why I believe the separation of concerns between data and information in the program is important. I just know that I think very differently from other programmers. The difference may be psychological, cognitive, training, or perhaps all three. I think in terms of information.
What distinguishes an "information programmer" from a "data oriented programmer"? I'm afraid there's nothing here that illustrates the distinction, and I'm afraid the diagram doesn't help.
This is a hard question to answer. Since I have been working in this area for many years, I have gained an intuition as to what the difference is, and can generally 'smell' when a program or a part of a program is one or the other. One way of going about answering this question would be to start listing the various differences I have noticed regarding the two different kinds of programming. Within programming, they often show up in the areas of naming standards, data structures, data modeling practices and tolerance for ambiguity. I guess I could put this answer on an Information Programming Vs Data Programming page. They seem to be easier for me to identify within the middle and the back end tiers. The front end tier is such a pressure cooker of influences that the two approaches are much harder to distinguish. This is because decisions in the front end are generally made by more than one person, and usually not the programmer. And I'm a programmer so I am not a clear about the reasons for decisions made by non-programmers.
The second way of approaching this question is for me to post my document describing the differences between information and data on the Information Vs Data page. If I have the courage, I will do so.
AFAICT, information vs. data is a matter of perspective. A twitter message might be human-meaningful information, but that doesn't keep the twitter firehose from being a massive source of data for processing.
In the diagram above, there are no arrows that distinguish information and data; they're the same category.
In the diagram above, it is the boxes that distinguish information and data, not the arrows. The information boxes are Knowledge Database, Info Tier and Window Front End, the data boxes are Normal Database, Data Tier, and User Interface Front End. The arrows indicate connections between the boxes and mostly have to do with translating between information and data or between various tiers within the information and data areas of the diagram (which I have now labeled).
You could draw the same diagram with three or four tiers instead of two. Would the middle two boxes be data, knowledge, or both depending on perspective?
See original on c2.com