Re[4]: Литература по метапрограммированию
От: lseder lseder.livejournal.com
Дата: 24.06.11 14:09
Оценка:
L>Там таки и описаны мета-конструкции с самых верхних уровней. Т.е. абстрагироваться не от текста,
L>а от визуального представления. Хотя вашу задачу я так и не понял.
Задача построить контекстный конструктор кода.
Конструктор — потому что выбор доступных конструкций из списка.
Ввод с клавиатуры только необходимой информации — имена переменных, процедур, параметров...
Контекстный — потому что при выборе элемента дерева — показываются только доступные для вставки элементы.
Тем самым соблюдается принцип видимого интерфейса, все что можно сделать — есть в списке.
Кода — результатом будет программа.

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

L>Динамически конструирумое дерево. Я так понимаю, это дерево разбора синаксического анализатора+

L>динамически дополняемое лексемами. Знакомо?
Оно. Зачем нам мучиться, учить структуры программ для каждого из компиляторов разных языков.
Помнить все структуры каждого языка. Хватит только знать основные понятия программирования.
Re[57]: Литература по метапрограммированию
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 24.06.11 14:16
Оценка:
Здравствуйте, gandjustas, Вы писали:

R3>>>>Текущие же системы генерируют отчёты, графики, уведомления, напоминания, предупреждения и т.д. для того, чтобы дальнейшие действия принял человек. Т.е. системы создают объекты.

G>>>Не-а, генерация отчета — функция, напоминание — функция.
R3>>Главное в генерации отчета не генерация, а отчёт.
G>Демагогия. Пользоватею необходимо уметь получать от программы отчет на основании тех данных, которые он вносил. Если ты ему один раз сделаешь отчет толку будет мало. Поэтому как раз наоборот генерация гораздо важнее отчета как такового.

Да, соглашусь. Только, как я уже говорил, у меня функция связана с объектом.
Получается, что у тебя отчёт — это функция: сделали что-то.
У меня это функция + объект: сделали отчёт.
Следовательно, у меня можно создать функции "ждать появления нового отчёта" и "анализировать отчёт".
Вселенная бесконечна как вширь, так и вглубь.
Re[5]: Литература по метапрограммированию
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 24.06.11 14:18
Оценка:
Здравствуйте, lseder, Вы писали:

L>>Там таки и описаны мета-конструкции с самых верхних уровней. Т.е. абстрагироваться не от текста,

L>>а от визуального представления. Хотя вашу задачу я так и не понял.
L>Задача построить контекстный конструктор кода.
L>Конструктор — потому что выбор доступных конструкций из списка.
L> Ввод с клавиатуры только необходимой информации — имена переменных, процедур, параметров...
L>Контекстный — потому что при выборе элемента дерева — показываются только доступные для вставки элементы.
L> Тем самым соблюдается принцип видимого интерфейса, все что можно сделать — есть в списке.
L>Кода — результатом будет программа.

http://blogs.computerra.ru/10717
http://www.computerra.ru/terralab/softerra/547989/

L>>Динамически конструирумое дерево. Я так понимаю, это дерево разбора синаксического анализатора+

L>>динамически дополняемое лексемами. Знакомо?
L>Оно. Зачем нам мучиться, учить структуры программ для каждого из компиляторов разных языков.
L>Помнить все структуры каждого языка. Хватит только знать основные понятия программирования.

UML?
Вселенная бесконечна как вширь, так и вглубь.
Re[58]: Литература по метапрограммированию
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 24.06.11 14:21
Оценка:
Здравствуйте, Real 3L0, Вы писали:

R3>>>Про что я и говорил — "напиши свой Word".

G>>Это ты сильно перегибаешь палку.
R3>Это ты скажи всем разрабочикам, которые пишут клоны существующих продуктов.
Уж точно не потому что не могут свою функцию замены сделать.
Re[58]: Литература по метапрограммированию
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 24.06.11 14:24
Оценка:
Здравствуйте, Real 3L0, Вы писали:

R3>Здравствуйте, gandjustas, Вы писали:


R3>>>>>Текущие же системы генерируют отчёты, графики, уведомления, напоминания, предупреждения и т.д. для того, чтобы дальнейшие действия принял человек. Т.е. системы создают объекты.

