Radical computing thoughts: Data impedance & automatous compu ting

Mike Dierken mike@DataChannel.com
Thu, 25 Oct 2001 10:35:21 -0700


This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.

------_=_NextPart_001_01C15D7B.6BCAD4E0
Content-Type: text/plain;
	charset="iso-8859-1"



> -----Original Message-----
> From: Russell Turpin [mailto:deafbox@hotmail.com]
> 
> (1) Most of the text in "real" computer programs, accounting
> for a disproportionate number of bugs, and a hugely
> disproportionate expense in maintenance and understandability,
> is the code that does nothing except move data between internal
> variables and external representations. These include devices,
> files, databases, historians, TCP ports, mail servers, web
> servers, registries, etc. Each is manipulated through its own
> API. Worse, each has its own name space.

Most excellent observation. I usually put it as "All computer science is
about moving bytes from point a to point b." Right or wrong, it gets people
talking.

 
> (3) The radical question: Should programs do I/O at all??
> Here's the argument for answering it "no." Issues of format
> and persistence of external data should be specified
> outside the program. Always. This partitions concerns,
> lessens maintenance, and would make most programs much
> smaller. How would this work? Instead of doing I/O, a
> program is written with unbound variables that must be
> bound externally before the program is executed. The
> execution environment includes mechanisms for binding
> external data sources and stores to internal variables,
> and provides a way to specify needed data transformations.

If you replace 'program' with 'function' (or method) isn't this what all
languages/runtimes already do? I write a function and declare some named
values that aren't filled in yet, write the algorithm, then the external
environment 'binds' data to those names. The 'external environment' is the
calling function.


> The SAME program would function against a text file, an
> XML file, a database, a TCP port, or a keyboard, for any
> of its external data sources, with no change to its code.
> (Whether it does something useful depends on whether the
> "plumbing" around the program makes sense. Writing to
> a keyboard would generate an exception, indicating not
> that the program has a bug, but that it was plumbed
> wrong.)


------_=_NextPart_001_01C15D7B.6BCAD4E0
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">



RE: Radical computing thoughts: Data impedance & automatous =
computing




> -----Original Message-----
> From: Russell Turpin [mailto:deafbox@hotmail.com]
>
> (1) Most of the text in "real" = computer programs, accounting
> for a disproportionate number of bugs, and a = hugely
> disproportionate expense in maintenance and = understandability,
> is the code that does nothing except move data = between internal
> variables and external representations. These = include devices,
> files, databases, historians, TCP ports, mail = servers, web
> servers, registries, etc. Each is manipulated = through its own
> API. Worse, each has its own name space.

Most excellent observation. I usually put it as = "All computer science is about moving bytes from point a to point = b." Right or wrong, it gets people talking.

 
> (3) The radical question: Should programs do = I/O at all??
> Here's the argument for answering it = "no." Issues of format
> and persistence of external data should be = specified
> outside the program. Always. This partitions = concerns,
> lessens maintenance, and would make most = programs much
> smaller. How would this work? Instead of doing = I/O, a
> program is written with unbound variables that = must be
> bound externally before the program is = executed. The
> execution environment includes mechanisms for = binding
> external data sources and stores to internal = variables,
> and provides a way to specify needed data = transformations.

If you replace 'program' with 'function' (or method) = isn't this what all languages/runtimes already do? I write a function = and declare some named values that aren't filled in yet, write the = algorithm, then the external environment 'binds' data to those names. = The 'external environment' is the calling function.


> The SAME program would function against a text = file, an
> XML file, a database, a TCP port, or a = keyboard, for any
> of its external data sources, with no change to = its code.
> (Whether it does something useful depends on = whether the
> "plumbing" around the program makes = sense. Writing to
> a keyboard would generate an exception, = indicating not
> that the program has a bug, but that it was = plumbed
> wrong.)

------_=_NextPart_001_01C15D7B.6BCAD4E0--