собственно, я понимаю, что меня сейчас помидорами закидают : ), но всё-равно спрошу. человечеству нужны операторы += *= /= и так далее? и если нужны, то зачем? я, конечно, знаю кучу ответов на этот вопрос, но хотелось бы ещё мнение общественности выслушать.
Здравствуйте, vanishing, Вы писали:
V>собственно, я понимаю, что меня сейчас помидорами закидают : ), но всё-равно спрошу. человечеству нужны операторы += *= /= и так далее? и если нужны, то зачем? я, конечно, знаю кучу ответов на этот вопрос, но хотелось бы ещё мнение общественности выслушать.
в основном лень второй раз набирать
array[index] += 1; или array[index] = array[index] + 1;
Здравствуйте, vanishing, Вы писали:
V>собственно, я понимаю, что меня сейчас помидорами закидают : ), но всё-равно спрошу. человечеству нужны операторы += *= /= и так далее? и если нужны, то зачем? я, конечно, знаю кучу ответов на этот вопрос, но хотелось бы ещё мнение общественности выслушать.
Нужны. Кроме того что удобнее писать с использованием этих операторов, еще они позволяют избежать создания временного объекта и лишнего копирования. Конечно, в тривиальных случаях, например с int-ом, оптимизатор скорее всего уберет лишние операции, но надеятся что он сделает это всегда не стоит.
K>Нужны. Кроме того что удобнее писать с использованием этих операторов, еще они позволяют избежать создания временного объекта и лишнего копирования. Конечно, в тривиальных случаях, например с int-ом, оптимизатор скорее всего уберет лишние операции, но надеятся что он сделает это всегда не стоит.
на самом деле. наверное, надо немножко предистории. есть такая занятная весьма книга. hacker's delights. там изложена куча всяких интересностей о двоичной арифметике и некоторых хитростях в программировании. автор Henry Warren. судя по-всему весьма умудрённый опытом дяденька. так вот. он упорно избегает в программах использовать всякие эти += ++ -- и так далее. собственно вот это и вызвало к жизни в моём воспалённом мозге этот вопрос : ).
Здравствуйте, vanishing, Вы писали:
V>на самом деле. наверное, надо немножко предистории. есть такая занятная весьма книга. hacker's delights. там изложена куча всяких интересностей о двоичной арифметике и некоторых хитростях в программировании. автор Henry Warren. судя по-всему весьма умудрённый опытом дяденька. так вот. он упорно избегает в программах использовать всякие эти += ++ -- и так далее. собственно вот это и вызвало к жизни в моём воспалённом мозге этот вопрос : ).
А сам автор как-нибудь объясняет свою нелюбовь к этим операторам?
Здравствуйте, vanishing, Вы писали:
V>на самом деле. наверное, надо немножко предистории. есть такая занятная весьма книга. hacker's delights. там изложена куча всяких интересностей о двоичной арифметике и некоторых хитростях в программировании. автор Henry Warren. судя по-всему весьма умудрённый опытом дяденька. так вот. он упорно избегает в программах использовать всякие эти += ++ -- и так далее. собственно вот это и вызвало к жизни в моём воспалённом мозге этот вопрос : ).
Интересно, как это хакер, который должен знать асм в совершенстве, обошелся без инкрементов-декрементов :)
J>Интересно, как это хакер, который должен знать асм в совершенстве, обошелся без инкрементов-декрементов
ну : ). ирония тут неуместна. во-первых, он действительно профи. вот вы, например, знаете, как за 20 инструкций (за 20 тактов, то бишь) задом наперёд переписать 32 битовый вектор? а вот он знает. и, во-вторых, а что собственно мешает писать x = x + 1? любой вменяемый компилятор это соптимизирует. а пишет он вот так вот, примерно:
unsigned x, m;
m = 0x80000000;
x = x ^ m;
if ((int)x >= 0) {
do {
m = m >> 1;
x = x ^ m;
} while (x < m);
}
Здравствуйте, vanishing, Вы писали:
J>>Интересно, как это хакер, который должен знать асм в совершенстве, обошелся без инкрементов-декрементов V>ну : ). ирония тут неуместна. во-первых, он действительно профи. вот вы, например, знаете, как за 20 инструкций (за 20 тактов, то бишь) задом наперёд переписать 32 битовый вектор? а вот он знает. и, во-вторых, а что собственно мешает писать x = x + 1? любой вменяемый компилятор это соптимизирует. а пишет он вот так вот, примерно:
то что конкретный пипл знает какой-то конкретный алгоритм не делает его профи. при этом я вообще не понимаю, если бы ты был таким, а то какой-то дядя крут. даже не смешно.
СМ>то что конкретный пипл знает какой-то конкретный алгоритм не делает его профи. при этом я вообще не понимаю, если бы ты был таким, а то какой-то дядя крут. даже не смешно.
он много алгоритмов знает, многие из которых сам выдумал. впрочем, дело не в дяде. а в операторах. в большинстве языков (если не считать те, которые синтаксисом обязаны СИ) таких операторов ведь нет. и ничего, хорошие языки, популярные.
Здравствуйте, vanishing, Вы писали:
СМ>>то что конкретный пипл знает какой-то конкретный алгоритм не делает его профи. при этом я вообще не понимаю, если бы ты был таким, а то какой-то дядя крут. даже не смешно.
V>он много алгоритмов знает, многие из которых сам выдумал. впрочем, дело не в дяде. а в операторах. в большинстве языков (если не считать те, которые синтаксисом обязаны СИ) таких операторов ведь нет. и ничего, хорошие языки, популярные.
в ассемблере такие операторы есть.
По-моему, этого достаточно, чтобы появиться в языке, который хочет называться эффективным.
Просто потому, что его операторы один-в-один будут отображаться на ассемблерные команды.
Здравствуйте, jazzer, Вы писали:
J>в ассемблере такие операторы есть. J>По-моему, этого достаточно, чтобы появиться в языке, который хочет называться эффективным. J>Просто потому, что его операторы один-в-один будут отображаться на ассемблерные команды.
в ассемблере не операторы, а инструкции
и эффективность не зависит от наличия таких операторов!
Здравствуйте, vanishing, Вы писали:
СМ>>то что конкретный пипл знает какой-то конкретный алгоритм не делает его профи. при этом я вообще не понимаю, если бы ты был таким, а то какой-то дядя крут. даже не смешно.
V>он много алгоритмов знает, многие из которых сам выдумал. впрочем, дело не в дяде. а в операторах. в большинстве языков (если не считать те, которые синтаксисом обязаны СИ) таких операторов ведь нет. и ничего, хорошие языки, популярные.
например Алгол 68 имеет такие операторы. Замечу, что и Паскале есть inc вроде.
вообще, если честно, такие вопросы задают только те, кто мало программировал. и надо в другую конференцию это перенести. филисофия программирования, например.
Здравствуйте, Сергей Мухин, Вы писали:
СМ>Здравствуйте, jazzer, Вы писали:
J>>в ассемблере такие операторы есть. J>>По-моему, этого достаточно, чтобы появиться в языке, который хочет называться эффективным. J>>Просто потому, что его операторы один-в-один будут отображаться на ассемблерные команды.
СМ>в ассемблере не операторы, а инструкции :) СМ>и эффективность не зависит от наличия таких операторов!
Ну что, флейм разведем?
поговорим на тему эффективных алгоритмов и того, что в эпоху .NET все соптимизирует JIT?
P.S. И зачем только люди извращались, пытаясь брезенхейма уместить в наименьшее количество инструкций на асме...
Когда можно просто DrawLine позвать...
jazzer wrote:
> > From: *jazzer* </Users/Profile.aspx?uid=8211> </search/?group=9> > </Users/Private/AddFav.aspx?mid=1212683> <NewMsg.aspx?gid=9> > <NewMsg.aspx?mid=1212683> <?mid=1212683> > <Message.aspx?mid=1212683#1212683> <NewMsg.aspx?mid=1212683&edit=1> > <Private/Self.aspx?mid=1212683> >
А мне приятно зимой носить перчатки из тонкой телячей кожи, а не
драповые варежки.