Re: Перегрузка == героин?
От: jazzer Россия Skype: enerjazzer
Дата: 09.08.05 19:40
Оценка: 7 (1) +3
Здравствуйте, Курилка, Вы писали:

К>Собственно хотелось бы обсудить вот эту статью — автор утверждает, что перегрузка (операторов/функций) увеличивает сложность программ и понижает их читаемость. Критикуются плюсы с их довольно обширными правилами приведения типов и пр.


Мне понравился список литературы :)

А статья, на мой взгляд, абсолютно пустая и времени, на нее потраченного, не стоит
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[34]: No String Builder
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.08.05 19:50
Оценка:
Здравствуйте, adontz, Вы писали:

A>А это в главном меню студии.


А... Ну, тогда на будующее знай, что дизасемблированный код полученный из под отладчика и исполняемый в релизе без отладчика (это очень важно!) — это, порой, совсем разный код. Разника как в С++ в дебаге и релизе.

A>>> Для того чтобы поглядеть в релизе надо unmanaged debugging включить.

VD>>В чем? И зачем?

A>Влад, ты конечно извини, но твои вопросы вызывают во мне подозрения. Ты хоть раз отладкой занимался?


Клинический случай. Ты даже не понимашь когда над тобой стебаются.

Твои слова "Для того чтобы поглядеть в релизе надо unmanaged debugging включить." — это полная глупость. Если тебе действительно интересно как полгядеть код в релизе, то смотри: Re[33]: No String Builder
Автор: VladD2
Дата: 09.08.05
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[32]: No String Builder
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.08.05 19:50
Оценка:
Здравствуйте, adontz, Вы писали:

VD>>Ой, а может поделишся как ты это делашь?


A>Выбираю в меню стулии Debug\Start включив до того Native Code Debugging.


Так между прочим... Знай, что "включив до того Native Code Debugging" полная глупость. "Native Code Debugging" — это возможность отлаживать не управляемый код. Например, если пишешь на МС++ или нужно отладить КОМ-сервер/ДЛЛ. А "Выбираю в меню стулии Debug\Start" не полная, но с большой вероятностью даст совсем не тор результат что будет в релизе без отладчика.

A> Что-то я не понял чему ты так удивляешь. Как будто отладкой никогда не занимался


Тому с кокой уверенностью ты говоришь о вещах в которых не разобрался.
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[27]: No String Builder
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.08.05 19:50
Оценка:
Здравствуйте, adontz, Вы писали:

A>Да нет, я понял о чём я говорил и это не совсем то о чём говорил ты. Вобщем код ниже аналогичен использованию StringBuilder.Append гораздо медленнее его, не оптимизируется никаким C# компилятором и может быть оптимизирован за счёт перегрузки операторов (без изменения того куска кода который я привёл, разве что тип будет уже не string).

A>
A>string a = "qwerty";
A>a += "asdfgh";
A>a += "asdfgh";
A>a += "asdfgh";
A>a += "asdfgh";
A>


A>Возражения есть?


Нет. На этот раз никаких. А что?
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[28]: No String Builder
От: adontz Грузия http://adontz.wordpress.com/
Дата: 09.08.05 19:53
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>Нет. На этот раз никаких. А что?


Я счастлив
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[35]: No String Builder
От: adontz Грузия http://adontz.wordpress.com/
Дата: 09.08.05 19:54
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>А... Ну, тогда на будующее знай, что дизасемблированный код полученный из под отладчика и исполняемый в релизе без отладчика (это очень важно!) — это, порой, совсем разный код. Разника как в С++ в дебаге и релизе.


А код релиза исполняемого просто так и релиза исполняемого под отладчиком различаются?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: Перегрузка == героин?
От: Maxim S. Shatskih Россия  
Дата: 09.08.05 22:27
Оценка:
Правильно все он пишет ИМХО. Сам такую же точно статью писал, но по-русски.

К>Собственно хотелось бы обсудить вот эту статью — автор утверждает, что перегрузка (операторов/функций) увеличивает сложность программ и понижает их читаемость. Критикуются плюсы с их довольно обширными правилами приведения типов и пр.
Занимайтесь LoveCraftом, а не WarCraftом!
Re[2]: Перегрузка == героин?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 09.08.05 22:36
Оценка: +1
Здравствуйте, Maxim S. Shatskih, Вы писали:

