Везде по разному может называться. По мне это инфраструктура, т.е. то, что позволяет другим слоям между собой начать взаимодействовать. Я его обычно в отдельную сборку кидаю.
Ну весь код программы логически можно разделить на несколько частей в зависимости от "ответственности" этого кода.
Эти части называются "слоями".
Я привел названия разных архитектур (Hexagonal Architecture, Clean Architecture, Domain-driven design).
Названия слоев в них немного отличаются, но суть одна и та же.
VC>main() появилась вместе с ОС и ядром ОС. VC>Тогда не было было даже ООП. VC>с тех пор место main не изменилось ни разу.
Неважно было или не было ООП. Это логическое деление кода.
Например, если код работает с пользовательским интерфейсом — это Presentation Layer, и не важно классы там или просто функции.
В бинарном виде все едино.
Функция Main() — это часть кода приложения. Поэтому она тоже находится в каком-то слое.
Здравствуйте, es3000, Вы писали:
E>А в каком слое находится функция main()?
Это, скорее, в "философию" постить надо Потому, что для практических задач необходимость прямо каждую букву кода относить к какому-то слою не существует.
Для консольных программ это, скорее, presentation.
Для остальных, которые базируются на цикле обработки сообщений, это вообще не слой, а просто launcher всего остального, которое уже разбито на слои.
V>Это, скорее, в "философию" постить надо Потому, что для практических задач необходимость прямо каждую букву кода относить к какому-то слою не существует.
Да, можно и в философию.
V> ... для практических задач необходимость прямо каждую букву кода относить к какому-то слою не существует.
Ну сознательно относить main() к какому-то коду может быть и не нужно.
Но по факту любая часть кода принадлежит какому-то слою.
Надо просто один раз и навсегда понять — к какому слою относится main(), и больше об этом не надо задумываться.
V>Для консольных программ это, скорее, presentation. V>Для остальных, которые базируются на цикле обработки сообщений, это вообще не слой, а просто launcher всего остального, которое уже разбито на слои.
А мне кажется, это самый верхний слой, который просто нигде не рисуют, ни в одной архитектуре.
Здравствуйте, es3000, Вы писали:
E>А мне кажется, это самый верхний слой, который просто нигде не рисуют, ни в одной архитектуре.
А еще не стоит разбиение на слои, превращать в само- и суперцель, как и другие вопросы, которые можно отнести к "философии программирования".
Здравствуйте, es3000, Вы писали:
E>Добрый день!
E>Я начал здесь на форуме несколько тем по разработке.
E>И в ходе обсуждения возник вопрос.
E>А в каком слое находится функция main()?
Функцция main — не более чем соответствие контракту активации. На дрегих платформах/фреймворках функции main может и не быть (например, потому что активация может быть параметризованной, как в случае с UWP).