Re[38]: RAII и исключения в конструкторе
От: so5team https://stiffstream.com
Дата: 10.07.20 05:17
Оценка:
Здравствуйте, a7d3, Вы писали:

S>>Возможно, вы не можете пережить того, что не в состоянии предметно возразить какому-то колхознику из болот Полесья.


A>Колхозник в данном случае упорно отказывается понять разницу между параллелограммом и прямоугольником, заявляя, что это одно и то же. А так же, что он и трапецию готов называть прямоугольником, ведь у неё столько же сторон и углов.

A>Лениво ему быть аккуратным в терминологии, держа в голове какие-то там эти все нафиг никому не нужные тонкости с нюансами. Даже когда предлагают перейти на использование термина «четырёхугольник», то всё равно пытается всех вокруг дерьмом полить.

Отличная наглядная демонстрация вашей неспособности возражать предметно.

Ибо возражая предметно вы бы могли сказать "стиль программирования -- это..., а парадигма программирования -- это..., исходя из чего стиль != парадигме".

Ну или вы могли вместо цитирования используемых вами (а это важно, т.к. используемые вами вовсе не обязательно окажутся общепринятыми, или хотя бы более-менее известными) определений вы могли бы дать ссылки на эти самые определения в других источниках.

Вот тогда бы было предметное возражение.

Но нет, вы не можете. Вы порождаете какой-то мутный поток собственных оценочных суждений, который отражает только бардак в вашей голове, а отнюдь не позицию вашего собеседника.

И так во всем споре. Особенно умиляет ваша позиция "я верю в некую неведомую ерунду, а вы мне покажите, где написано, что этой неведомой ерунды быть не может, но при этом ссылаться на авторитетов смешно". Это ведь игра, в которую можно играть вдвоем. Некто a7d3 может пить коньяк по утрам, а вечерам обнюхается кокаина и смотрит детское порно. И пусть мне приведут источники, в которых написано, что этого не может быть.
Re[12]: RAII и исключения в конструкторе
От: so5team https://stiffstream.com
Дата: 10.07.20 05:37
Оценка: +1
Здравствуйте, Maniacal, Вы писали:

M> Но идея кидания исключений в недостроенном конструкторе интересна. Когда нет try-catch-finally (как в java) особенно. Каждый раз велосипед.


Никаких велосипедов. Рекомендации по комфортной работе в этих условиях были даны еще в 1990-х: списки инициализации вместо ручного присваивания значений в конструкторе, индивидуальные RAII обертки для каждого подлежащего освобождению ресурса вместо ручной очистки ресурсов в деструкторе (что тут во множестве адекватных комментариев ТС-у и советуют).

Как за 20 лет стажа не узнать об этих рекомендациях...
Re[12]: RAII и исключения в конструкторе
От: wander  
Дата: 10.07.20 06:48
Оценка:
Здравствуйте, Maniacal, Вы писали:

M>тут всё гораздо проще. Вся архитектура строится или на возвратах кода ошибки или на эксепшенах.


Вообще мой комментарий касался высказывания о моветоне и сделанных из этого выводов.
То, что, разумеется, при определенных стратегиях разработки некоторые инструменты могут не понадобиться или даже мешать, — это отдельный вопрос.

M>Но идея кидания исключений в недостроенном конструкторе интересна. Когда нет try-catch-finally (как в java) особенно. Каждый раз велосипед.


finally в С++ не нужен именно из-за RAII и деструкторов.
Re[12]: RAII и исключения в конструкторе
От: YuriV  
Дата: 10.07.20 08:53
Оценка:
Здравствуйте, Maniacal, Вы писали:

M>.... Когда нет try-catch-finally (как в java) особенно. Каждый раз велосипед.


Какой велосипед? Это здравое разделение ответственности. Воплощение SRP в области управления ресурсами. А делегированный конструктор — средство языка, позволяющее воспользоваться стандартной схемой управления ресурсами — RAII.
Re[39]: RAII и исключения в конструкторе
От: a7d3  
Дата: 11.07.20 07:11
Оценка: :))
Здравствуйте, so5team, Вы писали:

