Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>А они, как правило, аргументируют примерно так:
Геннадий мое почтение, получил масс удовольствия
Только ты не дописал...
Действующие лица:
Евангелист, он же коммивояжер, исполнитель скажем Дон Коробочка. Глашатай, ну сами знаете кто. Он, Геннадий например. Угрюмый, простой инженер, он же девелопер.
Действо №1:
Угрюмый: ...так это я написал... как бы его назвать? Пусть будет CORBA...
Евангелист (шепотом, смотря из-за плеча) "ух ты!"
Ария Евангелиста:
(место действия VSLive New York 2001):
Так, пацаны, бросайте все, вот вам .COM.
Вот смотирте жмем кнопку тут и все — оно само жужжит.
И самое главное! У нас уже все на нем пишут!
Глашатай (восторженно): Ура! (уходит окрыленный в массы...)
... тут идет рекурсивный вызов диалога который приведен внизу
Занавес.
Действо №2:
Угрюмый: ...так это я написал... как бы его назвать? Пусть будет Java Virtual Machine...
Евангелист (шепотом, смотря из-за плеча) "ух ты!"
.....
Ария Евангелиста (место действия VSLive SanFrancisco 2005):
Так, пацаны, бросайте .COM, с ним все оказолсь плохо.
Промашка вышла. Поэтому все переходим на .NET!
У нас уже все на нем написано, вот смотрите —
теперь даже кнопку жать не надо — оно само жужжит
а мусор который оно при этом делает сам шурша убирается. Клево, да?
Глашатай (восторженно): Гип-гип-ура! (уходит окрыленный в массы...)
...
Глашатай .Net: Мир поменялся! Всем переходить на .Net! он: И я?!
Глашатай .Net: Да! он: А почему?
Глашатай .Net: Так надо! У тебя проблемы с утечками памяти и <много всего>! он: У мна? (ошарашенно оглядывается по сторонам) У мна их нет. Уж лет пять как.
Глашатай .Net: У меня есть проблемы! У моих коллег есть проблемы с галимым C++! Потому — все на .Net! он: Хм... (скребя лысину) ну у всех есть проблемы конечно, а какие из них вы можете решить?
Глашатай .Net: ВСЕ! он: (показывая пальцем в распечатку, с надеждой) а вот эту?
Глашатай .Net: ЛЕГКО! (отрывает кусок распечатки и выбрасывает) Это теперь МУСОР, пацан, забудь! он: Постойте но как же он... того...
Глашатай .Net: От пристал... у нея там думатель унутре. Понял?! И вообще речь не о том!
Главное что порог вхождения низкий... он: Хм... а я уже здесь как бы. Мне выйти и зайти?
Глашатай .Net: От ты, пацан, нудный... Ты, пацан, лучше уйди ваапще.
Я в трех фирмах секретных работал... Бааальших-пре-больших,
в три раза бОльших индийских бодишопов и нигде таких нудных не видел...
(Тут продуктивня беседа прерывается криком)
Крик Евангелиста: Девлоперс, девлоперс, девлоперс!
Глашатай .Net: Слышу, слышу... (переходит в следующую комнату)
Угрюмый: (напевает под нос) девлоперс, девелоперс, да мы девелоперс...
так это я написал... как бы его назвать? Ну скажем Web2...
Евангелист (шепотом, смотря из-за плеча) "ух ты!"
....
Ария Евангелиста (место действия недалекое будущее):
Так, пацаны, писали мы писали ту Висту.... корче так, все на .WEB !
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Не хотите — не доказывайте, Ваше право. Но и не ждите серьёзного отношения к бездоказательным (сиречь — голосоловным) утверждениям.
Твои утверждения не менее голословны.
Что касается позиций, то я лично наблюдаю другую картину.
Фанат плюсов:
- Вот все говорят о дотнете, а ведь это полная туфта. На нем же даже игрушку написать нельзя.
— Помилуйте, вот игршка. Загрузите, поглядите.
— Но на нем же даже софт-риалтайм системы невозможно создать. Причем принципияльно!
— А вы их создаете?
— Я, нет. Но все же.
— Кстати, вот сообщение о выпуске конторой ХХХ софтреалтайм-рантайма для Явы, а вот описание разработки того же самого для дотнета.
— Да? Наверно это фигня. Да и ведь не хард! Ну, тогда ЖЦ торомзит. Пример — Янус. У меня при считавании сообщений иногда тормоза. И при переключении веток тоже.
— По милйте, откройте любой профайлер и вы увидите, что ЖЦ не оказывает никакого влияния на скорость наботы Януса. Например, у меня время проведенное в ЖЦ составляет 0.02%. При открытии сообщения, Янус лезет в БД через JET, считывает строку и передает ее в IE-контрол. И JET, и IE — это анменеджед-контролы написанные на С++. Так что тормоза Януса являются чисто алгоритмическими и уж скорее могут быть ассоциированы с С++.
— А...А...А, тогда дотнет жрет очень много памяти!
— Насколько много?
— Вот янус жрет 60 метров.
— А сколько у вас ее всего?
— Гиг.
— И это вам мешает?
— Мне нет, но все же. К тому, же дотнет интерпретатор, вот поглядите как в янусе переключаются сообщения.
— Помилуйте, дотнет джитер.
— Да какая разница?
— Дык, он порождает компилированный код который мало чем отличается от порождаемого средним С++-компилятором.
— А...а...а, вот еще у дотнета есть куча рантайм-проверок.
— Да есть, но она делаются не всегда и часто оптимизируются. В итоге сумма оверхэда и отсотвания оптимизатора редко позволяет С++-коду обогнать управляемый больше чем на 20%. Плюс к тому же всегда есть возможность при крайней необходимости воспользоваться небезопасным кодом и породить такой же кода как на С++/С.
— А какой же тогда смысл в C#?
— Дык, оптимизировать нужно очень малый объем кода. А остальной при этом пишется проще и быстрее.
— Нифига не проще!
— Да, как же не проще? Я вот писал на С++ и после перехода на дотнет и C# по пошествию некоторого времени начал работать намного продуктивнее.
— А мой опыт показывает, что нифига на C# писать не быстрее.
— А вы пробовали.
— Да! Я попробовал писать на C# "Дарова, мир!", поплювался на непривычных синтаксис и бросил.
Короче, этот рассказ можно продолжать еще долго.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Вот дела, и у меня теперь не получилось до Влада мысль довести. Уважаемый, дело не в окружающих...
ПК>> Соответственно, само по себе наличие исследований ни о чем, кроме интереса к теме, не говорит.
VD>Ошибашся. Оно говорит, о том что есть некие задачи и некие идеи которые проверяются/решаются. Собсвенно идея Сингулярити довопльно проста — это создание безопасной и предсказуемой ОС. Как я понимаю, проект на том этапе когда можно говорить, что иди проверяемые в проекте подтвердились. Конечно до промышленной/коммерческой ОС еще далего, но говорить о Сингулярити как о каких-то там непроверенных задмуках мякго говоря не честно.
Влад, идей проверяется на миллион, причем в последствии оказывается полезными единицы. Таков мир. Опять же, ты домысливаешь "Как я понимаю, проект на том этапе когда можно говорить, что иди проверяемые в проекте подтвердились". А что ты в этом понимаешь? Ты участвовал в разработке какой-то OS? Я, к примеру, ничего не понимаю и не решаюсь судить. Хотя, подобных околовсяческих спецов я уже видал.
VD>>За такой код в промышленных системах нужно по началу лишать премий, а потом выгонять если не прочувствушь. Это называется начхание на инкапсуляцию.
E>А можно ли раскрыть эту тему по подробнее? Что именно плохо в приведенном коде (особенно с поправкой на то, что это врядли в точности тот код, который используется в реальной системе, а больше похож на быструю "выжимку" из оного)?
Не обращай внимания. Он по своей дурацкой привычке оппонента зачморить пытается.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, mrozov, Вы писали:
M>>По-моему — это факт.
AVK>Спорить о вкусе устриц, как это не печально, можно только с теми, кто их ел.
Если честно то я например устриц не ем.
Мне почему-то достаточно их запаха.
Здравствуйте, DarkGray, Вы писали:
E>>А еще более вероятно, что в реальной системе что-то вроде:
DG>И это все шаманство будет быстрее, чем: DG>return nodes[(idx+2)%3];
Думаю, что вполне возможно. Т.к. assert во время отладки удаляет все обращения по неверному индексу. В релизе, с большой вероятностью, все вызовы инлайнятся, а assert изымается, поэтому лишнего оверхеда нет. А в твоем варианте взятие остатка от деления будет всегда.
... << RSDN@Home 1.1.4 stable rev. 510>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Думаю, что вполне возможно. Т.к. assert во время отладки удаляет все обращения по неверному индексу. В релизе, с большой вероятностью, все вызовы инлайнятся, а assert изымается, поэтому лишнего оверхеда нет.
Вот тут не понял. Куда изымется второе косвенное обращение? Мы же должны сначала обратиться по адресу imap+idx+2, и прибавить полученное смещение к nodes. При этом nodes лежат очень далеко от imap, потому что они в хипе, а imap — в сегменте данных. E>А в твоем варианте взятие остатка от деления будет всегда.
Взятие остатка от деления выполняется в регистре, т.е. со скоростью процессора. Без тестирования я совершенно не уверен, кто тут будет быстрее и насколько.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
.Net по большому счету это что? Enteprise level, а C++ — это довольно низкий уровень. Ниши использования давно сформировались, имеют довольно четкое разделение и существуют параллельно.
Скорую смерть C++ пророчили еще в середине 90х, когда борланд выпустил дельфю. Стоит ли говорить, что заявлять такое могли только те кто реально в C++ проектах не работал. Сейчас можно оценить качество их предсказаний.
Я давно ушел на .net, но считаю, что кандидата на титул "убийца С++" в обозримом будущем не наблюдается.
Здравствуйте, DarkGray, Вы писали:
E>>А еще более вероятно, что в реальной системе что-то вроде:
DG>И это все шаманство будет быстрее, чем: DG>return nodes[(idx+2)%3];
Это эквивалентный код, за исключением ошибки с %3, компилер все проинлайнит
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, DarkGray, Вы писали:
E>>>А еще более вероятно, что в реальной системе что-то вроде:
DG>>И это все шаманство будет быстрее, чем: DG>>return nodes[(idx+2)%3];
E>Думаю, что вполне возможно. Т.к. assert во время отладки удаляет все обращения по неверному индексу. В релизе, с большой вероятностью, все вызовы инлайнятся, а assert изымается, поэтому лишнего оверхеда нет. А в твоем варианте взятие остатка от деления будет всегда.
На самом деле на современных процессорах обмен с памятью -- достаточно дорогая операция.
Так что что тут будет быстрее без исследования вопроса сказать сложно.
Здравствуйте, Шахтер, Вы писали:
E>>Думаю, что вполне возможно. Т.к. assert во время отладки удаляет все обращения по неверному индексу. В релизе, с большой вероятностью, все вызовы инлайнятся, а assert изымается, поэтому лишнего оверхеда нет. А в твоем варианте взятие остатка от деления будет всегда.
Ш>На самом деле на современных процессорах обмен с памятью -- достаточно дорогая операция.
Да. Но и деление никогда не было дешовой операцией. В отличии от сложения или арифметического сдвига.
Ш>Так что что тут будет быстрее без исследования вопроса сказать сложно.
Это точно. Решил посмотреть. Вот чего получилось. Код программы внизу.
Здравствуйте, Sinclair, Вы писали:
E>>Думаю, что вполне возможно. Т.к. assert во время отладки удаляет все обращения по неверному индексу. В релизе, с большой вероятностью, все вызовы инлайнятся, а assert изымается, поэтому лишнего оверхеда нет. S>Вот тут не понял. Куда изымется второе косвенное обращение? Мы же должны сначала обратиться по адресу imap+idx+2, и прибавить полученное смещение к nodes. При этом nodes лежат очень далеко от imap, потому что они в хипе, а imap — в сегменте данных.
Это при эпизодических обращениях к imap будет справедливо. А если идет пакетная обработка/расчет, когда nodes дергаются постоянно, то imap закешируется.
E>>А в твоем варианте взятие остатка от деления будет всегда. S>Взятие остатка от деления выполняется в регистре, т.е. со скоростью процессора. Без тестирования я совершенно не уверен, кто тут будет быстрее и насколько.
Так и я не утверждал ничего. Просто сказал, что вполне возможно.
Для своей машины, возможно, угадал: Re[21]: С++ culture
Здравствуйте, c-smile, Вы писали:
CS>Глашатай .Net: От пристал... у нея там думатель унутре. Понял?! И вообще речь не о том! CS>Главное что порог вхождения низкий... CS>он: Хм... а я уже здесь как бы. Мне выйти и зайти?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, VladD2, Вы писали:
ГВ>>Не хотите — не доказывайте, Ваше право. Но и не ждите серьёзного отношения к бездоказательным (сиречь — голосоловным) утверждениям. VD>Твои утверждения не менее голословны.
Хммм... да... снятие шляпы я ничем доказать не могу. С этим не поспоришь.
VD>Что касается позиций, то я лично наблюдаю другую картину.
[skip, хотя я далеко не согласен]
VD>Короче, этот рассказ можно продолжать еще долго.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Но! Одну фразу я все-таки прокомментирую. Умоляю — не надо мне отвечать.
ГВ>Не хотите — не доказывайте, Ваше право. Но и не ждите серьёзного отношения к бездоказательным (сиречь — голосоловным) утверждениям.
Ваши слова о том, что Вы не желаете принимать к сведению мою аргументацию, безапялляционно относя ее к голословной, разбило мне сердце. Я проплакал в подушку всю ночь.
Могу дать еще один безапеляционный совет. Тоже следующий из моего личного опыта и абсолютно бездоказательный.
Если, гуляя по форумам, я вижу, что кто-то гонит пургу, я не отвечаю и не спорю — я просто прохожу мимо. Иногда отпускаю ироничное замечание, которое для понимания требует отсутствие фанатизма в отношении к рассматриваемой теме.
Если кашеобразное состояние головы собеседника выясняется уже в ходе дискуссии, я склонен объяснить свою позицию. Один раз, по мере возможности выбирая простые слова и прибегая к аналогиям из других областей.
Если выясняется, что собеседник имеет свою четкую позицию. в корне отличную от моей — я вступаю в спор и выкладываю свои аргументы. Внимательно выслушиваю аргументы другой стороны. Дискуссия прекрашается, когда я понимаю, что:
— позиция и аргументация собеседника мне понятны
— консенсус найден или не кажется достижимым за разумный период времени
Выхожу из такого разговора я, обогащенный новыми знаниями и расширившимся взглядом на мир. Надеюсь, что это же можно сказать и о моих собеседниках. Хотя это и не главная цель.
Вышеописанный алгоритм на основании личного опыта считаю оптимальным. Выдирание чужих фраз из контекста, произвольная их трактовка и аргументация в стиле "вот тут вы меня не убедили, а значит вся ваша позиция неверна", предсталяются мне черезвычайно неуважительным, а главное — бессмысленным способом общения. Я ведь все еще имею право на свою точку зрения, правда?
), то я совершенно не думал о производительности. Просто написал метод Triangle::node_at(), решил, что это не дело -- нужно еще и константный вариант для симметрии сделать. Начал делать Triangle::node_at() const -- оказалось, что imap дублируется. Сразу же сделал рефакторинг, получилась схема со статическим методом imap. В общем, старался написать красивый код, а он, зараза, еще и быстрым получился. А еще говорят, что красота -- это субъективное понятие :))