G>>>>Не-а, генерация отчета — функция, напоминание — функция.
R3>>>Главное в генерации отчета не генерация, а отчёт.
G>>Демагогия. Пользоватею необходимо уметь получать от программы отчет на основании тех данных, которые он вносил. Если ты ему один раз сделаешь отчет толку будет мало. Поэтому как раз наоборот генерация гораздо важнее отчета как такового.

R3>Да, соглашусь. Только, как я уже говорил, у меня функция связана с объектом.

С каким? Пользователь эту функцию как вызывать будет?
Например есть бухгалтерская программа, нужен баланс (отчет для налоговой). Или система управления проектами, нужен burndown chart.
С какими объектами оно будет связано?

R3>Получается, что у тебя отчёт — это функция: сделали что-то.

R3>У меня это функция + объект: сделали отчёт.
R3>Следовательно, у меня можно создать функции "ждать появления нового отчёта" и "анализировать отчёт".
Тут я перестал понимать что значит отчет...
Re[59]: Литература по метапрограммированию
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 24.06.11 14:25
Оценка:
Здравствуйте, gandjustas, Вы писали:

R3>>>>Про что я и говорил — "напиши свой Word".

G>>>Это ты сильно перегибаешь палку.
R3>>Это ты скажи всем разрабочикам, которые пишут клоны существующих продуктов.
G>Уж точно не потому что не могут свою функцию замены сделать.

Ну а почему?
Вселенная бесконечна как вширь, так и вглубь.
Re[59]: Литература по метапрограммированию
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 24.06.11 14:32
Оценка:
Здравствуйте, gandjustas, Вы писали:

R3>>Да, соглашусь. Только, как я уже говорил, у меня функция связана с объектом.

G>С каким? Пользователь эту функцию как вызывать будет?

Я решил, что нужна отдельная система со своим интерфейсом под всё это дело.

G>Например есть бухгалтерская программа, нужен баланс (отчет для налоговой). Или система управления проектами, нужен burndown chart.

G>С какими объектами оно будет связано?

С теми же, что и сейчас связано.

R3>>Получается, что у тебя отчёт — это функция: сделали что-то.

R3>>У меня это функция + объект: сделали отчёт.
R3>>Следовательно, у меня можно создать функции "ждать появления нового отчёта" и "анализировать отчёт".
G>Тут я перестал понимать что значит отчет...

Отчёт — это объект.
Вселенная бесконечна как вширь, так и вглубь.
Re[60]: Литература по метапрограммированию
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 24.06.11 14:34
Оценка:
Здравствуйте, Real 3L0, Вы писали:

R3>Здравствуйте, gandjustas, Вы писали:


R3>>>Да, соглашусь. Только, как я уже говорил, у меня функция связана с объектом.

G>>С каким? Пользователь эту функцию как вызывать будет?

R3>Я решил, что нужна отдельная система со своим интерфейсом под всё это дело.



G>>Например есть бухгалтерская программа, нужен баланс (отчет для налоговой). Или система управления проектами, нужен burndown chart.

G>>С какими объектами оно будет связано?

R3>С теми же, что и сейчас связано.


Это какими?

R3>>>Получается, что у тебя отчёт — это функция: сделали что-то.

R3>>>У меня это функция + объект: сделали отчёт.
R3>>>Следовательно, у меня можно создать функции "ждать появления нового отчёта" и "анализировать отчёт".
G>>Тут я перестал понимать что значит отчет...
R3>Отчёт — это объект.
Отлично, и какие атрибуты у этого объекта? Что значит "анализировать отчет"?
Re[61]: Литература по метапрограммированию
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 24.06.11 14:48
Оценка:
Здравствуйте, gandjustas, Вы писали:

R3>>Я решил, что нужна отдельная система со своим интерфейсом под всё это дело.

G>

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

G>>>Например есть бухгалтерская программа, нужен баланс (отчет для налоговой). Или система управления проектами, нужен burndown chart.

G>>>С какими объектами оно будет связано?
R3>>С теми же, что и сейчас связано.
G>Это какими?

