metaL manifest
- no-syntax язык определённый на исполняемых структурах данных (EDS, executable data structures)
- нет синтаксического парсера и файлов исходного кода
- любая составная структура данных может быть активной за счет использования EDS-интерпретатора который выполняет её программно
- самая универсальная структура данных это объектный граф (фреймы)
- концепция фреймов взята из Марвин Мински Фреймы для представления знаний [minsky] и расширена возможностью упорядоченного хранения
- любой объект Object должен иметь следующие поля:
class:tag
тэг хранит в рантайме тип каждого объекта (имя класса в нижнем регистре)
- хост-языки с RTTI/рефлексией способны хранить непосредственно ссылку на класс
- низкоуровневые языки типа C++ должны ссылаться на строку с именем класса (статический член каждого класса)
scalar:val
одиночное скалярное значение: имя объекта, строка, число,.. (в типе хост-языка)
dict:slot{}
ассоциативный массив имён привязанных к подграфам
vector:nest[]
упорядоченный контейнер для вложенных подграфов
set:par||
сет ссылок на родительские элементы (необходимо для вычисления в атрибутных грамматиках, и адресации родительских узлов)
ref ~ len(par)
счетчик ссылок не используется явно, так как реестр par
выполняет его роль, и должен быть обойден для проверки наличия ссылок на текущий объект (пересчет хэшей, обновление связанных внешних ресурсов)
int32:gid
уникальный идентификатор глобального хранилища — быстрый 32-битный хэш xxhash по содержимому объекта
- metaL внимательно смотрит на концепт UnisonWeb о применении иммутабельного глобального хранилища с разделяемыми объектами, адресуемыми по их хэшам
- необязательные поля, специфичные для конкретных классов узлов объектного графа
- любые графы, составленные из узлов, наследованных от Object, имеют унифицированный интерфейс для их построения и модификации
- основной метод программирования на metaL — генеративное метапрограммирование
- metaL как метод это сэндвич из трёх языков:
- хост-язык на котором ведётся вся работа, и реализуются остальные слои /Python/
- мета-слой metaLayer реализуется как интерпретация исполняемых структур данных (EDS, гомоиконный объектный граф)
- целевые языки: любой проект использует не менее 3..5 языков программирования, скриптовых, конфигурации, и т.д.
- 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 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:
Copy of Distilled metaL: SICP chapter 4
Logo/promo variants:



