OberonCore
https://forum.oberoncore.ru/

Плоская модель модуля: аргументы за и против
https://forum.oberoncore.ru/viewtopic.php?f=27&t=1734
Страница 1 из 3

Автор:  igor [ Пятница, 24 Июль, 2009 17:39 ]
Заголовок сообщения:  Плоская модель модуля: аргументы за и против

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

Возьмём, к примеру, классы. Казалось бы ну очень мощная концепция. Ан-нет! Уступили место расширяемым (EXTENSIBLE) записям и связанным процедурам. Не выдержали конкуренции с модулем.

Вложенность процедур, конечно, очень удобно реализовать в компиляторе используя стек. Ну и что? Разве язык создаётся ради компилятора?

Червячок сомнения всё-таки гложет. Хотелось бы услышать мнение других специалистов.

Автор:  Сергей Губанов [ Пятница, 24 Июль, 2009 18:23 ]
Заголовок сообщения:  Re: Плоская модель модуля: аргументы за и против

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

Автор:  igor [ Пятница, 24 Июль, 2009 18:37 ]
Заголовок сообщения:  Re: Плоская модель модуля: аргументы за и против

Тем более...

Автор:  Илья Ермаков [ Пятница, 24 Июль, 2009 18:54 ]
Заголовок сообщения:  Re: Плоская модель модуля: аргументы за и против

Я понимаю этот вопрос так.

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

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

Автор:  Vlad [ Пятница, 24 Июль, 2009 19:38 ]
Заголовок сообщения:  Re: Плоская модель модуля: аргументы за и против

igor писал(а):
А значит в них нет острой необходимости. Ведь модули и так уже есть! А как насчёт ортогональности?


Да, да! Давайте еще чего-нибудь неортогональное отрежем! :) Я вот давно предлагаю в жертву CASE - он неортогонален IF :) Или вот множества - давно можно было в библиотеку засунуть (как это сделано в некоторых других, намного более "неортогональных" языках :)

Автор:  igor [ Пятница, 24 Июль, 2009 20:36 ]
Заголовок сообщения:  Re: Плоская модель модуля: аргументы за и против

Илья Ермаков писал(а):
Кроме того, часто непростую управляющую логику уложить в структурные конструкции без вынесения дублирующих участков во вложенные процедуры не получается.
Лично я в таких случаях стараюсь вместо сложных процедур использовать простые модули. Никаких комплексов по поводу малых размеров модуля не испытываю. Ведь разбиение на модули производится по функциональному признаку, а не по размеру.

2Vlad
Влад, я готов принести ортогональность в жертву практичности, но не за дарма. Я должен знать цену, которую за это приходится платить. В случае отказа от CASE цена велика, а в случае отказа от вложенных процедур -- грош цена.

Автор:  Илья Ермаков [ Пятница, 24 Июль, 2009 21:26 ]
Заголовок сообщения:  Re: Плоская модель модуля: аргументы за и против

igor писал(а):
Илья Ермаков писал(а):
Кроме того, часто непростую управляющую логику уложить в структурные конструкции без вынесения дублирующих участков во вложенные процедуры не получается.
Лично я в таких случаях стараюсь вместо сложных процедур использовать простые модули. Никаких комплексов по поводу малых размеров модуля не испытываю. Ведь разбиение на модули производится по функциональному признаку, а не по размеру.


Нет, я имею в виду обычную управляющую логику внутри одной процедуры. Не будет вложенных процедур - придётся в нескольких ветках IF-а переписывать одно и то же.

Автор:  Algo [ Пятница, 24 Июль, 2009 21:28 ]
Заголовок сообщения:  Re: Плоская модель модуля: аргументы за и против

igor писал(а):
...я готов принести ортогональность в жертву практичности, но не за дарма. Я должен знать цену, которую за это приходится платить. В случае отказа от CASE цена велика, а в случае отказа от вложенных процедур -- грош цена.

И в чём заключается такая великая цена за CASE?
P.S. Сам очень редко пользуюсь и CASE и вложенными процедурами.

Автор:  Vlad [ Пятница, 24 Июль, 2009 23:34 ]
Заголовок сообщения:  Re: Плоская модель модуля: аргументы за и против

igor писал(а):
Влад, я готов принести ортогональность в жертву практичности, но не за дарма. Я должен знать цену, которую за это приходится платить. В случае отказа от CASE цена велика, а в случае отказа от вложенных процедур -- грош цена.


Не знаю. Я редко пользуюсь свитчом. А если пользуюсь, то в 99% случаев по енумам, которых в обероне все равно нет ;)

P.S. А еще можно SHORT выкинуть и прочие целочисленные вариации, оставить только INTEGER. Засунуть все остальные целые в SYSTEM для интеропа с внешним миром, ни для чего другого они не нужны.

