Здравствуйте, IT, Вы писали:
IT>Здравствуйте, blackhearted, Вы писали:
A>>>А может тогда сразу нафиг программирование — и в дворники?
B>>блин...а я прочитал — ...в Дворкины...
IT>Уж лучше в дворники, чем в дворкины?
На РСДН уже видимо правило хорошего тона: если не разделяешь точку зрения человека — просклоняй его /*или фамилию, если доступна*/.
Пол беды, когда это делают пользователи, но от админа
И в чей адрес? Человеку, который всегда как минимум тактичен с собеседниками, даже если они этого не заслуживают...
Re[5]: Павлу Дворкину: о понимании того что делаешь и просты
Здравствуйте, samius, Вы писали:
S>На РСДН уже видимо правило хорошего тона: если не разделяешь точку зрения человека — просклоняй его /*или фамилию, если доступна*/.
Склоняют тут не Дворкина-человека, а Дворкина-понятие, которое подразумевает непремиримую борьбу за низкоуровневую оптимизацию. Примерно как пойти погуглить — поискать чего-нибудь в поисковике. Пойти в дворкины — заняться выжиманием битов из байтов.
S>Пол беды, когда это делают пользователи, но от админа
Тут согласен. Погорячился, был не прав. Приношу свои извинения.
Если нам не помогут, то мы тоже никого не пощадим.
Re[6]: Павлу Дворкину: о понимании того что делаешь и просты
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, samius, Вы писали:
S>>На РСДН уже видимо правило хорошего тона: если не разделяешь точку зрения человека — просклоняй его /*или фамилию, если доступна*/.
IT>Пойти в дворкины — заняться выжиманием битов из байтов.
Ну вот, опять, только потоньше...
S>>Пол беды, когда это делают пользователи, но от админа
IT>Тут согласен. Погорячился, был не прав. Приношу свои извинения.
Не мне, я не обиделся, только децл удивился.
Re[3]: Павлу Дворкину: о понимании того что делаешь и просты
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Здравствуйте, A13x, Вы писали:
A>>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>>... KV>>>Я вот сижу и думаю, а может ну ее нафиг эту свободу, а?
A>>А может тогда сразу нафиг программирование — и в дворники?
KV>Ну если эта типа свобода (проявление которой, бывает в форме, представленной в исходном сообщении) — это единственное, что держит человека в отрасли, то почему бы и нет?
Безусловно да.
Думаю все согласятся, что человеку свойственно ошибаться.
Ясно, что сборка мусора (и другие вкусности managed языков) позволяют избежать ряда проблем, но сводит ли она все проблемы на нет?
Пример: одно время я пользовался Microsoft Expression Blend-ом (когда разрабатывал UI для WPF приложения).
Казалось бы — написана на C# — управляемом языке программирования, не самыми глупыми людьми (Microsoft), однако более глючной IDE я не видел.
Крайне нестабильно и медленно работает, в ряде случаев падает без звука, естественно не давая сохранить данные.
Причем с простыми проектами из примеров работает сносно, но вот когда дело доходит до сложного...
То же самое могу сказать о KAXAML Editor-е.
Словом я уверен, что и C# не панацея.
No silver bullet.
А жаль.
Кстати, ядро линукса пытались переписать на C++. Даже из этой попытки не вышло ничего хорошего — хотя в этом контексте некорректно сравнивать C# и С++.
Re[4]: Павлу Дворкину: о понимании того что делаешь и просты
Здравствуйте, A13x, Вы писали:
A>Словом я уверен, что и C# не панацея. A>No silver bullet. A>А жаль.
Проблема не в том, что мы совершаем ошибки, проблема в том, как быстро мы их выявляем и как эффективно устраняем. Выйти, например, за пределы массива можно в любой среде. Но если в управляемой мы сразу же получим вполне вменяемую диагностику и точное местоположение ошибки, то в неуправляемой мы получим испорченную память и далеко и в разные стороны идущие последствия.
Что касается Бленда, то думаю, что на C такого класса продукт вообще сделать сегодня не реально. А проблемы в нём нужно искать не в используемой среде, а в архитектуре, кривых руках и посредственном тестировании.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Pavel Dvorkin, Вы писали: PD>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>Прикольно, а зачем по-твоему я тогда его сюда вставил? Но ок, буду ждать. PD>У меня сейчас лекция, после нее отвечу.
А у меня случился больничный , и под рукой ядра нет, а лазать по git'у через GPRS — долго и нудно. В общем, предлагаю перенести обсуждение конкретно этого кода на следующую неделю, ок?
Здравствуйте, remark, Вы писали:
R>Ну будет не падать программа, а деньги переводить на неправильный счёт. Если она падает — это ещё лучший исход.
А это смотря как она падает. Ибо если она падает из-за того, что поток управления пошел по левому адресу, в который мы можем записать нужный нам код, то лучше бы она переводила деньги на неправильный счет...
Да и, если бы она просто падала — тоже мало приятного, например для владельца интернет-магазина. Я думаю, что он был рад и сам деньги на неправильный счет перевести, лишь бы она падать перестала
Здравствуйте, A13x, Вы писали:
A>Думаю все согласятся, что человеку свойственно ошибаться.
Да, причем безотносительно языка программирования, если мы говорим о программистах
A>Ясно, что сборка мусора (и другие вкусности managed языков) позволяют избежать ряда проблем,
GC есть не только в управляемых языках
A>но сводит ли она все проблемы на нет?
Нет конечно, иначе Брукс давно бы пустил себе упомянутую тобой пулю в лоб.
A>Словом я уверен, что и C# не панацея.
оспади, ну я же нигде, ну ровным счетом нигде, не упоминал в этой теме именно про шарп, а? Дело в том, что и на неуправляемых языках можно писать безопасный код. Сложнее, затратнее, но можно. Но много ли ты знаешь контор, где внедрен SDL? А ведь это весьма неплохой способ существенно повысить безопасность разрабатываемого кода малой кровью, безотносительно в т.ч. используемых языковых средств. Да фиг с ним с SDL, проблема не столько в том, что на си и плюсах можно легко огрести полный набор уязвимостей фон-Неймановской архитектуры
и не столько в отсутствии управления безопасностью в процессах разработки, сколько в отсутствии культуры разработки безопасного кода в серой массе разработчиков. Я сейчас имею неплохие шансы хватануть кучу минусов за предыдущее предложение от тех, кто не в курсе различий между безопасностью кода и безопасностью проекта, поэтому поясню: второе суть — результат совместных усилий всех членов команды, направленный на минимизацию всех, выявленных в проекте рисков по информационной безопасности. Это то, что начинается еще до написания кода и не заканчивается после того, как код написан и передан в продуктив. Это и спорные решения относительно архитектуры приложения и монотонное тестирование по безопаности и обязательные security-review, применения средств типа SAL в С++ проектах, принятие решений об уходе на управляемые платформы в ущерб производительнотсти, да много чего еще. Да, это — дорого, да, это — долго, да, это — оказывает существенное влияние на проект сразу в нескольких аспектах. И разворачивать подобную деятельность в проекте необходимо лишь тогда, когда есть четкое понимание того, что это даст и почему это, в долгосрочной перспективе, будет выгоднее, чем задвигание вопросов безопасности на второй план.
А вот второе — лежит целиком и полностью на совести каждого конкретного разработчика-индивидуума. Это просто набор правил о том, как надо (или не надо) писать код, причем большинство из них вообще не привязаны к какому-либо языку. Также, большинство их них не добавляют какой-либо особенной лишней работы программеру (разница в оверхеде между использованием строк с сплайсингом/конкатенацией и параметризованными SQL-запросами стремится к нулю, с учетом тех рисков, которые закрывает второй способ). Это — как правило не говорить во время еды — да, на протяжении всей жизни может доставить некоторые неудобства, но значительно снижает риск, что однажды, человек задохнется, подавившись принимаемой пищей (а кроме того, это еще и вежливо и считается признаком воспитанности ). Или — как правило мыть руки после посещения туалета. Можно и не мыть, и в большинстве случаев ничего не случится, однако одного раза заболевания геппатитом, думаю хватит, чтобы потом запомнить это правило на всю жизнь.
И вот когда это отношение смешивается в равных пропорциях с чуством свободы, которую дает программирование на тех или иных языках и начинаются локальные армагеддончики в кусках кода, написанного таким программером.
Так почему разработчики в большинстве своем, мало того, что не следуют этим правилам, так еще и пытаются убедить всех вокруг в своей правоте и вредности того, что лично я, например, считаю признаком профессионализма, при этом культивируя ништяки, получаемые от свободы, предоставляемой им теми или иными языками?
A>Кстати, ядро линукса пытались переписать на C++.
Да там и Линус изначально это не поддержал в силу своего специфического отношения к плюсам.
A>Даже из этой попытки не вышло ничего хорошего — хотя в этом контексте некорректно сравнивать C# и С++.
А вот из попытки написать ядро ОС на шарпе вышла сингулярити, переросшая в напрочь засекреченную под неблагозвучным названием Midori.
Здравствуйте, Tilir, Вы писали:
T>А свобода программиста, которую даёт C, ну да в том числе и свобода ошибаться, это самое ценное что у меня, например, есть.
А почему для тебя свобода "что хочу, то и ворочу" важнее чем "ворочу все, что можно"?
Здравствуйте, rfq, Вы писали:
M>> А с какой радости? Чем плох JIT в ядре? Чем плох realtime GC в ядре? Мало было в линухе утечек? rfq>Вот только и JIT и GC сами-то пишутся на C++.
Решение сократить плоскость реализации атаки сразу на целый класс уязвимостей до двух-трех модулей платформы, мне представляется более грамотным, по сравнению с отказом от их использования вообще.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Нужна ли нам свобода ? Для того, чтобы ответить, надо задать другой вопрос — а что вообще надо ?
PD>Говорить буду от своего имени. Согласные могут присоединиться
PD>Мне надо
PD>1. Иметь возможность делать все, что я хочу. Разумееется, в рамках того, что мне позволяет аппаратура и (возможно) операционная система, а также мои мозги. Слово "возможно" здесь не случайно. В определенных границах я могу изменить поведение ОС, добавив к ней свой модуль (драйвер)
Т.е. тебе необходимо ощущение того, что ты можешь сделать все что захочешь под конкретной ОС (именно ощущение, т.к. меня терзают смутные сомнения о частоте возникновения потребности в написании драйвера при решении повседневных задач).
PD>2. Чтобы это работало как можно более быстро и потребляло ресурсов как можно меньше. Я пишу не серверное ПО, а моя ОС не MS-DOS, так что работать это все будет в коммунальной квартире, а поэтому ванную занимать на 3 часа нечего и свет в туалете надо тушить.
Знаешь, у меня был рабочий (конторский ноут) с одним ядром на полтора гигагерца и одним гигом оперативки. Однажды я подошел к коллеге, который отвечает в ИТ за апгрейды оборудования для рабочих мест и спросил, что нужно сделать, чтобы заменить себе ноут на более мощный? Он ответил, что по старой дружбе, правильного скриншота закладки "быстродействие" из диспетчера задач, на котором будет наглядно показано, как мне грустно работается на текущей конфигурации, будет более чем достаточно. Казалось бы, простая задача — занять проц на 70-80% (не на 100% — чтобы не палиться) и вызвать безудержный своп. Попробуй решить ее на C# (на самом деле, это легко, но тогда я еще не владел дао управления памятью в .net)... Мне это удалось минут через 15-20 борьбы с GC и при этом прога проработала около 5 минут, прежде чем началось то, что мне было нужно. С тех пор у меня двухядерный ноут на 2,5 гигагерца с 4 гигами оперативки
Намек, думаю понятен...
PD>Первый мой вопрос — а как с п.1 и 2 будет. Гарантируете ли вы, что я по-прежнему смогу делать все. что я умею делать, использовать все те возможности ОС, которые умею использовать ? И будет ли это работать столь же быстро и требовать ресурсов не больше ?
Я прямо сейчас, безотносительно языка, могу гарантировать, что это тебе не нужно в 80-90 процентах решаемых тобой задач
PD>Как только я этот вопрос задаю, так сразу мои оппоненты начинают юлить.
Они просто пугаются, т.к. думают что ты работаешь на оборонку и пишешь софт для ядерных боеголовок
PD>Сможешь , наверное, только вот иногда тебе придется на неуправляемый код переходить, а иногда и вообще не получится. Но ты мол, не огорчайся, если не получится, то это значит, что тебе такое и не надо, мы тебе другое предложим... И работать это будет быстрее. Ах, у тебя все же медленнее получается... Ну значит , ты неправильно меряешь, не на тех тестах , и вообще имей в виду — в светлом будущем наш код намного лучше будет. Светлое будущее обещать они очень любят.
А можно взглянуть на реальную (не надуманную задачу) где быстродействие, достижимое на управляемых платформах является неприемлемым, из твоей практики? А десяток таких задач?
PD>Я утрирую ? Нет.
Нет. Навскидку — усемеряешь.
PD>Ну насчет скорости — мы тут уже столько копий сломали, что вряд ли стоит еще одно ломать. А вот насчет возможностей... Никакой я не специалист в C# и .NET, я там просто дилетант, не более. Но тем не менее мне неоднократно доводилось давать советы в форуме по .NET, причем за эти советы я получал баллы в рейтинге.
*закадровый шепот* Павел, я тут за такую фигню, вообще не имеющую отношения к программированию, пол своего рейтинга заработал...
PD>Разумеется, мне и в голову не придет давать совет, когда речь идет о каких-то итераторах или замыканиях, но вот когда речь заходит о взаимодействии с Windows, об использовании ее механизмов — мои советы порой звучат для некоторых там как откровение.
Да, меня это тоже удручает. К сожалению, в .NET еще встречаются задачи, когда полностью абстрагироваться от окружающей тебя ОС не получится при всем желании
PD>Хорошо, конечно. Что я еще могу сказать! Вы предлагаете мне отказаться от свободы, но в ответ обещаете, что я смогу писать код без ошибок ? Да — мне в ответ. PD>Без любых ошибок ?
PD>И тут опять мои опппоненты юлить начинают. Мемори ликов у тебя не будет. Ладно, говорю, спасибо, хотя у меня их и так не много, инструменты для их обнаружения есть. Индекс у тебя за пределы массива не выйдет. Тоже спасибо, отвечаю я, он и так у меня как правило не выходит, если только я сам не хочу, чтобы он выходил. Что там еще ? Уничтоженные объекты не будешь использовать. Тоже спасибо, хотя и так попытка взятия по NULL определяется без особого труда.
Тебя это просто перестанет беспокоить с переходом на .NET А если это сейчас тебя и так не беспокоит, то и переходить на .NET, пожалуй не стоит. Но мне вот что интересно: можно чуть подробнее про поиск ликов (и его достоверность), про основу твоей уверенности в том, что индексы не выходят за предел и про то, как именно ты определяешь попытки использования нулевого указателя?
PD>А от логических ошибок вы меня оградите ? От ошибок алгоритма или его реализации ? От того, что я при вычислении корней уравнения вместо b*b-4*a*c написал b*b+4*a*c ? От того, что я понимал эту задачу так-то, а она, оказывается, выглядит совсем не так, но это проявляется в одном случае на миллион ? С IndexOutOfRange я как-нибудь и так справлюсь, а вот с этим-то что делать ? Поможете ? PD>А в ответ — либо тишина, либо рассуждения о светлом будущем, когда весь код будет верифицироваться (надо полагать, верификатор будет распознавать подпрограмму вычисления корней уравнения, знать этот алгоритм и подскажет мне — ты там плюс вместо минуса поставил Остается только понять — почему он в таком случае за меня программу сам не написал.)
Тут затрудняюсь что-либо прокомментировать, т.к. ничего подобного лично я не утверждал
PD>Тот код, который ты показал, при определенных условиях вполне безупречен.
Он не безупречен по одной лишь причине: у его разработчика не было ни малейших оснований предполагать, что указатель на пайп не может быть нулевым при входе в функцию, либо после входа в функцию, но до установки мьютекса.
PD>И вот эти логические ошибки меня больше всего и беспокоят. Они у меня львиную часть времени съели. А не выходы индексов и прочая чепуха.
Эта самая "чепуха" занимает 45% от всех уязвимостей, когда-либо публиковавшихся на secunia (один из наиболее авторитетных и полных источников подобной информации). Поэтому меня эта чепуха также беспокоит. Впрочем, как и логические ошибки, если быть честным.
PD>Резюмирую. Готов ли я отдать свою свободу (в программировании, конечно, только там) за что-то ? Пока не дадите твердого ответа на п.1 и 2. — категорически не готов. А когда дадите — тогда поторгуемся по п.3. Пока хорошо не заплатите — тоже не отдам.
Неужели оно того стоит?
P.S: Про вертолет, как я понимаю, это было в отместку за "простреленные ноги"?
Здравствуйте, Pavel Dvorkin, Вы писали:
OE>>ну и аргумент, охренеть — ваша кофеварка не умеет стирать бельё!??? в топку её! PD>Если меня больше всего интересует, как постирать белье , а ты мне предлагаешь кофеварку — в топку!
Угу, правда не понятно при этом, каким боком тебя интересует стирка белья в рамках процесса приготовления кофе
Здравствуйте, rfq, Вы писали:
rfq>Вот только и JIT и GC сами-то пишутся на C++.
Если мне не изменяет память, .NET'овский GC был написан на LISP'е, а код на C++ получился путём трансляции специальной тулзой. Которая вроде тоже вовсе не на C++ была сваяна
Re: Павлу Дворкину: о понимании того что делаешь и простых п
Я не понимаю вас Господа. Мы же не политики и философы, чтобы вести разговоры о свободе. Так мы договоримся что железо вредно так как ограничивает свободу.
Не думаю что найдется большой процент програмистов на С++ или С которые откажутся от статического и динамического верификатора кода.
Я не думаю что найдется много прогамистов которые бы отказались от снятия накладных расходов накладываемых JVM.
Зачем писать утилиту администрации ДБ на С++?
Зачем писать мультимедиа кодеки на питоне?
Неужели математики используют матлаб вместо PHP иззи любви к свободе?
Я один ничего не понимаю? Неужели в среде технических инженеров нетехнические аргументы имеют больший вес?
"90% задач не требуют эфективной реализации и расходуют пренебрежительно мало памяти" — это повод обобщить вывод на 10% задач?
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Замечу, что эти пожелания выстроены мной строго в соответствии с моими приоритетами. Иными словами, если мне предлагается нечто, резко улучшающее пункт i+1 за счет ухудшения в пункте i — меня это не устроит.
Может именно в этом ваша ошибка ? Вы пытаетесь строить приоритеты в отрыве от выполняемой задачи? Много моих отличных знакомых програмистов, выстраивают приоритеты исходя из задачи, я с ними солидарен.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[2]: Павлу Дворкину: о понимании того что делаешь и просты
Здравствуйте, minorlogic, Вы писали:
M>Не думаю что найдется большой процент програмистов на С++ или С которые откажутся от статического и динамического верификатора кода.
Э-э-э... А Вы точно уверены, что "большой процент програмистов на С++ или С" вообще знают что такое "статический и динамический верификатор кода" ?
M>Я не думаю что найдется много прогамистов которые бы отказались от снятия накладных расходов накладываемых JVM.
Ну вот лично меня эти самые накладные расходы беспокоили только на J2ME Там где на всё про всё было 100Кб хипа, а само приложение приходилось упихивать в 30Кб.
M>Зачем писать утилиту администрации ДБ на С++?
Именно! Но ведь того — пишут
Re: Павлу Дворкину: о понимании того что делаешь и простых п
Здравствуйте, IT, Вы писали:
IT>С такими низкоуровневыми приоритетами можно решать только низкоуровневые задачи. Для узкой группы задач вроде ковыряния в железках это возможно будет работать. О решении бизнес и ряда системных задач можно сразу забыть навсегда.
Бизнес (в твоем понимании) — пожалуй, да, так как там царит, похоже, принцип — хоть как, но быстрее, давай-давай. Впрочем, есть и другие бизнес-задачи, и там это вполне работает (в моей работало).