Информация об изменениях

Сообщение Re: C++'s lack of a module system от 17.05.2018 7:50

Изменено 17.05.2018 8:08 AlexGin

Re: C++'s lack of a module system
Здравствуйте, Максим Рогожин, Вы писали:

МР>Привет!


МР>Объясните, пожалуйста, в чем выражается эта нехватка модульной системы в C++? Все классы в отдельных единицах трансляции обычно находятся. Чего не хватает?


Выскажу своими словами мой взгляд на проблему:

Когда у тебя C++ ный проект разростается и перестаёт быть малениким, ты задумываешся о том, что хорошо бы его разделить на некоторые части, при этом очень важно, чтобы данные части были максимально независимы (даже на случай повторного применения). При этом, желательно чтобы эти части имели некоторый законченный вид и могли бы передаваться между разработчиками.
И тут — тебя ждут пляски с бубнами

Для сравнения — если у тебя проект на C#, то этот самый момент является достаточно простым и безболезнынным (скорее даже тривиальным).

P.S. Тот факт, что классы — это отдельные единицы трансляци, не мешает пониманию того, что иногда несколько таких классов требуется
объединить в одну сущность — например: для подсистемы обеспечения работы с Базой Данных.
При этом, важно понимать, что сегодня — твой проект маленький и ты вполне обходишься применением в качестве (например) СУБД MySQL.

Завтра,по мере развития проекта и увеличения базы данных, встанет ворпос о переходе — например на ORACLE или MS SQL Server.
Очень важно — сделать так, чтобы изменения при переходе на более мощную СУБД коснулись ТОЛЬКО кодов работы с базой Данных!
То есть изменения в кодах работы с данными, реализующими концепцию CRUD — https://en.wikipedia.org/wiki/Create,_read,_update_and_delete для применяемой тобой СУБД, а не всего твоего проекта. Другими словами — важна независимость подсистемы БД от всего остального проекта.
Важна также и возможность абстрагирования от подсистемы БД на уровне бизнес-логики и GUI твоей программы.
Именно это обеспечивает такое понятие как "модульность".
Re: C++'s lack of a module system
Здравствуйте, Максим Рогожин, Вы писали:

МР>Привет!


МР>Объясните, пожалуйста, в чем выражается эта нехватка модульной системы в C++? Все классы в отдельных единицах трансляции обычно находятся. Чего не хватает?


Выскажу своими словами мой взгляд на проблему:

Когда у тебя C++ ный проект разростается и перестаёт быть малениким, ты задумываешся о том, что хорошо бы его разделить на некоторые части, при этом очень важно, чтобы данные части были максимально независимы (даже на случай повторного применения). При этом, желательно чтобы эти части имели некоторый законченный вид и могли бы передаваться между разработчиками.
И тут — тебя ждут пляски с бубнами

Для сравнения — если у тебя проект на C#, то этот самый момент является достаточно простым и безболезнынным (скорее даже тривиальным).

P.S. Тот факт, что классы — это отдельные единицы трансляци, не мешает пониманию того, что иногда несколько таких классов требуется
объединить в одну сущность — например: для подсистемы обеспечения работы с Базой Данных.

При этом, важно понимать, что сегодня — твой проект маленький и ты вполне обходишься применением (например) СУБД MySQL.

Завтра,по мере развития проекта и увеличения базы данных, встанет ворпос о переходе — например на ORACLE или MS SQL Server.

Очень важно — сделать так, чтобы изменения при переходе на более мощную СУБД коснулись ТОЛЬКО кодов работы с базой Данных!
То есть, изменения в кодах работы с данными, реализующими концепцию CRUD — https://en.wikipedia.org/wiki/Create,_read,_update_and_delete для применяемой тобой СУБД, а не всего твоего проекта. Другими словами — важна независимость подсистемы БД от всего остального проекта.
Важна также и возможность абстрагирования от подсистемы БД на уровне бизнес-логики и GUI твоей программы.
Именно это обеспечивает такое понятие как "модульность".