Сообщение Re: C++'s lack of a module system от 17.05.2018 7:50
Изменено 17.05.2018 7:59 AlexGin
Re: C++'s lack of a module system
Здравствуйте, Максим Рогожин, Вы писали:
МР>Привет!
МР>Объясните, пожалуйста, в чем выражается эта нехватка модульной системы в C++? Все классы в отдельных единицах трансляции обычно находятся. Чего не хватает?
Выскажу своими словами мой взгляд на проблему:
Когда у тебя C++ ный проект разростается и перестаёт быть малениким, ты задумываешся о том, что хорошо бы его разделить на некоторые части, при этом очень важно, чтобы данные части были максимально независимы (даже на случай повторного применения). При этом, желательно чтобы эти части имели некоторый законченный вид и могли бы передаваться между разработчиками.
И тут — тебя ждут пляски с бубнами
Для сравнения — если у тебя проект на C#, то этот самый момент является достаточно простым и безболезнынным (скорее даже тривиальным).
МР>Привет!
МР>Объясните, пожалуйста, в чем выражается эта нехватка модульной системы в C++? Все классы в отдельных единицах трансляции обычно находятся. Чего не хватает?
Выскажу своими словами мой взгляд на проблему:
Когда у тебя C++ ный проект разростается и перестаёт быть малениким, ты задумываешся о том, что хорошо бы его разделить на некоторые части, при этом очень важно, чтобы данные части были максимально независимы (даже на случай повторного применения). При этом, желательно чтобы эти части имели некоторый законченный вид и могли бы передаваться между разработчиками.
И тут — тебя ждут пляски с бубнами
Для сравнения — если у тебя проект на C#, то этот самый момент является достаточно простым и безболезнынным (скорее даже тривиальным).
Re: C++'s lack of a module system
Здравствуйте, Максим Рогожин, Вы писали:
МР>Привет!
МР>Объясните, пожалуйста, в чем выражается эта нехватка модульной системы в C++? Все классы в отдельных единицах трансляции обычно находятся. Чего не хватает?
Выскажу своими словами мой взгляд на проблему:
Когда у тебя C++ ный проект разростается и перестаёт быть малениким, ты задумываешся о том, что хорошо бы его разделить на некоторые части, при этом очень важно, чтобы данные части были максимально независимы (даже на случай повторного применения). При этом, желательно чтобы эти части имели некоторый законченный вид и могли бы передаваться между разработчиками.
И тут — тебя ждут пляски с бубнами
Для сравнения — если у тебя проект на C#, то этот самый момент является достаточно простым и безболезнынным (скорее даже тривиальным).
P.S. Тот факт, что классы — это отдельные единицы трансляци, не мешает пониманию того, что иногда несколько таких классов требуется
объединить в одну сущность — например: для подсистемы обеспечения работы с Базой Данных.
При этом, важно понимать, что сегодня — твой проект маленький и ты вполне обходишься применением в качестве СУБД MySQL.
Завтра,по мере развития проекти и разрастания базы данных, встанет ворпос о переходе — например на ORACLE или MS SQL Server.
Очень важно — сделать так, чтобы изменения при переходе на более мощную СУБД коснулись ТОЛЬКО кодов работы с базой Данных,
а не всего твоего проекта. То есть — важна независимость подсистемы БД от всего проекта.
Важна также и возможность абстрагирования от подсистемы БД на уровне бизнес-логики и GUI таоей программы.
Именно это обеспечивает такое понятие как "модульность".
МР>Привет!
МР>Объясните, пожалуйста, в чем выражается эта нехватка модульной системы в C++? Все классы в отдельных единицах трансляции обычно находятся. Чего не хватает?
Выскажу своими словами мой взгляд на проблему:
Когда у тебя C++ ный проект разростается и перестаёт быть малениким, ты задумываешся о том, что хорошо бы его разделить на некоторые части, при этом очень важно, чтобы данные части были максимально независимы (даже на случай повторного применения). При этом, желательно чтобы эти части имели некоторый законченный вид и могли бы передаваться между разработчиками.
И тут — тебя ждут пляски с бубнами
Для сравнения — если у тебя проект на C#, то этот самый момент является достаточно простым и безболезнынным (скорее даже тривиальным).
P.S. Тот факт, что классы — это отдельные единицы трансляци, не мешает пониманию того, что иногда несколько таких классов требуется
объединить в одну сущность — например: для подсистемы обеспечения работы с Базой Данных.
При этом, важно понимать, что сегодня — твой проект маленький и ты вполне обходишься применением в качестве СУБД MySQL.
Завтра,по мере развития проекти и разрастания базы данных, встанет ворпос о переходе — например на ORACLE или MS SQL Server.
Очень важно — сделать так, чтобы изменения при переходе на более мощную СУБД коснулись ТОЛЬКО кодов работы с базой Данных,
а не всего твоего проекта. То есть — важна независимость подсистемы БД от всего проекта.
Важна также и возможность абстрагирования от подсистемы БД на уровне бизнес-логики и GUI таоей программы.
Именно это обеспечивает такое понятие как "модульность".