S>Отличная наглядная демонстрация вашей неспособности возражать предметно.


Бесполезно вести диалог с человеком, который начинает «подгонять» определения, потому что спорил о парадигмах программирования, облажался несколько раз, но очень хочет отстоять собственную точку.

Если вы еще не в курсе, сами по себе "парадигмы" -- это как раз из категории "давно и широко известных вещей", т.к. парадигма -- это не свод строго проверяемых математически выверенных абстракций. А некий устоявшийся в сообществе набор взглядов. Сам факт фиксации этого набора взглядов в Wikipedia может считаться достаточным для того, чтобы считать GP именно что парадигмой.

Это уже «клиника», однозначно. Того разряда, когда солипсизм является симптомом.
Re[12]: RAII и исключения в конструкторе
От: _NN_ www.nemerleweb.com
Дата: 11.07.20 07:29
Оценка:
Здравствуйте, Maniacal, Вы писали:

M>Здравствуйте, wander, Вы писали:


W>>Тут не что-то подобное? Может ну его этот стаж-то, может просто разобраться в теме надо, а не слепо верить установкам 20-летней давности?


M>тут всё гораздо проще. Вся архитектура строится или на возвратах кода ошибки или на эксепшенах. В первом случае идея с эксепшенами в конструкторе проваливается с самого начала. Конструктор не возвращает кода. Думаю, тут прикладная проблема миграции кода на ООП. Но идея кидания исключений в недостроенном конструкторе интересна. Когда нет try-catch-finally (как в java) особенно. Каждый раз велосипед.


Я не припомню когда в последний раз нужен был finally.
Всё обычно решается через try with resource в Java или using в C#.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[40]: RAII и исключения в конструкторе
От: so5team https://stiffstream.com
Дата: 11.07.20 07:38
Оценка:
Здравствуйте, a7d3, Вы писали:

A>

A>Если вы еще не в курсе, сами по себе "парадигмы" -- это как раз из категории "давно и широко известных вещей", т.к. парадигма -- это не свод строго проверяемых математически выверенных абстракций. А некий устоявшийся в сообществе набор взглядов. Сам факт фиксации этого набора взглядов в Wikipedia может считаться достаточным для того, чтобы считать GP именно что парадигмой.

A>Это уже «клиника», однозначно. Того разряда, когда солипсизм является симптомом.

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

Но вы и этого не смогли.

Ожидаемо.
Re[13]: RAII и исключения в конструкторе
От: Maniacal Россия  
Дата: 11.07.20 08:07
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Я не припомню когда в последний раз нужен был finally.

_NN>Всё обычно решается через try with resource в Java или using в C#.

На Java писал (по работе) последний раз в 2000 году, возможно, тогда таких конструкций в языке ещё не было. На C# пока писать не приходилось, но про using читал.
Но я уже понял, что ляпнул не подумавши. Смешал две вещи. Что не стоит использовать указатель this в конструкторе C++ (особенно в списке инициализации), ибо непредвиденный результат, в зависимости от реализации компилятора, и подход, когда код всегда возвращает код ошибки, а не бросает исключения (тут не надо быть капитаном очевидность, чтобы понять, что при таком подходе об исключениях речи идти не может, а конструктор это функция, которая ничего возвращать не должна, по-хорошему, но и тут есть нюансы).
Re[41]: RAII и исключения в конструкторе
От: a7d3  
Дата: 11.07.20 08:28
Оценка:
Здравствуйте, so5team, Вы писали:

S>Для того, чтобы доказать, что это "клиника" и "солипсизм" следовало бы хотя бы привести ссылку на определение понятия "парадигма программирования", которого вы сами придерживаетесь (можно даже не обсуждать вопрос адекватности этого определения).

S>Но вы и этого не смогли.
S>Ожидаемо.

