orcmid.github.io>
index.html>
0.3.11 2024-11-28T17:06Z |
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 depicted 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 depicted 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 depicted in 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 nature. The Miser computational model is established with definition of a universal computational function – a mathematical entity still.
The challenge becomes finding a dependable alignment between the computational model as a theoretical conception and practical operation of a computing mechanism, demonstrationg an empirical bridge that cannot be crossed with mathematics and logic alone. Observe carefully how that is accomplished in the Miser Project.
Such dependable achievement of engineered manifestations of theoretical wonders is a marvel of our time.
The diagram is also suggestive of a possible computer representation 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.
The computational forms are immutable and without any cycles via separate parts, all in accordance with the mathematical formulation.
In this perspective, the ob representations 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 computer implementations will become more elaborate than the simple structure suggested in the diagram. The diagram remains descriptive as a visualization.
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, similarly with today’s digital computers.
Development 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 manifestation of the mathematical structure, ‹ob› = 〈Ob,Of,Ot〉and its universal function ap and companion eval. The oMiser form emphasizes the limitation to ‹ob› and only obs, reserving the possibility of going beyond.
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.
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 Application Programming Interface (API) serves to ensure a computational manifestation of ‹ob›, its navigation and universal functions.
.
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.
oMiser represents procedures and data in the same data format, demonstrating the essence and power of the stored-program concept.
The notions of individual, enclosure, singleton, and pair have their inspiration in the nested-array work of [More1979] and the foundation structure of LISP [McCarthy1960].
The importance of enclosure as a structural feature of obs was observed in an incompleteness regarding nested strings in [Strachey1965]. Ob enclosures in obs are akin to representations of strings that can nest arbitrary strings as individual beads, a limited feature of ALGOL 60 developed further by Doug Ross and colleagues in the AED system [Ross1967].
Enclosures are important in the treatment of obs as scripts and in shifting between obs as data to scripts and obs as scripts themselves in the computational model.
The computational model founded on ‹ob› for oMiser is a fully-applicative scheme inspired through my association with Peter Landin and William H. Burge in the mid-1960s, with operation now via a list-processing abstraction. The mechanism of evaluation is based on that for LISP, although Miser is not LISP. oFrugal and Frugalese have inspiration in [Landin1966], [Burge1975], and some of SML [Paulson1996].
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 [Backus1978]: The operational “system” layer, oFrugal, provides storage and utility operations. The oMiser layer provides a computational manifestation of the ‹ob› mathematical structure, including its universal-computation function via computational procedure.
The project is narrated with the software-development managed on GitHub repository orcmid/miser. Miser Project on GitHub content is authored at the docs folder of the repository.
Important authoritative materials are in text files that can be preserved and employed without requiring a browser or access to the GitHub repository. These materials are often created first; they are always available for preview from these web pages. Early review and discussion of preview topics is invited.
The web material is organized in topical sections:
Section | General Topic |
---|---|
ob | ‹ob› Mathematical Structure (preview) |
obap | ‹ob› Universal Computation Function (preview) |
obreps | Interpretations in ‹ob› (preview) |
oFrugal | oFrugal REPL Principles of Operation (preview) |
oMiser | oMiser Conception, Principles, and Engineering (preview) |
lambda | λ Applicative-Procedure Abstraction |
obapx | Extensions to the ‹ob› Universal Computation Function |
docs.txt | Text Synopsis and Job Jar for orcmid.github.io/miser |
miser.txt | Miser Project on GitHub (shadow) |
construction | Miser Project Web Construction Materials |
Security | Security Policy |
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.
You are navigating the Miser Project on Github |
created 2019-11-20 by orcmid |