Программирование с помощью таблиц
От: velkin Удмуртия http://blogs.rsdn.org/effective/
Дата: 09.02.21 04:58
Оценка: :)

Мышление


В теме Обучение с помощью карточек
Автор: velkin
Дата: 21.11.20
, особенно под конец, вскрылись многие механизмы мышления. Если человек хочет что-то запомнить, а потом вспомнить, то существуют конкретные способы этого достичь. Можно так же более эффективно управлять мышлением, если понимать различие между разными видами мышления по порядку развития, такие как:

1) восприятие
2) воображение
3) словесное
4) отвлечённое

Бизнес


Возьмём для примера бизнес, подавляющее большинство использует таблицы. Раньше это был Microsoft Office Excel, в наше время многие переходят на LibreOffice Calc, что в принципе почти одно и тоже с точки зрения базового функционала. И не только для документации, для интернет магазинов тоже преимущественно предпочитают набирать данные в таблицах, а потом импортировать в CMS.

Метапрограммирование


Следующим пунктом вспоминаются системы метапрограммирования, такие как JetBrains MPS. Лично я без понятия как там всё работает, но могу провести точно такую же аналогию, где CMS соответствует системам метапрограммирования. И то и другое решение специализировано, но вот таблицы нет.

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

Привет мир


Приступим к тестированию идеи. Лично я буду использовать Geany в качестве IDE.

print ("Привет мир!!!")

Вспомним расширенную форму Бэкуса-Наура

1) Терминальные символы — это минимальные элементы грамматики, не имеющие собственной грамматической структуры.
2) Нетерминальные символы — это элементы грамматики, имеющие собственные имена и структуру.


Вид формул

  снимок экрана 01
http://files.rsdn.org/99832/metatable_helloworld_01.png

категории    отступы    нетерминал            
глобально/функция/приветмир        =CONCAT(B3:D10)            
            =B13        
    =B17        =CONCAT(B5:E10)        
                =B14    
                =CONCAT(B7:F9)    
                    =B16
                    =B12
                    =B16
                =B15    
категории    терминал                
литерал/строковый/приветмир    Привет мир!!!                
функция/название    print                
функция/параметры/начало    (                
функция/параметры/конец    )                
литерал/строковый/ограничение    "                
отступ/пробел


Вид текста

  снимок экрана 02
http://files.rsdn.org/99832/metatable_helloworld_02.png

категории    отступы    нетерминал            
глобально/функция/приветмир        print ("Привет мир!!!")            
            print        
             ("Привет мир!!!")        
                (    
                "Привет мир!!!"    
                    "
                    Привет мир!!!
                    "
                )    
категории    терминал                
литерал/строковый/приветмир    Привет мир!!!                
функция/название    print                
функция/параметры/начало    (                
функция/параметры/конец    )                
литерал/строковый/ограничение    "                
отступ/пробел


Запуск


Копирую строчку C2 в Geany в файл source.lua и запускаю.
  снимок экрана 03
http://files.rsdn.org/99832/metatable_helloworld_03.png

Вывод в консоль:
Привет мир!!!

Предназначение


Для чего нужна подобная система:
1) микроконтроль
2) метаданные

Смотри также:
1) Модифицируемость кода (Changeability QA)
2) Отсечение целей (сложность разработки)

продолжение следует...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.