Здравствуйте, lpd, Вы писали:
SVZ>>Короче, С++ требует более вдумчивого проектирования. Ява с Шарпом прощают больше
lpd>Ну так это недостаток С++, который и ограничивает его область применения. Скорее всего, отсутствие сборки мусора — одна из основных причин, почему из бэкенда и вытеснили С++.
Во-первых, из бэкенда С++ никто не вытеснял. Бэкенд — он разный бывает.
Есть большая ниша, где код педалить надо побыстрее, рабочая сила нужна подешевше, условия меняются, деплоить надо поскорее... а время отклика упирается во время чтения данных из СУБД.
Там рулят ява с шарпом.
lpd>Никто не хочет в большой программе при добавлении каждого нового указателя думать, а не получится ли кольцевая сылка. Зачем это?
Тут ключевое: "никто не хочет думать"

При правильно выбранной архитектуре думать не надо, делаешь по образу и подобию.
lpd>Я не особенно опытный архитектор, но как-то писал сервер для мобильных клиентов на С++, и круговые ссылки там были(умные указатели, естественно, не использовал).
Круговые ссылки ессно нужны, иначе как ты получишь доступ от дочернего объекта к родителю.
Но они не должны влиять на время жизни объектов.
lpd>Язык должен позволять выразить любую архитектуру, причем простым и удобным образом. А не требовать от разработчиков соблюдать какие-то искуственные правила, усложняя их жизнь разнообразием видов weak/shared/unique поинтеров.
Ну вообще-то не должен.
В каждом языке есть свои плюсы и минусы. Универсального всемогутора не получится. D был неплохой кандидат, но чегой-то не взлетает.
В Яве мне нравилась иммутабельность объектов и атомарность присваивания ссылок. Для многопоточного кода — просто супер.
Но зато хрен ты сделаешь cache-friendly данные. Для Явы/шарпа это будет жутким извратом, зато на С/С++ получается естественным образом.