Язык программирования на фреймах Мински (-ого)

9 views
Skip to first unread message

Dmitry Ponyatov

unread,
Mar 9, 2019, 5:19:50 AM3/9/19
to Makeitlab
Некоторое время экспериментирую с динамическим гомоиконным языком программирования на основе фреймов (так же как Лисп сделан на базе списков).
Начал книжку делать по реализации, чтобы как-то зафиксировать. Будет ли кому интересно здесь пообсуждать?


Интро еще толком не прописал, поэтому вкратце:
интересует применение экспертных систем для генерации программ для встраиваемых систем и IoT,
погуглил на тему представления знаний в таких системах, попалась книжка Марвина Минского (в переводе)
и пара ссылок с кратким описанием принципа, подкупает полная поддержка ООП и объектного представления + логический вывод

прототип решил делать поверх Python (чтобы не возиться с управлением памятью, и использовать несколько удобных библиотек),
командный язык а-ля Форт (стек и постфикс) для простоты, 
как основной инструмент хочется унификацию (как в Прологе) но более дружественную к императивному программированию,
и самое главное гомоиконичность
(а) чтобы система могла достраивать сама себя (bootstrap) и 
(б) полностью динамическая интерактивная система а-ля Smalltalk/Self позволяющая в себя залезть/отладить/модифицировать в рантайме

основное прикладное применение: генерация кода для микроконтроллеров по шаблонам
(параметрические куски кода на embedded Си, которые немного изменяются в зависимости от целевой системы и контекста в котором использу.тся)
наследование дизайна прошивки: есть код прошивки для базового прибора, и полсотни заказчиков, каждый хочет свои лыжи и гамак, С++ под корпоративным запретом (и в 2-8К ОЗУ не разбежишься), в итоге исходники неконтролиремо копипастятся и имеют море наслоений legacy

Dmitry Ponyatov

unread,
Mar 9, 2019, 5:24:49 AM3/9/19
to Makeitlab

Alexey Galakhov

unread,
Mar 9, 2019, 1:56:37 PM3/9/19
to make...@googlegroups.com
Мише Бахтереву точно интересно будет.


On Sat, 9 Mar 2019 02:19:49 -0800 (PST)
Dmitry Ponyatov <dpon...@gmail.com> wrote:

> Некоторое время экспериментирую с динамическим гомоиконным языком
> программирования на основе фреймов (так же как Лисп сделан на базе
> списков).
>
> - https://www.youtube.com/watch?v=nXJ_2uGWM-M
> - http://www.cs.bham.ac.uk/~jxb/AITA/w6s3.pdf

Dmitry Ponyatov

unread,
Mar 12, 2019, 9:40:00 PM3/12/19
to Makeitlab
Метод EDS: исполняемые структуры данных

По-настоящему мощные и гибкие языки программирования, и скриптовые движки встроенные в прикладное ПО (*), дающие множество возможностей даже в самом минимальном варианте исполнения,  в большинстве случаев строятся по методике, которую можно назвать исполняемые структуры данных: EDS -- Executable Data Structure.

(*) используются как средства расширения пользователем прикладных коммерческих программных пакетов и интегрированных рабочих сред
  • интерпретатор структур данных рассматривает их как некоторое представление программ, которые можно исполнять в выбранной модели: конечный автомат, императивная программа, декларативное описание состава системы, функций над данными и потоков данных, и
  • память интерпретатора, в которой эти структуры хранятся.
Такие структуры рефлективны (программа может анализировать сама себя) и часто мутабельны (их можно изменять в процессе работы), представляют бизнес-логику программы на верхнем уровне абстракции, что добавляет программисту некоторые возможности, недоступные при обычном использовании компиляторов.

Совсем необязательно, что применение метода EDS связано с созданием языка программирования -- исполняемые структуры вполне могут быть заданы в синтаксисе Си и скомпилированы для микроконтроллера с минимальным объемом памяти. И все же свойство гомоиконичности (см.выше) EDS очень располагает к появлению прикладного языка (**) хотя бы для описания начального состояния таких структур (***).

(**) DSL --- Domain Specific Language
(***) DDL --- Data Definition Language

Alexey Galakhov

unread,
Mar 12, 2019, 9:55:49 PM3/12/19
to make...@googlegroups.com
On Tue, 12 Mar 2019 18:40:00 -0700 (PDT)
Dmitry Ponyatov <dpon...@gmail.com> wrote:

> Метод EDS: исполняемые структуры данных
>
> По-настоящему мощные и гибкие языки программирования, и скриптовые движки
> встроенные в прикладное ПО (*), дающие множество возможностей даже в самом
> минимальном варианте исполнения, в большинстве случаев строятся по
> методике, которую можно назвать *исполняемые структуры данных*: EDS --
> Executable Data Structure.

Это не переизобретение ли аппликативного программирования
(появившегося, строго говоря, раньше, чем ЭВМ)?

Dmitry Ponyatov

unread,
Mar 13, 2019, 12:27:30 AM3/13/19
to Makeitlab
Это не переизобретение ли аппликативного программирования (появившегося, строго говоря, раньше, чем ЭВМ)?

Аппликативное программирование — один из видов декларативного программирования, в котором написание программы состоит в систематическом осуществлении применения одного объекта к другому. Результатом такого применения вновь является объект, который может участвовать в применениях как в роли функции, так и в роли аргумента и так далее.

Ничего общего не вижу честно говоря.
Если говорить о ближайших аналогах, что-то похожее есть в концептуальном программировании.
Тыугу Э. Х. Концептуальное программирование. М.: Наука, 1984. 255 с

Характерными особенностями концептуального программирования являются также использование языка предметной области и использование семантической памяти с целью накопления знаний о решаемых задачах. Иными словами, к. программирование предполагает наличие базы знаний, включающей в себя элементарные составляющие, которые позволяют строить из них решение произвольной задачи данной предметной области.


Dmitry Ponyatov

unread,
Mar 13, 2019, 12:38:20 AM3/13/19
to Makeitlab
Ух ты, не попадалась еще инфа по этому проекту:

http://start.iis.nsk.su/index

В 1983 году появилась информация о проводимом Японией национальном проекте созданиякомпьютеров так называемого пятого поколения. В японском проекте упор делался на значительное повышение "интеллектуальности" создаваемых систем. Проект внимательно изучался в США и Европе, формировались предложения по проведению альтернативных проектов. В СССР ответственным за национальную политику в области научно-технического прогресса был Государственный комитет по науке и технике, возглавлявшийся в то время Г.И. Марчуком. Требовалось дать оценку японскому проекту и предложить концепцию, реальную в наших условиях. Для этого была сформирована группа специалистов по архитектуре и программному обеспечению ЭВМ. Группу возглавил В.Е. Котов, в нее вошли также А.С. Нариньяни и А.Г. Марчук. Были привлечены такие известные специалисты, как Э.Х. Тыугу из Таллинна, В.М. Брябрин из Москвы и ряд других.

Alexey Galakhov

unread,
Mar 13, 2019, 5:08:44 AM3/13/19
to make...@googlegroups.com
On Tue, 12 Mar 2019 21:27:30 -0700 (PDT)
Dmitry Ponyatov <dpon...@gmail.com> wrote:

> > Это не переизобретение ли аппликативного программирования (появившегося,
> > строго говоря, раньше, чем ЭВМ)?

> Ничего общего не вижу честно говоря.

Практически то же самое: когда функция рассматривается как объект
первого класса, а данные - как набор инструкций. Эта идея лежит в
основе Lisp.
Reply all
Reply to author
Forward
0 new messages