Information programming is programming primarily at the level of RealInformation rather than at the level of data, or in using InformationProgramming techniques to work with data. The EndemeSet is the core data structure for information programming. Other data structures may include FuzzyLogic data structures, or XML. InformationProgramming includes a focus on SeparationOfConcerns when those concerns are RealInformation and DataOrientation. Here is a proposed architecture for this separation. This architecture could easily be used as the basis for a ServiceOrientedArchitecture or a DataFlowDiagram 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 InformationProgrammer and a DataOrientedProgrammer. 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 CodeSmell). 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. --JonGrover ''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 InformationProgrammingVsDataProgramming 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 InformationVsData 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 KnowledgeDatabase, InfoTier and WindowFrontEnd, the data boxes are NormalDatabase, DataTier, and UserInterfaceFrontEnd. 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? -------------- CategoryInformationOrientation