How G15 PMN's FCM differs from object-oriented programming and is a viable alternative

by S.R. Weber

Location of this paper on G15 PMN FCM:
G15 PMN FCM programs:

  It's an objective historical fact that, when Bjarne Stroestrup developed C++ as an object- and class-oriented language, with objects, he was--as he has indeed acknowledged--borrowing concepts from the Simula-67 language developed and completed in Oslo, Norway, in 1967, by Ole-Johan Dahl and Kristen Nygaard at Regnecentralen, Oslo. In Simula67, as an extension of Algol (an earlier language, a bit like a primitive form of Pascal), there is the whole set of concepts--class, objects, inheritance. My own father worked with Simula, a language they developed prior to Simula67, which had processes rather than objects, and in some senses had a less hierarchical feel.
  When Kristen Nygaard, during one of my meetings with him over a cup of coffee in Rosenkrantzgate, at his favourite "journalist-free place", as he called it (his fame in Norway considerable, this was around year 2000)--said that only a structure that is not rich, is a structure, it was in defense of hierarchies. I had argued that the processes of the nonlocal as indicated by works of such as David Bohm on quantum physics, and who I had the opportunity to meet a number of times, suggest something more of a network, less of a hierarchy, with a "richer type of structure than hierarchy".
  So we didn't agreed, but I felt it nevertheless was a moment of some depth for me, to be able to formulate what I had felt all the way as for object-oriented languages to one of the two people who, as far as computer science history goes, originated the whole shebang.
  I let it go, and we proceeded to discuss quantum theory and how computer modelling might have a role in it; at times he would speak about his newest ideas on computing and on language development (including his new pet language projects, made in colloboration with others, called "Beta"); and we would speak about the University, about education, and the conflict between what he called "pioneers" and "all the rest".

  My starting-point for thinking beyond objects initially connected to how the notion of warps--as I called them--or "pointers", as they more lamely are called, in languages such as Forth and C, could be harnessed in a more standard way if thought clearly about. For the mechanism allowing objects to exist, floating about in an imaginary data space with algorithms attached to their data elements, is of course just this thing--the warp, the "pointer" that allows a program with somewhat prespecified input/output properties to be called from a dataarea rather than having to be named specifically in the program entertaining a reference to this special dataarea.
  So G15 was built up, as a machine language or assembly language, in which the notion of the 32-bit number was embraced as the most psychologically meaningful type of number to operate with in computing, and a mechanism by which virtually everything else can be implemented. For one of the reasons warps were complicated to work with in both Forth and C was, after all, that these languages didn't quite define these as part of themselves, but rather merely 'allowed' their existence, manuals asserting their hardware-dependence. (One of the things that made C. Moore, author of the first Forth, break with the proposed Ansi-standard of Forth was that the Ansi proposal commitee wanted to introduce words like 'cell' to make a second-hand wrapping mechanism around the pointers that Moore had used to his delight, in creating a language that allowed interactivity during the motor control of such as telescopes.)
  Then, it was clear that G15 required a layer on top of itself for ease of use. I wanted something that learned everything of the the text-stack language I had made earlier (part of the socalled "Firth platform" and the extensions I made for it under the name Lisa GJ2 Fic3), which made stack handling--an essential ingredient of languages that has the interactivity and first-hand feel that Moore wanted with Forth--far more easy than in Forth. I wanted to go back to numbers in stacks, but have a language that was integrated with its own font and its own card concept for a more vertical coding approach that would remind the mind of the programmer to think in terms of stacks, rather meditatively if you wish, while doing the coding--and which also would high-light the important features without this high-lighting having to be done by the notorious rows of *'s and such that fills up just about every object-oriented program of some size on the planet.
  One of the most misleading features of the verbose programming languages in the class of object oriented programming languages is that names of variables and names of functions and objects may be so suggestive that the attention is distracted away from looking at the code. The overall tendency, also, in object-oriented languages to use pompous words (cfr the "import" statement that starts every Java program, for instance, or the "self" word in Python, or the "bless" word in object-oriented parts of Perl--as some examples)--further clouds the mind of the programmer and all in all contributes to a second-hand approach to data and programs. In seeking a first-hand relationship to data and programs and how they are weaved together, we are making a statement of seeing computer programming as a form of science, not just as a form of consumer electronics production and shaping; and of seeing computers and robots as something that not only initially, by at absolutely all stages are completely overseen by understanding human minds and not something created by sloppy, inattentive, second-hand processes and then invested with fierce motors and potentially damaging equipment of various sorts. In short, first-hand programming involves a dimension both of ethics and philosophy, but it is also hugely practical--it means making programming much more fun.
  So these considerations created the particular structure of the G15 PMN programming approach, where one takes to G15 to do things that require optimalisation, but use PMN whenever the speed of PMN, as half-compiled and half-interpreted (we might say), is adequate. PMN will then deliever, due to its very strict syntax but its complete openness as to the handling of warps, or "pointers", in its nearness to 32-bit numbers throughout, functions and data definitions and matrix definitions also, --including matrices with functions--a naturally understandable series of programs, naturally first-hand, naturally esthetical.

