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/ |