Блин, да я не спец в бухгалтерии. Предположу, что если это отчёт для налоговой, то у отчёт должен иметь адрес назначения.
Тебе разве не достаточно примера "сгенерировать отчёт"?

R3>>>>Следовательно, у меня можно создать функции "ждать появления нового отчёта" и "анализировать отчёт".

G>>>Тут я перестал понимать что значит отчет...
R3>>Отчёт — это объект.
G>Отлично, и какие атрибуты у этого объекта?

Например, "дата создания". Это важно?

G> Что значит "анализировать отчет"?


Это значит, что надо выполнить функцию "анализировать" к объекту "отчёт".
Вселенная бесконечна как вширь, так и вглубь.
Re[55]: Литература по метапрограммированию
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 24.06.11 14:48
Оценка:
G>Это ты о чем вообще? Я говорю что функция печати объективна, ибо людям надо получать что-либо на бумаге. А с какими данными (объектами) будет эта функция работать уже зависит от конкретного приложения. Чтобы что-то распечатать пользователь будет искать функцию печати, а не "объект" принтер.

чему научишь пользователей, то они и будут искать
научишь перетаскивать документ на принтер, будут перетаскивать на принтер.
научишь вызывать функцию, будут вызывать функцию
Re[6]: Литература по метапрограммированию
От: lseder lseder.livejournal.com
Дата: 24.06.11 15:46
Оценка:
R3>http://blogs.computerra.ru/10717
R3>http://www.computerra.ru/terralab/softerra/547989/
Очень похоже, только у андроида нет фильтрации доступных элементов по выбраной конструкции. Весь смысл в этом.
На счет микрософта не знаю, видео не смотрел.
Да и таскать блоки мишкой это фигня.

R3>UML?

Очень надеюсь, хотя и его хоронили, и доказывали невозможность синхронизации готового кода с блок схемами.
Только смысл не в таскании объектов по экрану для создания красивых схем, а в вводе только действительно необходимой инфы.
Re[39]: Литература по метапрограммированию
От: Undying Россия  
Дата: 25.06.11 09:23
Оценка:
Здравствуйте, DarkGray, Вы писали:

DG>и покажи полный код, например, для:

DG> получения дерева директорий и файлов,
DG> подсчета размера файлов в поддиректории рекурсивно

void GetChildDirectories(ExceptionWorker exceptionWorker, Directory directory)
{
  exceptionWorker.Execute(delegate
    {
      string[] childDirectories = Path.GetDirectories(directory.Path);
      string[] files = Path.GetFiles(directory.Path);

      foreach (string child in childDirectories)
      {
        Directory childDirectory = directory.AddDirectory(child);
        GetChildDirectories(exceptionWorker, childDirectory);
      }
      directory.AddFiles(files);
    }
  );
}

ExceptionWorker exceptionWorker = new ExceptionWorker(settings);
GetChildDirectories(exceptionWorker, startDirectory);
exceptionWorker.PostClause();


Проблема здесь чисто логическая, как обрабатывать ошибки таким образом, чтобы несмотря на ошибки состояние оставалось корректным. Это, да, сложно, т.к. в разных задачах разное понимание корректного состояния, т.е. для каждой задачи нужно думать отдельно.
Re[5]: Литература по метапрограммированию
От: WolfHound  
Дата: 25.06.11 21:27
Оценка:
Здравствуйте, lseder, Вы писали:

L>Задача построить контекстный конструктор кода.

L>Конструктор — потому что выбор доступных конструкций из списка.
L> Ввод с клавиатуры только необходимой информации — имена переменных, процедур, параметров...
L>Контекстный — потому что при выборе элемента дерева — показываются только доступные для вставки элементы.
L> Тем самым соблюдается принцип видимого интерфейса, все что можно сделать — есть в списке.
L>Кода — результатом будет программа.
Это MPS.
Или я что-то не понял?
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[6]: Литература по метапрограммированию
От: lseder lseder.livejournal.com
Дата: 07.07.11 16:23
Оценка:
WH>Это MPS.
Похоже зря я упомянул об мета программировании.
Идея та же, только акцент на более простом использовании в режиме юзера,
который только собирает из блоков код.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.