Важен сам факт того, что человек, испробовав ряд приёмов для защиты своего мировоззрения, так и не остановился, а пробил дно —дойдя уже до «подгонки» определений.
Очень странно выглядит, когда человек пытается в сфере программной инженерии разгуливать с определением парадигмы из научного мира. Игнорируя всю нелепость ситуации лишь потому, что это позволяет ему отстоять или как-то оправдать свою точку зрения.

Ни разу не похоже это всё на попытку сбросить накопившийся контекст и вести диалог уже в русле споров о терминах с определениях.
Re[42]: RAII и исключения в конструкторе
От: C0x  
Дата: 11.07.20 08:36
Оценка: +2
Здравствуйте, a7d3, Вы писали:

A>Здравствуйте, so5team, Вы писали:


S>>Для того, чтобы доказать, что это "клиника" и "солипсизм" следовало бы хотя бы привести ссылку на определение понятия "парадигма программирования", которого вы сами придерживаетесь (можно даже не обсуждать вопрос адекватности этого определения).

S>>Но вы и этого не смогли.
S>>Ожидаемо.


A>Очень странно выглядит, когда человек пытается в сфере программной инженерии разгуливать с определением парадигмы из научного мира.


Странно это когда человек отрицает одно определение и не приводит другое, при этом продолжая рассуждать о сферических конях в вакууме.
Re[42]: RAII и исключения в конструкторе
От: so5team https://stiffstream.com
Дата: 11.07.20 08:45
Оценка:
Здравствуйте, a7d3, Вы писали:

A>Очень странно выглядит, когда человек пытается в сфере программной инженерии разгуливать с определением парадигмы из научного мира.


Вас ведь не затруднит указать на хоть какое-либо определение парадигмы, которое я здесь привел? Хоть из научного мира, хоть из ненаучного.

А то вы утверждаете про "разгуливать с определением парадигмы из научного мира", хотя я лично ни одного определения для "парадигмы" пока здесь не озвучивал и ни на какие определения не ссылался.
Re[43]: RAII и исключения в конструкторе
От: a7d3  
Дата: 11.07.20 09:28
Оценка:
Здравствуйте, so5team, Вы писали:

S>Здравствуйте, a7d3, Вы писали:


A>>Очень странно выглядит, когда человек пытается в сфере программной инженерии разгуливать с определением парадигмы из научного мира.


S>Вас ведь не затруднит указать на хоть какое-либо определение парадигмы, которое я здесь привел? Хоть из научного мира, хоть из ненаучного.


S>А то вы утверждаете про "разгуливать с определением парадигмы из научного мира", хотя я лично ни одного определения для "парадигмы" пока здесь не озвучивал и ни на какие определения не ссылался.


А вот это что было?

...сами по себе "парадигмы" -- это как раз из категории "давно и широко известных вещей", т.к. парадигма -- это не свод строго проверяемых математически выверенных абстракций. А некий устоявшийся в сообществе набор взглядов. ...

Очень напоминает пересказ своими словами классического варианта определения парадигмы принятое в научном мире. Взятый с какой-нибудь википедии или другого схожего ресурса.
Re[44]: RAII и исключения в конструкторе
От: so5team https://stiffstream.com
Дата: 11.07.20 09:33
Оценка:
Здравствуйте, a7d3, Вы писали:

S>>А то вы утверждаете про "разгуливать с определением парадигмы из научного мира", хотя я лично ни одного определения для "парадигмы" пока здесь не озвучивал и ни на какие определения не ссылался.


A>А вот это что было?

A>

A>...сами по себе "парадигмы" -- это как раз из категории "давно и широко известных вещей", т.к. парадигма -- это не свод строго проверяемых математически выверенных абстракций. А некий устоявшийся в сообществе набор взглядов. ...

A>Очень напоминает пересказ своими словами классического варианта определения парадигмы принятое в научном мире. Взятый с какой-нибудь википедии или другого схожего ресурса.

Попытка объяснить чем "парадигма" не является, ваш К.О.

