Version 0 of Thoughts on Unified view of data and program

Updated 2006-03-03 16:45:52

Smalltalk brought OO into mainstream . It took the extreme step of giving a unified view of everything is a object. In non-smalltalk world, there is an active process/program that acts on passive data. Smalltalk removed this dichotomy and viewed every piece of data as a tiny active process responding to messages.In otherwords, the passive data is no more considered passive, it is considered another active process.

This article tries to analyse such similar attempts to unify data and program.

In the sameway, smalltalk unified passive data into active process. There are also systems, that unified them other way.ie active process are treated as passive data.

One popular model is WWW. Basically URL - refers to a resource ,ie a file, traditionally considered passive data. CGI- is a way of interacting with programs, thro URL.Every invocation of method with a set of parameters, is treated as a file whose content is the result of that invocation.

Plan-9 system, from the unix camp, uses kind of this approach. Most services are viewed as a file in a namespace(filesystem). Reading and writing stuff into them invokes the methods of the process.

Why software system designers try to unify them. -?

These are some of my thoughts. Unification creates simplicity. Why simplicity matters. For some people it matters for some it does not matter. TCL languages incorporates simplicity model but perl does not.

There are 3 categories of people who deal with computers. End-users who just use computers to get things done. Programmers and system administrators. Researchists in computer science field and other field.

Most contributions to open-source software from 2 categories of people - programmers and system administrators, computer science researchists. Though some people use the term hackers for both, there is distinct mindset between the two and their contributions.

The researchists try to find a new paradigm or architecture for solving problems and improving efficiency. They are macro-thinkers. They tend to love unity. The same way einstein searched for unified field theory.Simplicity and unity goes together.

LISP,smalltalk,to some extent TCL, plan9 comes from this camp. Unix, C, perl, php, python, ruby - comes from the other camp.

The simple mechanism needs deals with the smallest case and biggest case in a consistent fashion.

As a contrast , take the unix shell paradigm. Most unix tools heavy use unidirectional pipes. Therefore most tools are forced to fit into filter paradigm. But many programs do not fit this model like ftp, server programs. They need bidirectional pipes. Though it is non-trivial to create bi-directional pipes from unidirectional pipes. There is not of much plumbing tools in unix world, till "expect" came along.

Architectures that use one model for smallest and largest requirements have these characteristics - simplicity and scalability.

But there is a cost for these benefits.Performance . The approach that can deal with complex requirement puts too much overhead for the smallest case. We can see this in smalltalk, TCL. In TCL, conversion from string to native format, when using C libraries.

Now to whom simplicity matters. -? Researchists and end-users. Hence architectures, emphasising simplicity becomes popular among end-users. Products of smalltalk camp - GUI became huge success. It is an extension of object interaction at the highest level.

WWW also adopts unified view - everything is a file. This unified view bring simplicity. It found huge success among end-users. Again this simplicity bring withit poor performance. But people have accepted it for its simplicity.

Here simplicity refers to simplicity of interface not the implementation. Only architectures emphasising simplicity bring computing power to the masses. Of-course at the cost of performance. but it may not matter with time.