MSS>Правильно все он пишет ИМХО. Сам такую же точно статью писал, но по-русски.


Да? Ну-ка покажи!
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[11]: Перегрузка == героин?
От: Шахтер Интернет  
Дата: 09.08.05 23:45
Оценка: 1 (1) +2
Здравствуйте, Quintanar, Вы писали:

Q>Здравствуйте, Геннадий Васильев, Вы писали:


ГВ>>Мне не мешает управление памятью. Наоборот — красивое решение содержит в себе элегантное управление памятью (вернее — жизненным циклом объектов, а не памятью как таковой) как неотъемлемую часть. И не надо сравнивать с математикой — любая формула из ВМ включает в себя элементарные операции сложения/умножения.


Q>Если бы каждый элегантно разрабатывал бы болты под себя, а не пользовался набором стандартных, то цивилизации не существовало бы.


Наоборот, все мы сейчас обсуждали бы превосходства стандартного хвоста вися на дереве.

Q>Конструктор может позволить себе не заниматься такими мелочами, а сконцентрироваться на машине в целом.


Неверно. Нет такой вещи -- машина в целом. Это только на картинке у художника так бывает. В инженерии целое есть сумма составных частей и качество этого целого определяется качеством каждого элемента, даже самого маленького.
Впрочем, у хорошего художника значение имеет даже маленькое колечко...
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[12]: Перегрузка == героин?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 10.08.05 00:17
Оценка:
Здравствуйте, Шахтер, Вы писали:

Q>>Конструктор может позволить себе не заниматься такими мелочами, а сконцентрироваться на машине в целом.

Ш>Неверно. Нет такой вещи -- машина в целом. Это только на картинке у художника так бывает. В инженерии целое есть сумма составных частей и качество этого целого определяется качеством каждого элемента, даже самого маленького.


Угу. И для каждого нового автомобиля заново придумывают болты и гайки? Гы-гы.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[13]: Перегрузка == героин?
От: Шахтер Интернет  
Дата: 10.08.05 01:49
Оценка:
Здравствуйте, adontz, Вы писали:

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


Q>>>Конструктор может позволить себе не заниматься такими мелочами, а сконцентрироваться на машине в целом.

Ш>>Неверно. Нет такой вещи -- машина в целом. Это только на картинке у художника так бывает. В инженерии целое есть сумма составных частей и качество этого целого определяется качеством каждого элемента, даже самого маленького.


A>Угу. И для каждого нового автомобиля заново придумывают болты и гайки? Гы-гы.


Автомобили бывают разные. Очень разные.
И болты и гайки тоже, между прочим.
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[13]: Перегрузка == героин?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 10.08.05 06:57
Оценка:
Здравствуйте, VladD2, Вы писали:

ANS>>Хороша ж конкатенация:

ANS>>
ANS>>C:\...crosoft SQL Server\80\Tools\Binn>OSQL.EXE -U sa
ANS>>Password:
1>>> SELECT 12 + '13';
2>>> go

ANS>> -----------
ANS>>          25
ANS>>


VD>Так ты строки складывай и будет тебе щастье. А не проверяй как привдения типов делаются.


Демонстрация потенциального источника ошибок. Как и C с адресной арифметикой. Этот аргумент тебе знаком?
... << RSDN@Home 1.1.4 stable rev. 510>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[14]: Перегрузка == героин?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 10.08.05 07:45
Оценка: +1
Здравствуйте, Шахтер, Вы писали:

Q>>>>Конструктор может позволить себе не заниматься такими мелочами, а сконцентрироваться на машине в целом.

Ш>>>Неверно. Нет такой вещи -- машина в целом. Это только на картинке у художника так бывает. В инженерии целое есть сумма составных частей и качество этого целого определяется качеством каждого элемента, даже самого маленького.
A>>Угу. И для каждого нового автомобиля заново придумывают болты и гайки? Гы-гы.
Ш>Автомобили бывают разные. Очень разные.
Ш>И болты и гайки тоже, между прочим.

Вот в том-то всё и дело, что очень разные автомобили собираются из одинаковых болтов и шает. К твоему сведенью, кроме формы корпуса и внутренней отделки ничего особо уникального в автомобилях нету — двигатель, тормоза, аммортизаторы, колёса можно увидеть и на других моделях.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[36]: No String Builder
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.08.05 08:39
Оценка:
Здравствуйте, adontz, Вы писали:

