Автор Тема: [pure С] Макросы как инструмент построения eDSL  (Прочитано 68267 раз)

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:[pure С] Макросы как инструмент построения eDSL
« Ответ #105 : Апрель 13, 2011, 04:43:37 pm »
Скорее перепишу все что есть с нуля самостоятельно так, чтобы экспортируемые сущности были сгруппированы отдельно. Благо исходников на Обероне-7 кот наплакал, можно вообще все переписать безболезненно совершенно :-)
Просто добавьте DEF-файлы, и в зависимости от задач и предпочтений решайте - генерируются они автоматически из модулей или наоборот - из них автоматически генерируются болванки модулей. Так что то, как сделано в Обероне - хорошо, надо только увидеть это.
Так в Обероне же нет DEF-файлов :-) Их синтаксис не определен.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

DIzer

  • Гость
Re:[pure С] Макросы как инструмент построения eDSL
« Ответ #106 : Апрель 13, 2011, 04:50:07 pm »
Просто добавьте DEF-файлы, и в зависимости от задач и предпочтений решайте - генерируются они автоматически из модулей или наоборот - из них автоматически генерируются болванки модулей. Так что то, как сделано в Обероне - хорошо, надо только увидеть это.
Не понял  -как можно сделать болванку из дефа (в XDS) автоматом?

Comdiv

  • Newbie
  • *
  • Сообщений: 25
    • Просмотр профиля
Re:[pure С] Макросы как инструмент построения eDSL
« Ответ #107 : Апрель 13, 2011, 05:21:26 pm »
Так в Обероне же нет DEF-файлов :-) Их синтаксис не определен.
Если нужно просто ориентироваться в импортированных сущностях, то это и не важно. Если же нужно использовать как полноценные сущности, то конечно - доопределить. А в самом описании Оберона этого может и не быть, как и описания поведения при выходе за границы массива, стандартной библиотеки и т.д. Это может содержаться в более объемлющем стандарте.

Не понял  -как можно сделать болванку из дефа (в XDS) автоматом?
Скорее всего никак, я всего лишь, ссылаясь на потенциальное желание Алексея всё переписать, предлагал возможный путь.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:[pure С] Макросы как инструмент построения eDSL
« Ответ #108 : Апрель 13, 2011, 06:00:44 pm »
Да там переписывать то… Три или четыре файла :-)
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Илья Ермаков

  • Full Member
  • ***
  • Сообщений: 177
    • Просмотр профиля
    • OberonCore
Re:[pure С] Макросы как инструмент построения eDSL
« Ответ #109 : Апрель 13, 2011, 06:16:57 pm »
Какая вьюшка или фигнюшка - я говорю про простые задачи - понятные школьникам  напр. есть точка (на плоскости) из 1 координатной четверти, есть точка из 3 -найти рассояние между ними... самый надежный способ определить два типа и функцию возвращающую расстояние.- здесь нет никакого полиморфизма или наследования... работаем только с переменными пользовательских типов. И уж коль скоро мы говорим о них (пременных пользовательских типов ) - почему бы не сделать их полноценными (коль скоро постулируем СТРОГУЮ ТИПИЗАЦИЮ). Да и еще я говорил про простой СОВРЕМЕННЫЙ ЯВУ..все -таки кое какой багаж за последние 40 лет накоплен...

Понятно. Хороший пример.
И чего Вам не хватает в просто RECORD-е для него? Тут действительно нет никакого ООП.
Процедуры, RECORD-ы.

Можно придумывать всякую лабуду, чтобы "оно себя вело надёжнее и как встроенное". Но будет ли это проще?
Я, например, не стал бы считать простой какую-то внешне простую "вкусность", про которую я не могу на пальцах и с парой рисунков на доске объяснить, как она работает (во что отображается в памяти, в какие действия машины и т.п.). Простое - это прозрачное в поведении.
С одной стороны, идея независимости абстракций от реализации - правильная идея. Но на самом деле эта независимость должна быть "как-бы-независимостью". Т.е. абстракции надо придумывать так, чтобы определены они были без связи с реализацией; но вот хорошее объяснение и изучение всегда должно показывать, а как это внутри устроено. Нельзя использовать то, об устройстве чего нет представления (во что и как это ниже отображается, примерно).

DIzer

  • Гость
Re:[pure С] Макросы как инструмент построения eDSL
« Ответ #110 : Апрель 13, 2011, 07:03:37 pm »


Понятно. Хороший пример.
И чего Вам не хватает в просто RECORD-е для него? Тут действительно нет никакого ООП.
Процедуры, RECORD-ы.

Можно придумывать всякую лабуду, чтобы "оно себя вело надёжнее и как встроенное". Но будет ли это проще?
Я, например, не стал бы считать простой какую-то внешне простую "вкусность", про которую я не могу на пальцах и с парой рисунков на доске объяснить, как она работает (во что отображается в памяти, в какие действия машины и т.п.). Простое - это прозрачное в поведении.
С одной стороны, идея независимости абстракций от реализации - правильная идея. Но на самом деле эта независимость должна быть "как-бы-независимостью". Т.е. абстракции надо придумывать так, чтобы определены они были без связи с реализацией; но вот хорошее объяснение и изучение всегда должно показывать, а как это внутри устроено. Нельзя использовать то, об устройстве чего нет представления (во что и как это ниже отображается, примерно).

