Version 0 of some of the rationale behind bwise

Updated 2003-11-06 09:40:35

by Theo Verelst

Bwise is a fairly incomplete package of procedures linked to a graphical block representation on a Tk canvas which is intended to make block-wise programming possible, at least at the experimentors level, and the idea is that what works enough could also be used for practical application.

The ideas behind it are important, not so much necessarily as in that bwise itself is important, but the ideas which led to its setup and the thinking which is partwise represented by it.

It started as a show off that I could make some things work in Tcl/Tk which took some people big, millions consuming projects which never delivered any deliverables worth noting, in the acedemic scene, where I wanted to make a different point, that efforts were being spent which mathematically made no sense, especially about computer hardware design/process algebra.

So I sat down on some cheaply available novell networked windows 95 computers, installed tcl in the morning of some working days, and sort of hobbied together blocks on a canvas which would talk to eachother, and have some relevant characteristics, which was also fun enough.

The ideas behind it start with the networktheoretically tinted observation that the number of ways which can be found through a network, or lets say to order the nodes in a network, also when according to functional decomposition rules or reasonable flow-like rules can be activated soon becomes larger than practical.

The general number of ways to order the execution of a network with 10 nodes is 10 faculty which when memory serves me well about 3.5 million. So ten little hardware parts or ten software processes which must al do only 1 thing can be execution time or ergodically ordered in 10! ways. That makes it impractical to freely play with the execution order parameter in a (possibly schematically captured) design of any serious size, where one easily has 10, 100 or even thousands of parts. Even when only capturing the outline of a machines' or designs' operation. At least for electrical engineers 1000s of parts are nothing of a great deal, for instance in chip and computer design. 1000! is a very big number (I forgot the faculty approximation integral), where we get from 1*2*3*4.. to 990*991*992 every next term adds nearly three zero's, so that number of ordering possibilities has hundreds of zeros easily.

No chance to ever 'try out' all things that could possibly happen in such a network by trying all possibilities, not even on an space age computer for many years to come, and then we'd build bigger things, still.

A server with a thousand internet connections asking it data and getting it is a software version of a comparable problem in certain ways, here to we need some organized, theoretically valid way to generalize on what may happen and what we want to do in various cases.

In electrical engineering, particularly electronics, things are uncomparibly 'worse' in terms of complexity. A radio circuit with 100 parts doesn't just have a hundred processes, it has a 100 processes which act in a continuous way, which interact with eachother, and in case of the semiconducters even non-linearly so. Luckily, we will usually be able to have a schematic diagram which limits the number of inter part interactions to a few per parts, unless we do a em field analysis, and there is the whole building of mathematical basis of the (at least acedemic) electrical engineering science which allows formal solutions to differential equations which can model the parts, and in the case of non-linearities: approximation methods for them with reasonably provable convergence theorems.

In software and computer land, such (serious, interesting, fun, but as most know very mathematically involved, probalby most of all studies) knowledge is little well known. Unfortunately that at times extends too much also to computer designers wannabees or simply unedified persons, as I have had to deal with in the past, but that is not exactly the subject.

Computers are made of electronics, which luckily, and when applied right, make parts which are considered digital building blocks, which are a lot less involved to design with and connect up than most electronics, which of course has led intelligent people in about the 70's to feeo challenged to make all the more complicated and generally valid machines and sub-machines with.