Здравствуйте, LaptevVV, Вы писали:
LVV>Приоритеты — понятны. LVV>Но ИМХО их надо ставить в таком порядке: LVV>3, 4, 1, 2.
Ну вот от того, кто как ставить и возникают все разногласия. Я ставлю именно так.
PD>>Ты мне предлагаешь начать с пунктов 3 и 4. Обещаешь, что в коде будет меньше ошибок, и я смогу написать быстрее. Насчет второго не спорю, а первое еще обсудим, попозже. LVV>Правильно предлагает. PD>>Первый мой вопрос — а как с п.1 и 2 будет. LVV>По мере возможности.
А тогда у меня ничего не будет. От меня требуют максимум по п.1, и без него и говорить не о чем.
PD>>Гарантируете ли вы, что я по-прежнему смогу делать все. что я умею делать, использовать все те возможности ОС, которые умею использовать ? И будет ли это работать столь же быстро и требовать ресурсов не больше ? LVV>Гарантировать никто не может. Но нужно искать компромисс...
Это как ? Гибрид С++ с C# ? Можно
LVV>В конце-концов, абсолютная свобода достигается только при написании в кодах и на голой машине... LVV>Но это долго — поэтому надо искать компромисс.
Быстро хорошо не бывает.
LVV>А про эффективность — тут необходимо чувство меры... Ибо можно выжимать микросекунды, тратя на это ДНИ...
Чем я порой и занимаюсь. Только все же милли, а не микро.
PD>>Резюмирую. Готов ли я отдать свою свободу (в программировании, конечно, только там) за что-то ? Пока не дадите твердого ответа на п.1 и 2. — категорически не готов. LVV>Насчет свободы еще. Ленин же гениально сказал, что свобода — это ОСОЗНАННАЯ необходимость...
А кто-то хорошо сказал, что есть еще иная свобода, кроме осознанной необходимости
>Ею надо уметь пользоваться...
Ну я и пытаюсь.
LVV>Проблема в том, что в отличие от тебя, огромное большинство программистов пользоваться свободой не умеют... Надо много пота и крови пролить, чтобы понять, как пользоваться свободой С++. Поэтому и предлагаются инструменты, ограничивающие НЕОГРАНИЧЕННУЮ свободу.
Да бога ради. Кому нравится арбуз, а кому — свинячий хвостик (К. Прутков, если не ошибаюсь)
LVV>И в конце-концов, любая свобода — относительна. LVV>Если свободы не хватает — "купи козу" и поживи с ней. А потом "продай козу" — и ТАКУЮ свободу ощутишь... Хотя фактически — ничего не изменилось...
Здравствуйте, Nuzhny, Вы писали:
N>Здравствуйте, gandjustas, Вы писали:
G>>>>Напиши highload сайт полностью на С\C++. PD>>>Что за чепуха ? Когда это я предлагал сайты на С/C++ писать ? Он совсем не для написания сайтов! G>>А для чего? Если че — написание для веба на сегодня одна из самых востребованных областей.
N>Меня поражают иногда такие споры. Оппонент практически в каждом сообщении описывает свой круг задач, но его никто не слушает и со своей колокольни начинают мучать сайтами и базами данных. Ей богу, Павлу надо подпись сделать: "Сайты не разрабатываю".
А что мелочиться, сразу написать — ничего не разрабатываю.
N>Для разнообразия предлагаю тебе, gandjustas, написать безопасное приложение, которое будет работать на видеокарте с CUDA SDK. Потренируйся, посмотри что это практически невозможно. (Даже стандартный пример с рекомендуемыми дровами, на рекомендованном оборудовании может вызвать синий экран.)
Ну я писал такое, и что?
Ты придумай сходу реальную задачу где такое понадобится.
Здравствуйте, gandjustas, Вы писали:
G>>>Продолжай мысль: потратиться на железо дешевле, чем оптимизировать программу. Особенно это касается памяти.
PD>>Доказательства в студию. G>Месяц работы программиста — от 30000 до 80000 рублей. Гигабайт оперативки стоит меньше 1000р. За месяц работы программиста можно купить неплохой компьютер.
Замечательно. А теперь иначе посчитаем.
ПО работает на 1000 компьютеров. Стоимость компьютера примем за 1000 USD. На каждом компьютере должно быть установлено еще некоторое 3dparty ПО, лицензия на место стоит 5000 USD.
Мне удается оптимизировать на 1% всего. Ничтожно мало, по мнению многих. Но это значит, что вместо 1000 компьютеров хватит 990.
10 компьютеров * (1000 + 5000) = 60,000 USD.
Стоит ли дать мне возможность сделать это за месяц , заплатив от 30000 до 80000 рублей ( от 1000 до 3000 USD) ?
PD>>Если продукт не работает с минимально требуемой скоростью — он не продукт. G>Правильно. Какая скорость работы минимально требуется? И как её определить?
Как мы ее определяем — рассказывать не буду, но определяем, не беспокойся. А требуется — как можно больше. По причине, о которой я сказал чуть выше.
G>Для этого надо как минимум написать программу чтобы она была коректной
А мы не занимаемся некорректными программами. Но и писать их так. чтобы они изначально были медленными, тоже не хотим.
G>Определись для начала что такое скорость работы. Для пользователя это время отклика интерфейса, а не время полной обрабоки.
А если нет ни интерфейса с пользователем, ни пользователя в обычном смысле слова ? А есть просто обработка данных, поступающих из некоторого источника ?
G>Например в каком-нить ICQ, skype или jabber я предпочту сразу отправлять сообщения, не додижаясь сообщения о подтверждении (чтобы они приходили асинхронно), чем ждать пока сообщение будет доставлено (синхронно).
При чем это тут ? Это совсем другой вопрос.
G>Кроме того визуальный feedback длительной операции уменьшает воспринимаемое время работы, хотя увеличивает реальное время работы.
И это тоже.
G>Про 80%/20% слышал? Максимум придется переписывать 20%, если тормоза не заложены в архитектуре (как с mutable строками).
Слышал.
G>>>А с чего ты взял что на С буждет потребляться меньше ресурсов (и каких ресурсов вообще)? PD>>Я это обосновывал не раз, новых аргументов нет. Прежние ты знаешь. G>Да ты ниче не обосновывал. Максимум приводил тривиальные примеры, которые вообще ничего не доказывают.
Ну не доказывают они тебе ничего, ну и ладно. Не могу же я специально для тебя годовой проект сделать, чтобы что-то доказать.
G>>>Напиши highload сайт полностью на С\C++. PD>>Что за чепуха ? Когда это я предлагал сайты на С/C++ писать ? Он совсем не для написания сайтов! G>А для чего? Если че — написание для веба на сегодня одна из самых востребованных областей.
Я не занимаюсь вебом и не предлагаю использовать там С++. И то, что эта область востребована в бизнесе, отнюдь не отменяет то, что есть другие области и там другие законы. Пойми это.
Здравствуйте, gandjustas, Вы писали:
G>А что мелочиться, сразу написать — ничего не разрабатываю.
Это не КСВ, передёргивания и хамство не приветствуется.
N>>Для разнообразия предлагаю тебе, gandjustas, написать безопасное приложение, которое будет работать на видеокарте с CUDA SDK. Потренируйся, посмотри что это практически невозможно. (Даже стандартный пример с рекомендуемыми дровами, на рекомендованном оборудовании может вызвать синий экран.) G>Ну я писал такое, и что?
Не верю. Безопасности нет в самой платформе, следовательно нет и в твоём приложении. Всё просто, тут не поюлишь. Если не веришь мне, то поищи отзывы в интернете "лестные" отзывы о драйверах NVidia.
G>Ты придумай сходу реальную задачу где такое понадобится.
Для начала классика: Примеры внедрения NVIDIA CUDA
Из моей практики (системы видеонаблюдения): массовое разжатие видео, детектор движения.
Это самые что ни на есть реальные примеры.
Здравствуйте, Nuzhny, Вы писали:
N>Меня поражают иногда такие споры. Оппонент практически в каждом сообщении описывает свой круг задач, но его никто не слушает и со своей колокольни начинают мучать сайтами и базами данных. Ей богу, Павлу надо подпись сделать: "Сайты не разрабатываю".
А что, это идея. Подумаю
N>Для разнообразия предлагаю тебе, gandjustas, написать безопасное приложение, которое будет работать на видеокарте с CUDA SDK. Потренируйся, посмотри что это практически невозможно. (Даже стандартный пример с рекомендуемыми дровами, на рекомендованном оборудовании может вызвать синий экран.) Примени свои знания C#, .Net, храни текстуры в MS SQL и подгружай их запросами. А мы посмотрим.
Присоединяюсь, тем более что с CUDA дела имел.
With best regards
Pavel Dvorkin
Re[2]: Павлу Дворкину: о понимании того что делаешь и просты
Здравствуйте, LaptevVV, Вы писали:
LVV>И устаканить в мозгах постулат: НАДЕЖОСТЬ ВАЖНЕЕ ЭФФЕКТИВНОСТИ!!!!!!!!!
Как постулат — не приемлю. Зависит от ситуации.
Например, сервисы Windows, и действия на случай их падения. Как там насчет эффективности — судить не буду, однако хочу отметить, что крах приложения вполне может быть допускаемым событием с предусмотренной реакцией.
With best regards
Pavel Dvorkin
Re[3]: Павлу Дворкину: о понимании того что делаешь и просты
Здравствуйте, Pavel Dvorkin, Вы писали:
LVV>>И устаканить в мозгах постулат: НАДЕЖОСТЬ ВАЖНЕЕ ЭФФЕКТИВНОСТИ!!!!!!!!! PD>Как постулат — не приемлю. Зависит от ситуации. PD>Например, сервисы Windows, и действия на случай их падения. Как там насчет эффективности — судить не буду, однако хочу отметить, что крах приложения вполне может быть допускаемым событием с предусмотренной реакцией.
А можешь КОНКРЕТНО представить себе предприятие, в котором при эксплуатации ПО
крах приложения вполне может быть допускаемым событием с предусмотренной реакцией.
Я, например, не могу...
Во всех конторах, где я работал, крах... считался ЧП.
Только при разработке исследовательского проекта такое можно себе допустить. А в производстве ИМХО НЕЛЬЗЯ НИКОГДА!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, gandjustas, Вы писали:
G>>>>Продолжай мысль: потратиться на железо дешевле, чем оптимизировать программу. Особенно это касается памяти.
PD>>>Доказательства в студию. G>>Месяц работы программиста — от 30000 до 80000 рублей. Гигабайт оперативки стоит меньше 1000р. За месяц работы программиста можно купить неплохой компьютер.
PD>Замечательно. А теперь иначе посчитаем.
PD>ПО работает на 1000 компьютеров. Стоимость компьютера примем за 1000 USD. На каждом компьютере должно быть установлено еще некоторое 3dparty ПО, лицензия на место стоит 5000 USD. PD>Мне удается оптимизировать на 1% всего. Ничтожно мало, по мнению многих. Но это значит, что вместо 1000 компьютеров хватит 990. PD>10 компьютеров * (1000 + 5000) = 60,000 USD.
И что ты посчитал?
Если это 1000 разных пользователей, то затраты по ним разделятся и будет по максимум 60$ на человека. Хотя многим эти затраты не понадобятся, так как 1% никто не заметит.
Если дело касается большой распределенной сиситемы, то оптимизация в 1% может выйти гораздо дороже 60 килобаксов.
PD>Стоит ли дать мне возможность сделать это за месяц , заплатив от 30000 до 80000 рублей ( от 1000 до 3000 USD) ?
См выше.
Кроме того, чтобы заниматься такой оптимизацией надо уже иметь рабочую систему. Если начинать писать на C, то до получения рабочей системы затраты будут гораздо больше
PD>>>Если продукт не работает с минимально требуемой скоростью — он не продукт. G>>Правильно. Какая скорость работы минимально требуется? И как её определить?
PD>Как мы ее определяем — рассказывать не буду, но определяем, не беспокойся. А требуется — как можно больше.
Ну так расскажи что ты имеешь ввиду под скоростью работы и как ты её увеличиваешь.
G>>>>А с чего ты взял что на С буждет потребляться меньше ресурсов (и каких ресурсов вообще)? PD>>>Я это обосновывал не раз, новых аргументов нет. Прежние ты знаешь. G>>Да ты ниче не обосновывал. Максимум приводил тривиальные примеры, которые вообще ничего не доказывают. PD>Ну не доказывают они тебе ничего, ну и ладно. Не могу же я специально для тебя годовой проект сделать, чтобы что-то доказать.
Да ты больше конкретики приводи, а не общетеоретических рассуждений с непоказательными примерами.
Re[4]: Павлу Дворкину: о понимании того что делаешь и просты
Здравствуйте, LaptevVV, Вы писали:
LVV>А можешь КОНКРЕТНО представить себе предприятие, в котором при эксплуатации ПО LVV>
LVV>крах приложения вполне может быть допускаемым событием с предусмотренной реакцией.
Могу. В проекте, в котором я участвовал, это было именно таковым. При крахе процесс просто автоматически перезапускался и продолжал работу.
LVV>Я, например, не могу... LVV>Во всех конторах, где я работал, крах... считался ЧП. LVV>Только при разработке исследовательского проекта такое можно себе допустить. А в производстве ИМХО НЕЛЬЗЯ НИКОГДА!
Это было (и есть) очень даже не исследовательский проект
Здравствуйте, gandjustas, Вы писали:
G>И что ты посчитал? G>Если дело касается большой распределенной сиситемы, то оптимизация в 1% может выйти гораздо дороже 60 килобаксов.
Дело касается именно большой системы, но вполне независимых машин. Какая еще другая оптимизация может выйти дороже 60,000 USD — не знаю, а вот такая , о которой я писал, может дать эти 60000 почти задаром.
А если все же не 1%, а хотя бы 10% ?
G>Кроме того, чтобы заниматься такой оптимизацией надо уже иметь рабочую систему. Если начинать писать на C, то до получения рабочей системы затраты будут гораздо больше
И та система, о разработке которой я говорю, писалась таки на С.
G>Ну так расскажи что ты имеешь ввиду под скоростью работы и как ты её увеличиваешь.
v = ds/dt. Количество обрабатываемых единиц работы в единицу времени.
А подробности того, что и как я увеличиваю — все описано в документации по проекту, которую я здесь публиковать не собираюсь
G>Да ты больше конкретики приводи
Здравствуйте, Nuzhny, Вы писали:
N>Здравствуйте, gandjustas, Вы писали:
G>>А что мелочиться, сразу написать — ничего не разрабатываю. N>Это не КСВ, передёргивания и хамство не приветствуется.
N>>>Для разнообразия предлагаю тебе, gandjustas, написать безопасное приложение, которое будет работать на видеокарте с CUDA SDK. Потренируйся, посмотри что это практически невозможно. (Даже стандартный пример с рекомендуемыми дровами, на рекомендованном оборудовании может вызвать синий экран.) G>>Ну я писал такое, и что? N>Не верю.
Твое право.
N>Безопасности нет в самой платформе, следовательно нет и в твоём приложении. Всё просто, тут не поюлишь. Если не веришь мне, то поищи отзывы в интернете "лестные" отзывы о драйверах NVidia.
Верю, в данном случае надежность не зависит от того что я напишу, поэтому меня не парит.
G>>Ты придумай сходу реальную задачу где такое понадобится. N>Для начала классика: Примеры внедрения NVIDIA CUDA N>Из моей практики (системы видеонаблюдения): массовое разжатие видео, детектор движения. N>Это самые что ни на есть реальные примеры.
Большинство — ускорение существующих программ. То есть приходим к тому же: сначала реализуется рабочее решение (желательно надежное), а потом оптимизируется, например с помощью cuda.
Re[5]: Павлу Дворкину: о понимании того что делаешь и просты
Здравствуйте, Pavel Dvorkin, Вы писали:
LVV>>А можешь КОНКРЕТНО представить себе предприятие, в котором при эксплуатации ПО LVV>>
LVV>>крах приложения вполне может быть допускаемым событием с предусмотренной реакцией.
PD>Могу. В проекте, в котором я участвовал, это было именно таковым. При крахе процесс просто автоматически перезапускался и продолжал работу.
Ага! Все же перезапускался!
А не скажешь, много ли данных при этом терялось и насколько это было критично? PD>Это было (и есть) очень даже не исследовательский проект
А конкретней нельзя? Секретно?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[6]: Павлу Дворкину: о понимании того что делаешь и просты
Здравствуйте, LaptevVV, Вы писали:
PD>>Могу. В проекте, в котором я участвовал, это было именно таковым. При крахе процесс просто автоматически перезапускался и продолжал работу. LVV>Ага! Все же перезапускался!
Естественно. Просто падение одного процесса Windows — еще не повод для паники.
LVV>А не скажешь, много ли данных при этом терялось и насколько это было критично?
Честно сказать, не знаю, так как этой частью я не занимался. Немного, я полагаю. И уж во всяком случае некритично.
LVV>А конкретней нельзя? Секретно?
Нет, совсем не секретно, но я не рассказываю здесь подробностей о своих работах. Просто не хочу.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, gandjustas, Вы писали:
G>>И что ты посчитал? G>>Если дело касается большой распределенной сиситемы, то оптимизация в 1% может выйти гораздо дороже 60 килобаксов.
PD>Дело касается именно большой системы, но вполне независимых машин. Какая еще другая оптимизация может выйти дороже 60,000 USD — не знаю, а вот такая , о которой я писал, может дать эти 60000 почти задаром.
PD>А если все же не 1%, а хотя бы 10% ?
Ну так если оно того стоит, то почему бы и не потратиться.
Тут же вопрос в другом. Можно сначала пытаться писать систему, которая будет пытаться работать быстро (зачастую такое получается в ущерб коррентности), а можно написать корректую систему и её оптимизировать.
Ты всегда предлагаешь первый вариант, тебе всегда предлагают второй.
Обычно первый варинт приводит или к повышенным затратам на разработку еще до оптимизации, или к жутко негибкому решению, которое требует больших затрат при поддержке.
G>>Ну так расскажи что ты имеешь ввиду под скоростью работы и как ты её увеличиваешь. PD>v = ds/dt. Количество обрабатываемых единиц работы в единицу времени.
А что за единицы, откуда они приходят, в чем заключается обработка, какова нагрузка и как она меняется, насколько связаны между собой обработки отдельных единиц, realtime или нет?
Здравствуйте, gandjustas, Вы писали:
G>Ну так если оно того стоит, то почему бы и не потратиться. G>Тут же вопрос в другом. Можно сначала пытаться писать систему, которая будет пытаться работать быстро (зачастую такое получается в ущерб коррентности), а можно написать корректую систему и её оптимизировать. G>Ты всегда предлагаешь первый вариант, тебе всегда предлагают второй. G>Обычно первый варинт приводит или к повышенным затратам на разработку еще до оптимизации, или к жутко негибкому решению, которое требует больших затрат при поддержке.
Всяко бывает. Давай закончим это обсуждение.
G>>>Ну так расскажи что ты имеешь ввиду под скоростью работы и как ты её увеличиваешь. PD>>v = ds/dt. Количество обрабатываемых единиц работы в единицу времени. G>А что за единицы, откуда они приходят, в чем заключается обработка, какова нагрузка и как она меняется, насколько связаны между собой обработки отдельных единиц, realtime или нет?
Все тебе расскажи
With best regards
Pavel Dvorkin
Re[4]: Павлу Дворкину: о понимании того что делаешь и просты
Здравствуйте, LaptevVV, Вы писали:
LVV>А можешь КОНКРЕТНО представить себе предприятие, в котором при эксплуатации ПО
крах приложения вполне может быть допускаемым событием с предусмотренной реакцией.
LVV>Я, например, не могу...
Развивайте воображение Ну там в LEGO играйте, например
LVV>Во всех конторах, где я работал, крах... считался ЧП.
Такие конторы значится А вот бортовое военное ПО специально проектируется исходя из требований мгновенного рестарта в случае отказа. Известнейший эпизод — F-16 и высота 0 футов над уровнем моря Ну деление на ноль, ну и что Рестарт, и через секунду всё опять работает.
Более того, не редкость вообще построение системы на схеме с постоянным рестартом, например, у спутникового ПО. Менеджер памяти в таких штуках, например, умеет её только выделять. Когда же память заканчивается, то приложение сохраняет своё состояние в постоянную память, и рестартуется.
LVV>А в производстве ИМХО НЕЛЬЗЯ НИКОГДА!
Нельзя только в очень узком сегменте, например, в последней линии защиты исполнительных механизмов. Но там кода с гулькин нос, и его вполне реально сделать надёжным за разумные средства.
Джон Бентли. Жемчужины программирования. 2-е изд. стр. 248 перевода (в пункте 6, вверху):
"В этой программе, как в любой другой большой системе, есть ошибки. На данный момент их известно 10 штук, они все не слишком серьёзны. В следующем месяце, возможно, будет обнаружено ещё 10 таких же ошибок. Если бы вы могли выбирать между устранением 10 известных на данный момент ошибок или увеличением скорости работы программы в 10 раз, что бы вы выбрали?"
Здравствуйте, gandjustas, Вы писали:
N>>>>Для разнообразия предлагаю тебе, gandjustas, написать безопасное приложение, которое будет работать на видеокарте с CUDA SDK. Потренируйся, посмотри что это практически невозможно. (Даже стандартный пример с рекомендуемыми дровами, на рекомендованном оборудовании может вызвать синий экран.) G>>>Ну я писал такое, и что? N>>Не верю. G>Твое право.
То есть фактов не будет. Очень сильный ход с твоей стороны.
N>>Безопасности нет в самой платформе, следовательно нет и в твоём приложении. Всё просто, тут не поюлишь. Если не веришь мне, то поищи отзывы в интернете "лестные" отзывы о драйверах NVidia. G>Верю, в данном случае надежность не зависит от того что я напишу, поэтому меня не парит.
То есть написание небезопасных программ уже допускается. Хорошо!
G>Большинство — ускорение существующих программ. То есть приходим к тому же: сначала реализуется рабочее решение (желательно надежное), а потом оптимизируется, например с помощью cuda.
Не всегда. Ещё один пример из жизни: определение нарушений правил дорожного движения. По изображению с одной камеры определяются нарушения, а другая, снабжённая поворотным механизмом, должна успеть навестись на номер нарушителя и распознать его. Машины ездят быстро, всё надо делать очень быстро. Так вот, к чему всё это: медленный и надёжный вариант не подойдёт. Никак. Его даже на работоспособность не проверишь. Такой пример подойдёт?
Re[2]: Павлу Дворкину: о понимании того что делаешь и просты
Приветствую, LaptevVV, вы писали:
LVV> Ну это примерно так же, как запретить кухонные ножи. Ведь дети могут порезаться! Да и вообще — мало ли ножами кухонными друг-друга режут!? LVV> ИМХО, нужно просто лучше готовить профессионалов. Чтобы любители с ними близко не стояли по квалификакции... Тогда и не будет таких ляпов...
Вот до этих пор было все супер.
LVV> И устаканить в мозгах постулат: НАДЕЖОСТЬ ВАЖНЕЕ ЭФФЕКТИВНОСТИ!!!!!!!!!
А вот здесь уже спорно... Надежность безусловно важна, но если программеры-профессионалы, то надежность будет и так. Следовательно надо делать ставку на эффективность.