Then enter FCM, the name coming from considerations as to what a more mature computer science ought to call the type of mind-inspired programs that go into robots and such-- first-hand computerised mentality.
  We have elsewhere given arguments against the AI concept and this will not be repeated here.
  The approach of FCM is however not exclusively an alternative to AI, it is also a furthering of what we can, as a broad category, call a level-network process oriented form of programming.
  In FCM, then, instead of objects floating around in an imaginary data space created through calls on a hierarchy of classes of them by a main program, we have a network, with level numbers assigned to various parts of the network so as to indicate sequence of performance, of nodes, including nodes with one or more algorithms attached to them. In contrast to object oriented languages, the data space is not imaginary, it isn't kept rather in the clouds or hidden from the programmer. Here, in FCM as implemented in G15 PMN, the indexed matrix of nodes is entirely concrete and available and indeed every reference to it is by means of numbers in the 32-bit domain, numbers, that is, within the range of about a billion or two (plus, minus), so that we aren't speaking of numbers as long as a line of text. Learning to work with and even to some extent love numbers is learning to work with order, order as such, we might say, or one way of presenting order and symmetry to the mind. This requires that fancy names don't cover it all up. We must have access to the numbers, see and check what's going on, not just when we are correcting programs but also to experience more clearly in the mind the order there shaped as plays itself out on our computers, our, indeed, Personal computers. The PC concept indicates this first-handedness and part of the PC concept is a keyboard, which facilitates thought more than dictates to some type of voice recognition algorithm, and the large screen which also faciliates thinking by clear presentation, whether of text, image or symbol; as well as the mouse pointer device, called on as supplement to the keys on the keyboard but not needlessly much.
  The PC running G15 PMN FCM, then, has in it a level of nodes, so that these nodes may act on each other, to activate and deactivate one another (we might say), and give and borrow data from one another, and all this in a way that involves a loop that spins through, again and again, all the nodes in what we call FCM loops. Neither the structure of the nodes nor the loop is hidden from the programmer but in contrast neat little definitions that are highly accessible and not even precompiled, but run through and compiled during each startup of the FCM, through the standard 'Third Foundation' app that is the G15 PMN in its peak.
  There's a lot more to be said about these structures,-- but I'll give Nygaard right in one point, they are good structures, these FCM nodes, or 'foundries' as they are called inside G15 PMN FCM (for they are creating other things as ovens that melt and shape metals), also,--in part--because they aren't "too rich". They have been defined with some stringency, so that the programmer, while organising his or her thoughts in relation to a particular application to be made in FCM ways, will know what the contraints are, know the boundaries, as it were, of the stage.
  Indeed, during the last conversation with the late Nygaard, we spoke about programming in terms of metaphors: "the theatre", he said, "is an execellent metaphor of programming."

***** FINIS

Document written in G15 PMN's B9edit editor this date: 2016:12:23
and prepared for net by this G15 PMN app# 3829321.

COPYRIGHT: You are permitted to redistribute this text in respectful contexts when whole, nothing added and nothing removed from it, including author, date and with proper reference to the website indicated above where it was first published.