1. Механизма который обеспечивал бы непротиворечивое создание экземпляра переменной ПОЛЬЗОВАТЕЛЬСКОГО типа.
2. Зачастую абстракции не надо придумывать - есть куча теорий, методов - нужно просто взять их отобразить их на ЯП максимально корректно и простым образом (но даже если и приходится это делать - то аттрибуты и свойства таких абстракций диктуются практической задачей).
3. МОЖНО И НУЖНО (блондинка не знает как устроен ПОРШ (как и я), но из этого не следует что она не МОЖЕТ кататься на нем (а вот я - нет  ;) ), а НУЖНОСТЬ следует , хотя бы из того, что мы ДОЛЖНЫ обучать школьников и студентов (программированию ) в  текущих условиях (при чем не обязательно программистов по профилю)...  :D
« Последнее редактирование: Апрель 13, 2011, 07:10:18 pm от DIzer »

DIzer

  • Гость
Re:[pure С] Макросы как инструмент построения eDSL
« Ответ #111 : Апрель 13, 2011, 08:02:13 pm »
Но будет ли это проще?
Я, например, не стал бы считать простой какую-то внешне простую "вкусность", про которую я не могу на пальцах и с парой рисунков на доске объяснить, как она работает (во что отображается в памяти, в какие действия машины и т.п.). Простое - это прозрачное в поведении.
Тут речь идет даже скорее не о простоте, а о полезности - а полезность у инициализатора такая же как и у конструктора... более полезно (с моей точки зрения) наличие механизма обеспечивающего непротиворечивое состояние переменной в течении всего срока ее жизни.

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:[pure С] Макросы как инструмент построения eDSL
« Ответ #112 : Апрель 14, 2011, 03:12:10 am »
Вы считаете что такое решение заранее подойдёт для всех задач?  :D
... для большинства задач начального уровня (ИМХО)  - это разумный ( и естесственный с  точки зрения человеческой психики) выбор
С Вами всё ясно.  :)

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:[pure С] Макросы как инструмент построения eDSL
« Ответ #113 : Апрель 14, 2011, 03:26:37 am »
Просто добавьте DEF-файлы, и в зависимости от задач и предпочтений решайте - генерируются они автоматически из модулей или наоборот - из них автоматически генерируются болванки модулей.
Кстати, интересная мысль.  :)
Допустим, в команде разработчиков роли могут быть распределены так, что один разрабатывает интерфейсы модулей (архитектор), а другие строчат эти модули (программисты). Тогда сначала архитектор пишет DEF-ки, а затем программисты автоматически генерируют по DEF-кам болванки модулей и начинают работать. По окончании работы по готовым модулям автоматически генерируются DEF-ки. И не дай Бог, если новые DEF-ки не соответсвуют старым!  :)

DIzer

  • Гость
Re:[pure С] Макросы как инструмент построения eDSL
« Ответ #114 : Апрель 14, 2011, 03:30:44 am »
Вы считаете что такое решение заранее подойдёт для всех задач?  :D
... для большинства задач начального уровня (ИМХО)  - это разумный ( и естесственный с  точки зрения человеческой психики) выбор
С Вами всё ясно.  :)
Так за взаимопонимание  ;)

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:[pure С] Макросы как инструмент построения eDSL
« Ответ #115 : Апрель 14, 2011, 03:46:04 am »
Не понял  -как можно сделать болванку из дефа (в XDS) автоматом?
DEFINITION заменить на MODULE и вперёд!  :)    Остальные мелкие огрехи - не беда, всё-равно болванку править. На крайняк можно утилитку написать, которая будет править заголовок и выносить методы из описания записей-классов-объектов.

DIzer

  • Гость
Re:[pure С] Макросы как инструмент построения eDSL
« Ответ #116 : Апрель 14, 2011, 04:14:22 am »
Не понял  -как можно сделать болванку из дефа (в XDS) автоматом?
DEFINITION заменить на MODULE и вперёд!  :)    Остальные мелкие огрехи - не беда, всё-равно болванку править. На крайняк можно утилитку написать, которая будет править заголовок и выносить методы из описания записей-классов-объектов.
Тогда нафига делать деф  ;D

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:[pure С] Макросы как инструмент построения eDSL
« Ответ #117 : Апрель 14, 2011, 06:11:20 am »
Тогда нафига делать деф  ;D
Так тому кто разрабатывает только интерфейс модуля удобнее нотация DEF. И опять же проверка готового модуля будет в первую очередь производится на предмет соответствия изначально разработанному интерфейсу.

DIzer

  • Гость
Re:[pure С] Макросы как инструмент построения eDSL
« Ответ #118 : Апрель 14, 2011, 06:15:38 am »
Тогда нафига делать деф  ;D
Так тому кто разрабатывает только интерфейс модуля удобнее нотация DEF. И опять же проверка готового модуля будет в первую очередь производится на предмет соответствия изначально разработанному интерфейсу.
Я к тому что от дефа (в случае оберонов) компилируемая пустышка будет отличаться  всего лишь наличием BEGIN END; после каждого определения функции (вследствии того, что стиль  оберонцев - большая куча узкоспециализированных  маленьких модулей)
« Последнее редактирование: Апрель 14, 2011, 06:19:27 am от DIzer »

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:[pure С] Макросы как инструмент построения eDSL
« Ответ #119 : Апрель 14, 2011, 06:24:42 am »
Я к тому что от дефа (в случае оберонов) компилируемая пустышка будет отличаться  всего лишь наличием BEGIN END;
Ещё (2) все заголовки методов будут внесены в описания соответствующих типов; и (3) будут исключены все приватные объявления.