Автор:  Илья Ермаков [ Суббота, 25 Июль, 2009 00:28 ]
Заголовок сообщения:  Re: Плоская модель модуля: аргументы за и против

Не факт. На здоровых вычислительных задачах может быть существенно, сколько памяти будет жрать матрица какая-нить или кубик.

Автор:  Vlad [ Суббота, 25 Июль, 2009 00:38 ]
Заголовок сообщения:  Re: Плоская модель модуля: аргументы за и против

Илья Ермаков писал(а):
Не факт. На здоровых вычислительных задачах может быть существенно, сколько памяти будет жрать матрица какая-нить или кубик.


Почему-то я всегда думал, что под матрицы используются вещественные числа :) Ну да лано. Будет эта матрица жрать 10 мегабайт, а 20. Это существенно? Если существенно, то это такой частный случай, который не стоит тащить в язык - в SYSTEM его. А лучше сразу в какой-нибудь Math :)

Автор:  Илья Ермаков [ Суббота, 25 Июль, 2009 00:43 ]
Заголовок сообщения:  Re: Плоская модель модуля: аргументы за и против

Есть задачи, где счёт на сотни мегабайт, и с подкачкой с винта.

Автор:  Vlad [ Суббота, 25 Июль, 2009 00:46 ]
Заголовок сообщения:  Re: Плоская модель модуля: аргументы за и против

Илья Ермаков писал(а):
Есть задачи, где счёт на сотни мегабайт, и с подкачкой с винта.


И чего, в этих задачах именно SHORT'ы используются? Или это просто задачи с подкачкой (все тех же вещественных)? ;)

Автор:  Сергей Оборотов [ Суббота, 25 Июль, 2009 07:31 ]
Заголовок сообщения:  Re: Плоская модель модуля: аргументы за и против

igor писал(а):
И пусть меня забросают тухлыми помидорами, но я готов подписаться под этим правилом.
Под каким?

Автор:  Geniepro [ Суббота, 25 Июль, 2009 08:59 ]
Заголовок сообщения:  Re: Плоская модель модуля: аргументы за и против

igor писал(а):
Не секрет, что в Си функции не могут быть вложенными.
Это один из самых больших недостатков Си, имхо.
igor писал(а):
Возьмём, к примеру, классы. Казалось бы ну очень мощная концепция. Ан-нет! Уступили место расширяемым (EXTENSIBLE) записям и связанным процедурам. Не выдержали конкуренции с модулем.
ВАУ! Что я пропустил?? Когда это произошло???
Мне лично известно всего несколько языков, где так сделано -- Оберон и Ада(-95). Кто продолжит этот список? (Я бы назвал ещё и O`Haskell, но он практически не используется никем, так что пролетает...)

Автор:  Илья Ермаков [ Суббота, 25 Июль, 2009 10:29 ]
Заголовок сообщения:  Re: Плоская модель модуля: аргументы за и против

Неужели не видно, что "народное ООП" себя исчерпало... Полностью. И находится в глубоком ступоре относительно параллельности и относительно вообще адекватного отображения прикладных задач (откуда и, кстати, DDD всякие появляются косяками...; и ФП есть где развернуться...)

Автор:  Geniepro [ Суббота, 25 Июль, 2009 12:18 ]
Заголовок сообщения:  Re: Плоская модель модуля: аргументы за и против

Ну исчерпало и исчерпало. Будет дальнейшая гибридизация с ФП и параллельными вычислениями. Не одним ООПом, в конце концов, сыт программист...
Как сейчас даже MS пошли в эту сторону со своими F# и Axum...

Автор:  Илья Ермаков [ Суббота, 25 Июль, 2009 12:29 ]
Заголовок сообщения:  Re: Плоская модель модуля: аргументы за и против

Да я-то не переживаю по этому поводу :)

Гибридизация, конечно, будет.
Но будет и полноценное решение, можно надеяться.

Автор:  igor [ Суббота, 25 Июль, 2009 12:55 ]
Заголовок сообщения:  Re: Плоская модель модуля: аргументы за и против

Илья Ермаков писал(а):
Нет, я имею в виду обычную управляющую логику внутри одной процедуры. Не будет вложенных процедур - придётся в нескольких ветках IF-а переписывать одно и то же.
Согласен с тем, что если все локальные процедуры заменить на глобальные, то им как-то надо передать параметры той процедуры, в которой они были, а это не всегда удобно.

Автор:  igor [ Суббота, 25 Июль, 2009 13:03 ]
Заголовок сообщения:  Re: Плоская модель модуля: аргументы за и против

GUEST писал(а):
igor писал(а):
И пусть меня забросают тухлыми помидорами, но я готов подписаться под этим правилом.
Под каким?
Я имел в виду правило: "Процедуры не могут быть вложенными" (см. название темы)

Страница 1 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/