miser | Work-in-Progress | 0.1.14 2023-09-08 |
---|---|---|
![]() |
The Miser Project computational model has two important qualities:
simplicity, using a small number of concepts that take the covers off the power of digital abstraction in exchange for more effort in operational usage, akin to working in machine language to accomplish anything
novelty and unfamiliarity, interrupting what might be already-known or assumed about computers, programming and programming languages
If not already, become comfortable with theoretical approaches. Embrace a different kind of math, one based on symbolic logic. Tolerate the degree of rigor; it is informally formal and doesn’t have to be swallowed whole.
The diagram depicts a fundamental entity of the Miser Project model of computation: a member of the abstract structure, ‹ob›.
The entities are called obs and they can be visualized as pairs, each having an a-part and a b-part. The two parts of of a pair are themselves obs. Any ob may be a pairing of obs in this manner.
An individual has both the a-part and b-part be the ob itself. The lowest component in the figure is an individual. It is complete unto itself. There are any number of distinct individuals.
An enclosure has only the b-part be itself. The middle component in the figure is an enclosure. As an ob, it consists of itself and the a-part taken together as a whole.
Similarly, the top component of the figure is a plain pairing. As an ob, it consists of the pairing and the a-part and b-part taken together.
The Miser Project is very much about computational interpretation of abstract entities, with mathematical-logic theory as guidance toward dependable computational interpretations. The importance of logic to computer sciences is demonstrated.
Ob diagrams are props in the same manner as rulers, compasses and pencils on paper are useful in the understanding of Euclidean Geometry and numerals and arithmetic are helpful in the understanding of algebra (or vice versa). In our time, computer programs can serve similar purposes, so long as the programs are not confused with the abstractions.
Theoretically, obs are entirely abstract mathematical entities. In this sense, obs arise only in language and there is no direct concrete existence, no existence in reality. The Miser computational model is achieved with introduction of a universal computational function – an abstraction still.
The challenge becomes finding a dependable alignment between theory and practice, contending with a bridge that cannot be crossed. The dependable achievement of engineered implementations of theoretical wonders is a marvel of our time. Look carefully.
The diagram is also suggestive of a possible implementation of the ‹ob› computational model.
Computer implementations can employ computer data structures where the a-parts and b-parts are addresses of ob representations in computer memory.
Computational forms are immutable and without any cycles via separate parts, all in accordance with the mathematical formulation.
In this perspective, the represented obs are building blocks of computational data structures.
For practical computations, a greater variety of data forms is desirable. In the case of ‹ob› alone, that convenience is deferred. Focus is on how the stored-program model and conventional computers afford elevation of abstraction already.
Management of a computer implementations will become more elaborate than the simple structure suggested in the diagram. The diagram remains descriptive as a visualization.
In this endeavor, confirming that conditions established in theory are honored successfully in contingent reality demands thorough empirical inspection and demonstration.
The Miser Project provides operational demonstration of computation-theoretic aspects of software. Emphasis is on the stored-program principle and the manner in which computational representation of “higher-order” structures and types of entities emerge from the ‹ob› foundation.
Achievement of the Miser Project is the career capstone project of the author. Miser is the outgrowth of a 60-year inquiry into applicative-programming languages and their theoretical foundations. The operational program is intended for the insights it provides and the fundamentals it demonstrates rather than practical application.
Miser is thoroughly defined using mathematical-logic formalisms. The applicability of logic in computer science and software development is honored and demonstrated throughout.
Run-time oMiser operation demonstrates computational interpretation of the mathematical structure, ‹ob› = 〈Ob,Of,Ot〉and its universal function ap and companion eval. The o-name form emphasizes the limitation to ‹ob› and only obs.
The interface language, oFrugal, is defined with a formal grammar having semantics defined in terms of ‹ob› functions, providing a complete specification. Connection between formal semantics and the syntactical structure of programming languages is demonstrated in this direct case.
Ability of the stored-program concept to elevate levels of computational abstraction along with emergence of other types of data/operation is demonstrated in a tangible manner with careful reusable constructions.
The production/reference oMiser run-time is intended for use by other software. It has portable implementations that operate on general-purpose computer platforms as a library to other programs on the platform.
The interplay of implementation and theoretical foundations is accomplished in layers.
oMiser run-time is purely algorithmic/procedural in nature. It supports expression of a rudimentary data structure and algorithmic procedures on that structure. The expression of algorithms is via an applicative-function interpretation of data taken as scripts. In software-engineering terms, this is the model side of an interactive computer application.
.
The accompanying oFrugal software embeds an oMiser run-time and delivers access to oMiser via the host-platform user interface. oFrugal provides for input-output and carrying out of oMiser computations in accordance with direct input and/or previously-stored scripts. The commanding of oFrugal operation is known as a REPL (read-evaluate-print-loop) arrangement. It is appropriate to regard oFrugal as an ‹ob› calculator.
oFrugal provides expression of data and results in a visible and persistent form, known as Frugalese. oFrugal reference formats are usable in portable interchange of programs and data.
(TBD: some ideas, including Rosenbloom. A specific bibliography will be used.)
oMiser represents procedures and data in the same data format, demonstrating the essence of the stored-program concept. Inspiration is from formulation of LISP, although Miser is not LISP.
Applicative operation is inspired by work of Peter Landin, Christopher Strachey, and other ideas about functional programming connected to combinatory logic and the λ-calculus.
oMiser lacks input-output and any kind of filing system for reusable artifacts, whether data or applicative-expression scripts. In this respect, there are similarities to the formulation of Functional Programming by John Backus. The operational “system” layer, oFrugal, provides storage and utility functions. The oMiser layer provides a computational model of the ‹ob› mathematical structure.
(TBD: various resources and links to them, including the bibliography)
Important milestones include
establishment that Miser provides an effective representation of the computable functions under the Church-Turing thesis
demonstration of how such a mechanism is itself amenable to mechanizing logical deductions and theorem proving
introduction of accelerators that improve operation entirely within the inherent computational complexity of the approach.
Development is supported by narrative and reference materials, with important attributions to sources, at all times.
Proof-of-concept demonstrations and releasable software are developed with freely-available and free-to-use development tools. The project is conducted entirely with code in the open and the work is free to use and to adapt with appropriate attribution.
The oFrugal REPL shall be provided as a simple standalone command-line program fully usable in conjunction with a text editor for creating scripts.
The refinement of oMiser and oFrugal mockups toward conventional-computer production code is a kind of bootstrapping spiral. Once there is a stable oFrugal REPL, more-ambitious extensions are aspired to. There are no concrete provisions at this time.
Expanding to additional levels of Miser engines that extend to operation over multiple forms of data, representation of mutable state, and input-output including interaction and distributed operation.
Expansion to additional levels of Frugal front-ends to provide higher-level programming-language support and compilation of programs into distributable, directly-usable forms on general-purpose computers such as Windows PCs.
Enrichment of Miser to the point where the engine is capable of having Frugal as a Miser application, rather than as a surrounding host-system application. The appearance to users can be the same, whether or not the performance is as responsive.
In the other direction, the bonus challenge is having Miser able to compile Miser applications down to direct operations on the host platform in a dependable and disciplined manner.
It may become necessary to take one more run at computational monads and embrace some Category Theory although some Computational Logic equivalent may need to tag along with that.
I invite discussion about Miser Project topics in the Discussion section. Improvements and removal of defects in this particular documentation can be reported and addressed in the Issues section. There are also relevant projects from time to time.