Wednesday, December 17, 2014

String Theory Addend, JAVA Similarities, the Number Theory of Computing, and Considering Directions

Team.Today will be another extended post demystifying what we are doing with CABOOSE.

STRING THEORY ADDEND

Yesterday, we considered four Axioms for the String Theory of Computing. After a little more pondering, it became apparent that a very important axiom of computing strings was completely omitted. Reviewing, the first four axioms are as follows:

Strings are everywhere in computing. This is our first axiom of string theory. The Ubiquity Axiom. For this theory, a string is like a point in geometry.

Our second axiom is that in essence, computing is the passing of strings between data sources and data targets (sinks - for those of you who think in terms of discrete graphs and abstract networks) . This is our Axiom of Transfer.

The next axiom, our Axiom of Transformation, states that, while in transfer, computational modules might mutate a string as needed.

Our fourth and last axiom holds that the final state of any computation is a transfer-able string. This is the Axiom of Invariance.


Our missing rule follows:

The fifth and likely most important is the Axiom of Universality. The symbols which compose strings are primitive, often well-known, and a commonly agreed upon medium for communication among all humans and machines.

JAVA SIMILARITIES

Interestingly enough, the original design of the language JAVA includes the complementary goals of ubiquitousness and universality. With its prevalence as a de-facto standard in computing and the differing editions for Micro, Standard, or Enterprise applications, it is rapidly reaching both goals in roughly a pair of decades. Sun Microsystems and its management should be applauded for creating JAVA. It was an incredibly bold move. Most students of computing in the early 1990s when JAVA was originally prototyped were told a single universal high-level computing language did not exist and was an impossible undertaking. This seems like a rather strong statement for such a young and immature field; however, this was taught.

From the point of computing theory, universal languages which could represent any computable program existed, but they were so incredibly simple that whey would not be practical for professional use. One of these is S. Pronounced "script ess" and represented with a cursive capital S, it only has three instructions. These are increment by one, decrement by one, and branch on zero. Obviously, any hardware system which supported these would require large, unwieldy programs for performing the most simple of common business-oriented computing tasks.

For the young aspiring entrepreneur, learn a lesson from Sun. If you can produce a product that the majority of individuals in your profession says would be useful but is an impossiblity, success will follow. JAVA is not perfect, but it is an excellent attempt at the impossible. Kudos Sun and Oracle. Thank you for making this available. Another lesson one can learn is that "free,quality" products can gain market share rapidly. You can always charge a nominal fee in the future. Shareware often cost between five and ten dollars and does not come with any support. If Oracle offered initial installs of JAVA major releases for ten dollars with free automatic updates, they would have some wonderful quarterly reports considering that JAVA has over three billion active installs.

THE NUMBER THEORY OF COMPUTING

Number Theory for the modern mathematician is a study of the fundamental properties of numbers such as primality, divisibilty, congruence, and more. Historically, the Theory of Numbers was called Arithmetic. Although it uses the four fundamental operations of addition, subtraction, multiplication, and division, its extends far beyond these. In centuries past, what we now know as the arithmetic learned in elementary school was called Coss. For those who like math as a recreation, Oystein Ore wrote a wonderful book on the History of Number Theory. It reads somewhat like a novel with a number of historical antecdotes.

The Number Theory of Mathematics can trace its history as far back as the early Egyptian and Chinese civilizations and likely pre-dates them. Yet, the the Number Theory of Computing is much different and derives much of its inspiration from the early work on computing theory in the early twentieth century. During those years, many professional mathematicians earned a living as a human computer. They would tabulate list of logarithms, trigonometric functions, and such. Someone wondered whether it would be possible if one could create a function that computed another function given its function definition and its input. This was the early mathematical work that produced modern computers, because eventually someone inspired by Charles Babbage's work created a machine as a hard-wired function that could compute any other function described with a language that it understood. What is fundamental in this early work is that all functions could be represented by a single unique number. In essence, a computer programs is a functions which is the composition of smaller functions. So, a computer program can be represented by a single unique number.

Hence, our first rule in the Number Theory of Computing, The Axiom of Identity. There is a single number which uniquely describes a computer program.

Our second rule is the Axiom of Proximity. Numbers describing computer programs which are near each other represent programs with similar behavior.

Finally, the third and last rules states that writing correct programs is the process of choosing a starting number and making gradual progress through code revision until one reaches its target. Hence, program development is iterative and optimizing. This is the Axiom of Hill-Climbing.

Summarizing the Number Theory of Computing, a program is naught more than a number.

CONSIDERING DIRECTIONS

It also crossed my mind that within a JSP, a scriptlet could easily call a rendering method; however, scriptlets are somewhat frowned upon. So we will probably continue along the path of creating a custom tag for JSP and JSF which generates content given a class and method. We will also continue using a tile as a placeholder in our stencils. This tile might be XML or a user-defined string.

Also, JSF is not a strong point of this developer. Skimming the JEE 7 Tutorial Reference did not produce an in-depth knowledge of JSF. The rendering methods used by CABOOSE might be found in this approach in a simpler form. More review and research must be done. If this effort is reproducing prior work, it will simply be a fun exercise. La-La.

No comments:

Post a Comment