A>А код релиза исполняемого просто так и релиза исполняемого под отладчиком различаются?


Да. В частности инлайнинг под отладчиком не делается.
... << RSDN@Home 1.2.0 alpha rev. 599>>
AVK Blog
Re[36]: No String Builder
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.08.05 09:05
Оценка:
Здравствуйте, adontz, Вы писали:

A>А код релиза исполняемого просто так и релиза исполняемого под отладчиком различаются?


Да. У джита есть опция JitOptimizations при запуске под отладчиком она автоматически выставляется в 0 (т.е. выключается). Даже при старте под управлением cordbg она выключена. Но в cordbg ее можно включить перед запуском приложения. При "JitOptimizations=0" код мало чем отличается от дебажного. Если бы ты прочел внимательно это
Автор: VladD2
Дата: 09.08.05
, то глядишь вместо улыбки появилось бы некоторое понимание вопроса.
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: Перегрузка == героин?
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.08.05 09:05
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Демонстрация потенциального источника ошибок. Как и C с адресной арифметикой. Этот аргумент тебе знаком?


Ты путашь мякое с теплым. Ты продемонстрировал некотороую опасность автоматического приведения типов. И к оператору сложения строк это отношения не имеет. Так что твое подмигивание больше похоже на нервный тик.
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: Перегрузка == героин?
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 10.08.05 09:42
Оценка: 1 (1) +2 :)
Здравствуйте, VladD2, Вы писали:

VD>Ты путашь мякое с теплым. Ты продемонстрировал некотороую опасность автоматического приведения типов. И к оператору сложения строк это отношения не имеет. Так что твое подмигивание больше похоже на нервный тик.


Однако ж, проще верблюда протолкнуть сквозь игольное ушко, чем тебе доказать хоть что нибудь.
... << RSDN@Home 1.1.4 stable rev. 510>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[15]: Перегрузка == героин?
От: Курилка Россия http://kirya.narod.ru/
Дата: 10.08.05 09:47
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Andrei N.Sobchuck, Вы писали:


ANS>>Демонстрация потенциального источника ошибок. Как и C с адресной арифметикой. Этот аргумент тебе знаком?


VD>Ты путашь мякое с теплым. Ты продемонстрировал некотороую опасность автоматического приведения типов. И к оператору сложения строк это отношения не имеет. Так что твое подмигивание больше похоже на нервный тик.


Возвращаясь к исходной статье, хоть она и не очень корректна, но доля правды там есть. Так вот, там говорится, что перегрузка как раз неявными автоматическими приведениями типов и опасна, т.е. такими ситуациями, когда программист затрудняется сказать, какая именно реализация оператора/функции из энного числа имеющихся будет использована. Как раз это и показал тебе Андрей
Re[3]: Перегрузка == героин?
От: VladGal  
Дата: 10.08.05 09:53
Оценка:
Здравствуйте, Курилка, Вы писали:

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


VG>>Ага, а шаблоны (templates) — LSD 25. Всё это беспочвенные теоретические рассуждения, причём автор статьи похоже не знаком с вопросом


К>Факты?

>>In general, overloading means that a function name or an operator has two or more distinct meanings.
>>When you use it, the types of its operands are used by the language to determine which meaning should apply
Чем не факт?
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[4]: Перегрузка == героин?
От: Курилка Россия http://kirya.narod.ru/
Дата: 10.08.05 10:02
Оценка:
Здравствуйте, VladGal, Вы писали:

VG>Здравствуйте, Курилка, Вы писали:


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


VG>>>Ага, а шаблоны (templates) — LSD 25. Всё это беспочвенные теоретические рассуждения, причём автор статьи похоже не знаком с вопросом


К>>Факты?

>>>In general, overloading means that a function name or an operator has two or more distinct meanings.
>>>When you use it, the types of its operands are used by the language to determine which meaning should apply
VG>Чем не факт?

И? Хочешь сказать это не верно? В чём на твой взгляд ошибка?
Возьмём к примеру тот же "+", который тут обсуждали — существует далеко не 1 вариант оператора и выбираемый определяется типом аргументов, т.е. для int это будет просто сложение, тогда как для std::string парой ассемблерных комманд скорее всего не обойдёшься, про вектора и матрицы я молчу...
Так где твои факты? И кто не знаком с вопросом — тут ещё можно поспорить.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.