Wednesday, March 13, 2019

Everything that Rises Must Converge

Team. This phrase, "Everything That Rises Must Converge"  is all that the author remembers from a text read while in English 104W at Vanderbilt University during the Spring of 1989 taught by adjunct professor Robert Bacon. It was the work's title. A work written by Flannery O'Connor, a celebrated writer from the American South. In this title is a plethora of philosophies.

In the Arts, the concept of perspective is commonplace. A landscape's rendering without this would be seemingly strange in appearance. And, with all things tangible, one's life has a perspective and its own unique beauty. A pleasantness in form that is much like the simultaneously transient and timeless loveliness that an artist tries capturing when recording a moment in time on canvas. This is perspective in the Arts. In the Sciences, based on ratio and measure, the bi-stable cornerstone of reason, perspective is often synonymous with one's philosophical standing resting at an advantageous vantage-point, a position that provides a lucid view of the elegant simplicity of a subject or concept while letting one be conversant concerning its grandest complexities. Yet, in Art and Science, parallels exist in terms of the notion of "perspective".

It has been said that "in higher-order geometries parallel lines meet at infinity".
So, whether one is a Cambridge graduate student in mathematics studying the finest nuances of advanced topology in the damp airiness and silent hum of an historic English library or a kindergartner working with finger-paints shortly before Ms. Tschetter places a graham cracker and a carton of milk in the right-hand corner of your work area, resident in the recesses of your mind is that aforementioned simple concept. And, this abstraction guides your thoughts and actions, ultimately shaping your work-product. Perspective is subliminal. It is etched in the subconscious.

If one has the proper "perspective", one shall perform his work tasks well. This also is true in computing. One must understand the simplest of abstractions surrounding the work one does, before he can deal with the intricacy of the concrete details well.

The same is true of programming a computer. The task of programming is best fit within the realm of engineering, whether formal or informal. And, engineering processes are used in the resolution of a problems. So, in terms of abstractions. The field of problem-solving is a super-set of engineering. In other words, certain tasks in problems-solving are outside the realm of engineering. For instance, satisfying the growl in your stomach is a problem that must be solved. Yet, its solution does not and should not require the disciplined use of engineering concepts. And, engineering as a field is a super-set of computing and programming. Certain engineering tasks will not require the use of computer programming in their resolution. This includes tasks such as erecting steel outbuildings for agriculturalists.

Also, before one can consider himself an accomplished, or "professional" computer programmer, he should have mastery is certain sub-disciplines of computing. These include data structures, algorithms, automata, and the theory of computation. And, from the standpoint of abstractions, that last list is backward. Yet, based upon the level of mathematical sophistication required for mastering the theory of computation and its abstraction, it unfortunately is usually taught after basic courses in programming and its concrete concepts. It really should proceed these for the "best learning outcomes". So, the path of mastery in computer programming is palindromic: programming, data structures, algorithms, automata, and the theory of computation  followed by the reversed path theory through programming.

That is a lot of learning. And, one must not known everything about each subject. He just must master the ten or so fundamental learning objectives in each course. And, as he mulls over these concepts and builds interconnections between them, he shall converge upon new innovative insights that will rise up in his inner thoughts. Ultimately, everything which converges must rise.

And, with only a basic understanding of Pascal, elementary data structures, simplistic algorithmic analysis and approximation algorithms, and the briefest description of a Turing machine, this phenomenon of intellectual convergence occurred one sunny weekend afternoon in a freshman quadrangle at Vanderbilt University in the Spring of 1989. These thoughts eventually rose producing JAVA, objects, and much more that is universal, ubiquitous, and useful in modern everyday computing.

Sub-Titled : In The Quadrangle

Team. It seems that we have at least a pair of outstanding tasks which this weblog has promised. The first item is a book on programming fundamentals. The second is an open virtual machine, with a base of primitive instructions, that one can port between differing language application programming interfaces. The next "few" entries in this web-history should address each of these goals.

We will be working on a book that discusses programming starting with the abstractions found in general problem solving, seguing through the concepts in basic engineering, such as processes for building and recycling resources, and ending upon the foundational concepts in computer programming: algorithms, data structures, and automatons.  In the process, the text's capstone project will be the "open" virtual machine.

The text will be sub-titled, "In The Quadrangle".

A previous "web-post" outlines some of the author's experiences while briefly studying at Vanderbilt University during the Spring semester of 1989. In summary, while taking an introductory computing elective in Pascal, he spent one sunny weekend afternoon daydreaming and brainstorming in his dorm-room which lay near West End Avenue and Twenty-First Street during those years. These thoughts intermingled with memories of his freshman sweetheart and bus-riding companion, resulted in some of the most influential concepts in modern computing after they were shared with his instructor and classmates at Vanderbilt plus, most importantly, family members who worked in executive leadership at Sun Microsystems, during the 1980s through the millennium.

Concepts which have taken hold in the modern era were quite easily conceived by an insightful computing novice and amateur, yet they required the skills of professional engineers and computer scientist before they became part of everyday life. These concepts include object-orientation, architectures, programming-by-contract (rebranded "design-by-contract"), prefabricate structures (frameworks, patterns, templates, and stencils), generics, and the basic feature set of JAVA as a language with a "C-like" syntax.

Tons of low-hanging fruit and fallen fruit existed in the computing world of the late-1980s. Much still exists this day in the area of concern partitioning, the use of general-purpose structures,  and other subareas of computing and software engineering.

The goal of the introductory section of this text will be putting it all in perspective: problem-solving, engineering, and computer programming.
The author will develop some exerts of this "planned" text on-line in this web-history.