Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Working in a field called "revenue assurance" I basically build systems to validate other systems.

After a while in this market it seems to me that all these "validations" are verifying either a process from my customer's environment or the data used by these processes.

With this in mind I am considering using such definition to orientate sales people and even architects working on the products. However, researching this topic I couldn't find a definitive answer although haven't dismissed the possibility either.

Is everything one of the two then?

share|improve this question
1  
I think you have an interesting question here. Showing some of the research you have come across would make your question much stronger and help focus the answers you receive. Highlighting the ambiguity or conflicting answers would also help out significantly. As it currently is, most readers will need to re-do the same research you have in order to to understand the background. That research requirement creates a barrier for others to understand the some of meta-aspects of programming that your question is addressing. –  GlenH7 Sep 6 '13 at 11:59
    
This question is soooooooo broad. Sometimes things are both process and data. –  busy_wait Sep 6 '13 at 12:59
    
Thanks for your comments. The question might be simpler though. I was just wondering if there could be something in computing which needed to be conceptually classified as something different from data or process. I understand some things can be both, and in some cases one of them might not be necessary, but that's beside my point. And I am sorry for the lack of references - it wasn't a particularly thorough for which I'd keep all sources :( –  flpgdt Sep 6 '13 at 17:37
add comment

3 Answers

Yes. Turing machine consists of data, in form of alphabet and infinite tape that saves this alphabet. And process how to transform this data in form of table of rules. And considering TM can compute anything that can be computed, it can be said data and processes is only thing you need in computing.

But TM is highly abstract concept and used primarily in computer science. In practical world, it is rarely used. And you cannot use it as example when talking about high-level systems and development.

share|improve this answer
1  
The lambda calculus has only functions, no data. And it is Turing-complete, i.e. it can compute every function on the natural numbers that a Turing Machine can compute. Ergo, by your own argument, data is superfluous. –  Jörg W Mittag Sep 6 '13 at 17:21
    
I think it answers my question either way. The core here was if there anything apart from these two concepts. Not really if they are always necessary or characteristics of it. thanks a lot. –  flpgdt Sep 6 '13 at 17:29
    
@JörgWMittag In lambda calculus, anything can be function and anything can be data. It sort of melds together. Any term can be abstraction (eg. method) and any term can be used as parameter in application (eg. data). Thats why specific terms can be represented as constants (eg. church encoding), so we can call those terms "data". –  Euphoric Sep 6 '13 at 18:10
add comment

I'm not going to deal with the epistemological or ontological arguments here, but there are a variety of different programming models that each have fairly strict categorizations of their "universe".

For example:

  • First-generation imperative languages are based on the Turing Machine which models everything with data (variables) and instructions. There's no problem that you can't represent with this model; its downside is that many problems are very difficult to represent.

  • OOP defines an object as a combination of state and behaviour. What you call "data" would be the state, but objects also deal with input and have to produce some output (which is not generally considered "data" unless/until it is actually stored). Strictly speaking, it's still based on the Turing machine, but relationships and inheritance between objects can massively simplify the problem. Life becomes a lot easier when you have some system of organizing all of these processes.

  • SOA defines the concept of services, which are orthogonal to objects, and aligned with a particular business function. Services are a way of grouping not only behaviours but (unlike OOP) also the data that affect them, since services aren't allowed to share state. What's interesting about this model is that it very closely approximates how people interact with each other as opposed to how they interact with things. Almost all businesses and communities in general are organized into departments and skill sets, with areas of fairly strict specialization; without this type of organization, most of human society would fall apart. In this model, what you refer to as a "process" is really more of an "operation", and a "process" is actually a long-running "saga" that coordinates all of the different services and operations involved.

  • Functional languages, based on the lambda calculus, only use functions. A function is different from a "process" because a function can't change state (and in fact there is no state to change). This is one example of how it's possible to break the problem down even more than you already have. Of course, for people who aren't accustomed to it, it can be incredibly difficult to model the problem that way.

The world can be as simple or as complex as you want to model it. If breaking everything down into simply "data" and "process" is appropriate for your purpose, then by all means do it, but keep in mind that such a mode of thinking comes more naturally to computers than humans. Programmers are good at modelling and understanding things that way, non-programmers aren't.

Non-programmers, in my experience, are most at ease with the service model: I have one guy who prepares my meals, another guy who drives me across town, another guy who keeps my money safe, and so on, and I don't really know or care how they do it, I just do what I do and tell them what I need. This last paragraph will seem to be totally irrelevant to your question, which is exactly why programmers and business people seem to have so much trouble communicating. ☺

share|improve this answer
    
Really good insight. Thank you very much. –  flpgdt Sep 7 '13 at 0:28
add comment

This looks like an etymology question. It does not seem suitable for Programmers.Stackexchange.

(0.1) What is data? Data is anything that can be copied (replicated)

(0.2) What is process? Process is something that takes input (data) and produces output (data), and usually takes some non-zero (and finite) amount of time to finish.

(0.2.1) Process may be computational or external - human action may be involved.

(1) resource (or capacity / constraint) - one of the necessary conditions for a computation to succeed, without time-out, or running out of memory or disk space.

(2.1) event - a piece of data that is pegged to a timestamp. Some events can be anticipated; some can't. Once an event has occurred it can be propagated to other agents to the system.

(2.2) casuality - a ordering constraint placed on events.

(3) jurisdiction - some type of data is not allowed to leak outside a certain building by law. Likewise, some type of processes are not allowed to occur outside a certain place.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.