Skip to content

metaL manifest

Dmitry Ponyatov edited this page Sep 14, 2020 · 7 revisions

metaL manifest

current version | вариант на ИТ-русском | book drafts en/ru

  • no-syntax language defined over executable data structures
    • there are no syntax parser and source code files
    • any composite data structure can be Active by using EDS-interpreter which executes it programmatically
  • the most universal data structure is the object graph of frames
    • frame concept is taken from Marvin Minsky's frames [minksy] extended with ordered storage
    • any Object must have these fields:
      • class:tag tag holds the type of any object in runtime (low-cased class name)
        • host languages with RTTI/reflection are able to hold references to class as is
        • low-level host languages such as C++ should reference to static class name string
      • scalar:val single scalar value: object name, string, number,.. (in host-language type)
      • dict:slot{} associative array of names which were bound to subgraphs
      • vector:nest[] ordered storage for nested subgraphs
      • set:par|| parent elements (required for attribute grammar attributes computation and parent nodes addressing from children nodes)
        • ref ~ len(par) reference counter not used directly, as par registry takes its role and must be recounted to check is the current object used anywhere
      • uint32:gid unique global storage id — fast 32-bit xxhash over object contents
        • metaL looks very intently to the UnisonWeb concept about immutable global storage which holds shared objects by its content hashes
      • optional behavior-specific fields
    • any graph combined from the Object-inherited nodes has unified interfaces for its building and manipulations
  • the main method of programming is the generative metaprogramming
    • the metaL method is the sandwich of three languages:
      • host language in which most work is going and other language layers implemented /Python/
      • the metaLayer implemented by executable data structures interpretation (homoiconic object graph)
      • target languages: all projects use not less than 3..5 programming and scripting languages, and config file formats
    • frame graph is an universal unified data structure for arbitrary knowledge representation
      • source code in any languages in a form analogous to AST and attribute grammar trees (extended to cyclic attributed no-syntax graphs)
      • generic program representation and procedures for graph transformations
      • domain and source code models (Model-Driven Engineering)
      • any application-specific data
    • programmer writes the target application model by combining software model elements
      • every graph node class knows how to compiler itself into source code in target languages, or into other graph node types which able to do it in turn
      • all models are shared between projects which programmers do over time, so
        • projects and its dedicated components can be classified and inherited
  • the programmer builds his own version of the metaL system from scratch
    • all required knowledge to write minimal reference implementation should be described in a manual step by step
      • first steps are easy enough to make your custom language system usable without familiarity with classical books such as [SICP], [PLAI], [TAPL], and [dragon]
      • the desire of using more effective programming methods stimulates you in learning more complex concepts from classical & modern CS.
    • the programming process is free in the selection of programming paradigms, methods, and approaches -- anything that some programmer is able to implement at a metaLevel, can be used with the condition of personal understanding of how it works
    • resulting target code can be distributed to the working group as is, without forcing anybody to dive into senior-level concepts, cryptic language, and disclosure of programming methods were used
      • metaL can be used as a secret weapon and personal know-how without inflicting risks on the employer and working team
      • the more effective development tool suggests you investigate into leveling-up your skills and makes you more valuable to the labor market
      • your programming knowledge and skills are represented in a computer form thus it is machine-readable, executable, and transformable
      • metaL can be treated as a CASE system without braindead GUI, but it is some sort of language-based self-bootstrapping RAD

Reference implementation: https://github.com/ponyatov/metaL/tree/master/distill

Clone this wiki locally