Павел Остапенко @mt_
User
Information
- Rating
- Does not participate
- Location
- Москва и Московская обл., Россия
- Registered
- Activity
Specialization
Chief Technology Officer (CTO)
Optimization of business processes
Development management
Mentoring
FullStack
Agile
Далее. Турбина даёт 6 МВт мощности. Но реальная мощность будет постоянно «гулять». Каким образом энергосеть будет в реальном режиме времени, 24 часа в сутки, компенсировать постоянные перекосы в мощности разных ветвей системы? И что будет, когда таких турбин в энергосистеме будет хотя бы 25%-35%? Насколько повысится стоимость такой энергосистемы хотя бы в масштабах города?
Если же эту методику объединить с упомянутой в статье идеей строгой инкапсуляции, то в большинстве случаев и эта проблема будет решена. Строгая инкапсуляция говорит о том, что объект передаёт указатели на свои члены в ходе исполнения своих функций-членов. То есть, вне жизни объекта, доступа к указателям на его члены просто не будет, ещё на этапе компиляции.
Возможно, мой дзен проектирования не так крут, поэтому в сложных динамических случаях я пару раз сталкивался с необходимостью передавать указатель на объект, не имея возможности гарантировать его существования в момент, когда (отложенный) обрабатывающий код будет выполнен. В этих случаях я пользовался штатным классом фреймворка, который по сути представляет собой вариант умного указателя, который обнуляет внутренний указатель при вызове деструктора объекта. Вполне допускаю, что возможно более правильно спроектировать систему, чтобы умные указатели не были нужны даже в этом случае.
Сейчас, даже если изобретёшь машину времени, нужно будет привлечь инвесторов и вложить солидные бюджеты на рекламу и выход на рынок.
Что конкретно нужно? Чтобы было совсем просто, без обратной связи? Уберите всю лишнее, а промежуточные данные дайте менеджеру в массив (можно ассоциативный). Это будет 7 строчек.
Чем это будет сложнее вашего кода?
Тогда покажите, упрощённо, что есть у вас, чтобы можно было сравнить.
Что касается Явы, то я отлично помню и захватил её зарождение. К моменту выхода JDK 1.2, у меня как раз появилась возможность сравнить её с С++. Хвалёная стабильность, которую якобы должны были обеспечить счётчики ссылок и мусоросборщик, на деле оказалась если и не маркетинговым ходом, то, будем более осторожны, решением, работающим далеко не всегда.
Потом я попал в одну достаточно крупную контору, затем другую — и там с головой окунулся с большие проекты на умных указателях. Довольно скоро выяснилось, что в сложных случаях они не только вызывают известные проблемы — это ещё пол беды. Самое неприятное, что эти ситуации оказывалось очень сложно повторить, а значит отладить. Так, на западе уже достаточно давно и правильно считают, что умные указатели — вовсе не «серебряная пуля», как это принято считать у некоторых.
Если Вы всё ещё верите в умные указатели, верите, что они изолируют Вас от реальной сложности динамических сценариев, которые возникают в крупных, запутанных логически и существенно многопоточных приложениях — за Вас можно только порадоваться.
Мой опыт говорит о том, что кроме некоторых специальных случаев, умные указатели проигрывают как в производительности, так и в ряде других моментов по отношению к более детерминированным системам.
Но это моё мнение, мой опыт и тот подход, который я предлагаю.
Не понял по поводу контейнеров со счётчиком ссылок. Вы точно читали статью?
А вопросы мои к вам всё ещё актуальны. Не ответив на них, обосновать объективную необходимость применения вашего велосипеда, вам будет трудновато. Но я всё ещё надеюсь получить от вас серьёзные, респектабельные ответы.
Наконец, зачем проблемы циклических ссылок, микширования с обычными указателями?
Зачем отказываться от детерминированности этапа уничтожения объектов, особенно в случаях, когда нужно гарантировать определённый порядок их уничтожения (опять же исходя из семантики отношений)?
Пожалуйста, приведите конкретный пример из практики, где, по-вашему, этот подход не работает. Постараюсь ответить.