Под определение, с очень большой натяжкой, может сойти разве что вот эта часть фразы "А некий устоявшийся в сообществе набор взглядов". Но если для вас это сошло за определение, то: во-первых, ой, все еще хуже, чем я думал, и, во-вторых, вы-то и отдаленно чего-либо похожего привести не можете.
Re[6]: RAII и исключения в конструкторе
От: rg45 СССР  
Дата: 11.07.20 10:25
Оценка:
Здравствуйте, Maniacal, Вы писали:

M>Есть такая книжка хорошая, только не помню как называется, что-то типа "С++ для профессионалов", что-то то там про количество советов было в названии.

M>Конструктор не должен бросать исключений принципиально.

Книжка эта называется Стандарты программирования на C++. 101 Правило и рекомендация.. И речь в ней идет не о конструкторах, а о деструкторах: 51. Деструкторы, функции освобождения ресурсов и обмена не ошибаются.

Для конструктора же бросок исключения — самый естественный способ сообщить о невозможности конструирования объекта (аутпут параметры я даже рассматривать не хочу). Даже оператор new обязан подчистить за собой выделенную память, если в конструкторе возникло исключение. Это в стандарте прописано. Стандарт так же описывает, что должно происходить при броске исключения из конструкторов подобъектов составных типов — те подобъекты, которые сконструированы на этот момент, должны быть корректно разрушены, причем, в строго определенном порядке. Смотри, сколько всего предусмотрено, а ты говоришь "не должен бросать принципиально". Ты, видимо, просто перепутал конструкторы с деструкторами.
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 11.07.2020 10:44 rg45 . Предыдущая версия . Еще …
Отредактировано 11.07.2020 10:33 rg45 . Предыдущая версия .
Отредактировано 11.07.2020 10:32 rg45 . Предыдущая версия .
Re[45]: RAII и исключения в конструкторе
От: a7d3  
Дата: 11.07.20 13:23
Оценка: :))
Здравствуйте, so5team, Вы писали:

S>Попытка объяснить чем "парадигма" не является, ваш К.О.


S>Под определение, с очень большой натяжкой, может сойти разве что вот эта часть фразы "А некий устоявшийся в сообществе набор взглядов". Но если для вас это сошло за определение, то: во-первых, ой, все еще хуже, чем я думал, и, во-вторых, вы-то и отдаленно чего-либо похожего привести не можете.


Идея в том, чтобы посмотреть на разницу парадигмы в научном мире с парадигмой программирования в инженерии программной.
И растёт это всё из случившейся ранее попытки объявить стиль программирования синонимом парадигмы программирования.
Re[46]: RAII и исключения в конструкторе
От: so5team https://stiffstream.com
Дата: 11.07.20 13:35
Оценка:
Здравствуйте, a7d3, Вы писали:

S>>Под определение, с очень большой натяжкой, может сойти разве что вот эта часть фразы "А некий устоявшийся в сообществе набор взглядов". Но если для вас это сошло за определение, то: во-первых, ой, все еще хуже, чем я думал, и, во-вторых, вы-то и отдаленно чего-либо похожего привести не можете.


A>Идея в том, чтобы посмотреть на разницу парадигмы в научном мире с парадигмой программирования в инженерии программной.

A>И растёт это всё из случившейся ранее попытки объявить стиль программирования синонимом парадигмы программирования.

"Если у вас есть идея, то купите селедку и морочьте ей голову" (c)

А если вы хотите предъявить что-то мне, то озвучивайте причины, почему в вашем мире, настолько оторванном от реальности, что аж страшно, "стиль программирования" не может быть синонимом "парадигмы программирования". Для чего вам придется либо озвучить свои определения, либо дать на них ссылки. О чем вам толкуют уже в который раз.
Re[47]: RAII и исключения в конструкторе
От: a7d3  
Дата: 11.07.20 18:54
Оценка: :)
Здравствуйте, so5team, Вы писали:

S>"Если у вас есть идея, то купите селедку и морочьте ей голову" (c)


S>А если вы хотите предъявить что-то мне, то озвучивайте причины, почему в вашем мире, настолько оторванном от реальности, что аж страшно, "стиль программирования" не может быть синонимом "парадигмы программирования". Для чего вам придется либо озвучить свои определения, либо дать на них ссылки. О чем вам толкуют уже в который раз.


С какой целью? Чтобы общаться на одном языке с колхозником, показавшим себя во всей красе в этом тредике?
Спасибо, не интересно. Пусть дальше полагает, что единственно верный полиморфизм в контексте ООП сводится late & dynamic binding.
Что какая-нибудь двойная диспетчеризации может производиться лишь в рантайме, а если в компил-тайме, то это, якобы, уже не ООП.
Re[48]: RAII и исключения в конструкторе
От: so5team https://stiffstream.com
Дата: 11.07.20 19:04
Оценка:
Здравствуйте, a7d3, Вы писали:

A>Спасибо, не интересно.


Не интересно учиться и узнавать что-то новое? Обмениваться знаниями? Ну бывает. Когда думаешь, что за спиной 25 лет опыта, то можно и разучиться новую информацию воспринимать.

A>Пусть дальше полагает, что единственно верный полиморфизм в контексте ООП сводится late & dynamic binding.


Речь не про верный/неверный. А про то, что когда динамический полиморфизм, то это ООП. А другие случаи -- не ООП.

Всего лишь.

И да, сколько вы не будете пытаться надувать щеки, обосновать свою точку зрения у вас не выйдет. Многократо доказано и перепровенено.
Re[48]: RAII и исключения в конструкторе
От: C0x  
Дата: 11.07.20 19:45
Оценка:
Здравствуйте, a7d3, Вы писали:

A>Здравствуйте, so5team, Вы писали:


S>>"Если у вас есть идея, то купите селедку и морочьте ей голову" (c)


S>>А если вы хотите предъявить что-то мне, то озвучивайте причины, почему в вашем мире, настолько оторванном от реальности, что аж страшно, "стиль программирования" не может быть синонимом "парадигмы программирования". Для чего вам придется либо озвучить свои определения, либо дать на них ссылки. О чем вам толкуют уже в который раз.


A>С какой целью? Чтобы общаться на одном языке с "колхозником"


У тебя какой-то комплекс на тематике колхоза. Тяжелая деревенская жизнь? В школе били часто?
Re[48]: RAII и исключения в конструкторе
От: C0x  
Дата: 11.07.20 20:07
Оценка:
Здравствуйте, a7d3, Вы писали:

A>Здравствуйте, so5team, Вы писали:


S>>"Если у вас есть идея, то купите селедку и морочьте ей голову" (c)


S>>А если вы хотите предъявить что-то мне, то озвучивайте причины, почему в вашем мире, настолько оторванном от реальности, что аж страшно, "стиль программирования" не может быть синонимом "парадигмы программирования". Для чего вам придется либо озвучить свои определения, либо дать на них ссылки. О чем вам толкуют уже в который раз.


A>С какой целью? Чтобы общаться на одном языке с колхозником, показавшим себя во всей красе в этом тредике?

A>Спасибо, не интересно. Пусть дальше полагает, что единственно верный полиморфизм в контексте ООП сводится late & dynamic binding.

Проведу сеанс снятия запоров ограничений в понимании ООП и полиморфизма.

Внимание! Следи за руками:

Чаще всего выделяют следующие необходимые и достаточные элементы ООП:
1) инкапсуляция;
2) наследование;
3) полиморфизм.

Реазация динамического полиморфизма подразумевает Наследование. Именно поэтому её и только её относят к ООП парадигме.

А теперь смотри фокус. Пример "статического полиморфизма"

template<class T>
struct A
{
  void foo(T t)
  {
    ...
    t.do();
    ...
  }
} 

struct B
{
  void do()
  {...}
}

int main()
{
  A<B> a;
  a.foo(B());
  ...
  
 ...
}


Теперь вопрос: этот код можно назвать кодом в классической ООП парадигме?

"Ну как тебе такое Илон Маск"(c)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.