Re[13]: История одной оптимизации
От: FR  
Дата: 29.10.05 11:03
Оценка:
Здравствуйте, Nickolay Ch, Вы писали:


FR>>А тут никто вроде и не предлагал умозрительно все решать.


NC>А вот предлагали, не будем показывать пальцем...

NC>Посмотрите соседние топики.

да ладно


FR>>Нет не Ok есть ситуации в которых если следовать по порядку Владовым рекомендациям просто придется выбросить то что уже сделал и написать все по новой.


NC>Жестких правил не бывает, не в армии

NC>Но пункт 2 вроде как удовлетворяет тому, о чем вы писали — есть жесткие требования работы на пределе возможностей:
NC>"задумываемся над тем в каких условиях он должен работать ... выбираем приемлемые алгоритмы и средства (библиотеки, рантаймы, компиляторы и т.п.)"

NC>Может я вас не так понял...


Может и не так, но в тех ситуациях про которые говорю я первым пунктом должно стоять тестирование и прототипизация, а проектирование уже вторым и структура программы будет в первую очередь подчинятся не требованиям красоты и простоты модернизации, а требованиям эффективности работы. Просто могу предположить что вы с Владом просто не работали при таких требованиях и не выкидывали на половину готовый красивый, но тормозной проект.
Re[14]: История одной оптимизации
От: Nickolay Ch  
Дата: 29.10.05 11:15
Оценка: +1
NC>>А вот предлагали, не будем показывать пальцем...
NC>>Посмотрите соседние топики.

FR>да ладно

Да сто пудов


FR>Может и не так, но в тех ситуациях про которые говорю я первым пунктом должно стоять тестирование и прототипизация, а проектирование уже вторым и структура программы будет в первую очередь подчинятся не требованиям красоты и простоты модернизации, а требованиям эффективности работы. Просто могу предположить что вы с Владом просто не работали при таких требованиях и не выкидывали на половину готовый красивый, но тормозной проект.


Предлагаю не спорить, потому что в общем согласен с вами
Как переставить пункты — это уже к конкретной задаче, не надо что то жестко фиксировать, я все время пытаюсь сказать, что абсолютных истин не бывает, надо адаптироваться

Я дейсвтительно не работал над серъезными вещами при сверхжестких требованиях к производительности, всегда можно было решить проблему с помощью расширения аппаратной части, кстати даже интересно было б когда-нибудь поучаствовать в подобном проекте, но текущая работа требует как раз обратного(быстрое написание, надежная работа приложения, простота расширения и поддержки, а вовсе не оптимизаций), а для участия в свободных проектах нет времени, да и ленив я
ЗЫ Сверхзадача — написать код так(выработать методы написания такого кода), чтобы было и красиво в смысле дизайна и легко оптимизировался при необходимости. Но честно говоря, не уверен, что это решиться даже в среднедалеком будущем.
Так что оставим это идеалистам
Re[10]: История одной оптимизации
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.10.05 12:06
Оценка:
Здравствуйте, FR, Вы писали:

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


Эти правила никогда навредить не могут. Просто акценты смещаются. При выборе алгоритмов и проектных решений фактор производительности или ресурсоемкости оказывает большее воздействие на решение.

Ну, и еще хочется сказать, что все же большая часть приложений все же пишется не для контроллеров где все дико ограничено. Даже игры вроде Квэйка 4 не требуют истошного битовыжимания. Наоборот они скорее требуют понимания, что основные тормоза происходят из проектных решений.

В любом, случае совет не предпологать, а знать лишним никогда не будет. Прежде чем убить время на "более оптимальное решение" неплохо бы убедиться, что от него будет реальный бенефит.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: История одной оптимизации
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.10.05 12:06
Оценка:
Здравствуйте, FR, Вы писали:

FR>А тут никто вроде и не предлагал умозрительно все решать.


ХМ. Именно это и предпологали. Заявления типа "а вот когда некие умники начинают из файла по одному байту читать" как раз и является таким примером. Причем тут даже нельзя сказать правильно оно или нет. Все упирается во множество факторов.

FR>Нет не Ok есть ситуации в которых если следовать по порядку Владовым рекомендациям просто придется выбросить то что уже сделал и написать все по новой.


Рекомендации не совсем мои. По ним собственно 90% коммерческого софта делается. Это просто тут рассадник инакомыслия. Собственно их верность подтверждает то что коммерческий софт живет и здравствует.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: История одной оптимизации
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.10.05 12:06
Оценка:
Здравствуйте, gear nuke, Вы писали:

GN>Таки почитав, как народ начал сравнивать inline и не-inline варианты функций при чтении не то с диска, не то из кеша файловой системы ОС,


Вот и я о том же. Грустно, блин.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: История одной оптимизации
От: FR  
Дата: 29.10.05 12:56
Оценка:
Здравствуйте, VladD2, Вы писали:

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


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


VD>Эти правила никогда навредить не могут. Просто акценты смещаются. При выборе алгоритмов и проектных решений фактор производительности или ресурсоемкости оказывает большее воздействие на решение.


Все-таки могут, я на своем опыте прошел, но так как не мастер рассказывать байки, то пересказывать грустную историю не буду. Кроме битовыжимания есть еще один тип программ, где эти правила могут принести больше вреда чем пользы, это разовые небольшие утилтиты, и вообще небольшие программы (~20000 строк).

VD>Ну, и еще хочется сказать, что все же большая часть приложений все же пишется не для контроллеров где все дико ограничено. Даже игры вроде Квэйка 4 не требуют истошного битовыжимания. Наоборот они скорее требуют понимания, что основные тормоза происходят из проектных решений.


Игры понятие очень растяжимое, но сейчас больше 80% рынка игр это приставки, а это в некторых аспектах похлеще контролеров,(ситуация такая что аппаратура неизменна а требования к программам все выше и выше) и битовыжимание там нормальная практика.

VD>В любом, случае совет не предпологать, а знать лишним никогда не будет. Прежде чем убить время на "более оптимальное решение" неплохо бы убедиться, что от него будет реальный бенефит.


это да.
Re[13]: История одной оптимизации
От: FR  
Дата: 29.10.05 12:56
Оценка:
Здравствуйте, VladD2, Вы писали:

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


FR>>А тут никто вроде и не предлагал умозрительно все решать.


VD>ХМ. Именно это и предпологали. Заявления типа "а вот когда некие умники начинают из файла по одному байту читать" как раз и является таким примером. Причем тут даже нельзя сказать правильно оно или нет. Все упирается во множество факторов.


Ладно, они немного погорячились, но и ты тоже не во всем прав.

FR>>Нет не Ok есть ситуации в которых если следовать по порядку Владовым рекомендациям просто придется выбросить то что уже сделал и написать все по новой.


VD>Рекомендации не совсем мои. По ним собственно 90% коммерческого софта делается. Это просто тут рассадник инакомыслия. Собственно их верность подтверждает то что коммерческий софт живет и здравствует.


Да я сам часто примерно по такой схеме и работаю, но ситуации бывают разные и есть отрасли с многомиллиардными оборотами в которые с такими рекоменациями лучше не лезть.
Re[13]: История одной оптимизации
От: Nickolay Ch  
Дата: 29.10.05 13:22
Оценка:
VD>Рекомендации не совсем мои. По ним собственно 90% коммерческого софта делается. Это просто тут рассадник инакомыслия. Собственно их верность подтверждает то что коммерческий софт живет и здравствует.

Тут вообще в основном собираются люди, чтобы поубивать время, насколько я понимаю(поправьте кто-нить, если ошибаюсь). Обычно на философствования времени то не остается.
Спорить с теми, кто убежденно следует каким то догматам, бессмысленно, их не переубедить. Действительно напоминает религиозные споры.
Единственный смысл, который я вижу в ответах в данном форуме(равно как и в выставлении оценок, согласий, несогласий), это, чтобы те, кто только начинает программировать и попадает сюда, могли выработать более прагматичный(специально не пишу "более правильный") подход к разработке, дабы прийдя на работу писали софт, адекватный текущему состоянию рынка(не пишу "хороший"), а не строгали бы велосипеды, меряясь пузами, кто сколько байт съэкономил, и у кого код быстрее работает на несколько процентов, не философствовали в курилках и на форумах в стиле: "ах, как бы тут заоптимизить, чтобы было все зашибись". От такого софта только головная боль и производителям и заказчикам.
Не секрет, что наше образование и обучение программированию в вузах(про школы лучше не вспоминать), оставляет желать много лучшего, и подталкивает к уже упомянутому ужасному(имхо) стилю, ведь многие преподаватели любят так отругать студента за выделение нескольких лишних байт, чтобы он долго это помнил.
Re[2]: История одной оптимизации
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.10.05 13:42
Оценка: 3 (1) +3 -1 :))
Здравствуйте, McSeem2, Вы писали:

MS>Влад, это все хорошо конечно, спасибо за рассказ. Но как-то злобно очень. Типа "вы все п...сы, а я — Дартаньян".


Хм... все п...сы, говоришь? Дартаньян, говоришь? Ну, тебе виднее. Может это и правда можно разглядеть в моих словах, если очень постараться.

Тогда к тебе встречный вопрос. А не замечал ли ты, что твои посты частенько содержут нечто очень смахивающиее на описанное тобой Дартоньянство? Ну, то поделишь (невзначай так) всех на себя динозавра и всех остальных... индусов, то побеспокошся не мешает ли клизьма оппонентам, то еще как-то заденешь. Или это по доброте душевной? Ты то ведь точно прав, а оппонент глядишь и правда не замечает что у него из уха клизма торчит.

MS> Ну почему ты так неуважительно отзываешься о Павле Дворкине?


Да, я скорее не неуважительно. Я скорее раздражительно. Возможно я тут не прав и перегибаю плаку. Однако я искренне считаю, что такая безрассудная борьба за производительность исходящая от преподавателя крайне деструктивно скажется на его учениках. Свобода слова и свобода после слова несомненно незыблема. Но это до тех пор пока речь идет о твоем личном мнении. Как только ты начинашь учить других, то твое мнение превращается в инструмент воспитания. Ведь ты отвественнен за то что будет в головах твоих учеников. И если неподготовленные головы пропаласкать вот такими залихватскими речами о производительности, то практически гарантированно можно получить людей которые просто не в состоянии будут понять, что такое грамотное проектирование, так как их учитель им обяснил, что словами о грамотном проектировании обычно прикрывают неумение и не желание писать оптимальный код. Ну, а если это еще смазать твоими рассуждениями об индусах... Кому же хочется быть поставленным в один ряд с индусами?

MS> Он старше нас с тобой, между прочим.


Бесспорно.

MS> И гораздо опытнее.


А вот это сложный вопрос. Ты опыт измеряешь по банальному возрасту? Ну, вот, например, мой отец старше всех нас. Когда-то программировал на черт знает чем, но сегодня приходит за советом ко мне, так как в современных технологиях я плаваю как рыба, а он выучил что нужно было. Но по возрасту он несомненно опытнее.

В общем, вопрос опыта — это сложный вопрос. И не нужно его использовать как плаку.

MS> И то, что твое мнение не совпадает с его, ни в коем случае не значит, что ты прав, а он — нет. Выражаясь тюремной феней, ты пытаешься "зачморить" всех, кто с тобой не согласен. Не надо этого делать. Это очень некрасиво выгдлядит.


О, мы уже для выразительности на феню перешли. Видимо это как раз чтобы "зачморить"...

Ну, да ладно оправдываться по поводу зачмарения тут бессмысленно. Лучше как нибудь собраться с силами и попытаться доходчиво объяснить свое возмущение его позицией. В конструктивном ключе, тык-сызать и без обиняков.

MS>Я тоже писал резидентный help. Я его так и назвал — MaxHelp или MHelp. Занимал в памяти он 5K и работал очень шустро. Это был полноценный гипертекст, только без картинок. К нему прилагался компилятор, собирающий файлы из текстового вида. И этот компилятор тоже читал файлы по-символьно. Но через некую свою прослойку. Я очень быстро обнаружил, что fread по одной букве работает медленно. Далее я обнаружил, что вызов int21 для прямого посимвольного чтения — это еще раз в 100 медленнее. Каков выход? — читать блоками через int21, а выдавать по-байтно. Фактически, это эмуляция fread, но с гораздо меньшими накладными расходами. Буфера в 256 байт оказалось вполне достаточно. Это для компилятора. В самом резиденте надо было читать как вперед, так и назад. Ну что же, для этого делается всего-навсего двойной буфер — 512 байт и он "поддергивается" в нужные моменты функцией memmove. Все! Была обеспечена и скорость и O(1) памяти. Работало и на меговых файлах без какой-либо видимой задержки на 286/12MHz. Я потратил на отработку этой стратегии пару дней. Это является тривиальнейшей задачей. И "программизм" как таковой здесь вообще ни при чем. Здесь требуются инженерные навыки или даже просто "common sense" как говорят буржуи-пиндосы.


Уууу... ты глянь? А кто тут только что про зачмырение говорил? Я же только упомянул откуда росли ноги компилятора о котором история, а ты выцепив из контекста слово "резидентный" и пошел заниматься вульгарной пенисометрией. Как то не укладывается это с образом народного обвинителя. Не находишь? Я вот нахожу, так что извини, но почин не поддержу.

MS>Так что ты хотел сказать-то этой историей?


Почему-то мне кажется, что как раз ты прекрасно понял, что я хотел сказать этой историей. Для хорошего программиста эти слова конечно сама собой разумеющаяся банальность. Не спорю. Но эти слова не для них. Они скорее для тех кто запуская компиляцию со страхом думает "А не получится ли маоя порграмма слишком медленная? А не нужно ли выжать еще пару бит из тройки байт?". Остальным они или еще не нужны, и или вообще не нужны.

MS> Продемонстрировать свое невежество?


Забавно... "невежество". Это вроде "Ты уже бросил пить виски по утрам?". Как не отвечай, все равно не красиво получится. Прийдется ответить вопросом на вопрос. В чем ты углядел не вежество, то?

MS> Думаю, что нет. Но тем не менее, у тебя это вполне получилось. Извини за резкие слова.


Да, что уж извеняться. Получились не плохо. Цель достигнута.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: История одной оптимизации
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.10.05 14:38
Оценка:
Здравствуйте, FR, Вы писали:

FR>Ладно, они немного погорячились, но и ты тоже не во всем прав.


Я на абсолютную правоту и не притендую.
Но все же хотелось бы услышать в чем я не прав конкретно.

FR>Да я сам часто примерно по такой схеме и работаю, но ситуации бывают разные и есть отрасли с многомиллиардными оборотами в которые с такими рекоменациями лучше не лезть.


Возможно. Но я их не видел.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: История одной оптимизации
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.10.05 14:55
Оценка: +2
Здравствуйте, Nickolay Ch, Вы писали:

NC>Тут вообще в основном собираются люди, чтобы поубивать время, насколько я понимаю(поправьте кто-нить, если ошибаюсь). Обычно на философствования времени то не остается.


Ну, почему же? Я из этого форума почерпнул не мало новго. Многое из этого использую в своей работе редактором. Так что для меня это очень даже полезный форум.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: История одной оптимизации
От: FR  
Дата: 29.10.05 15:11
Оценка:
Здравствуйте, VladD2, Вы писали:

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


FR>>Ладно, они немного погорячились, но и ты тоже не во всем прав.


VD>Я на абсолютную правоту и не притендую.

VD>Но все же хотелось бы услышать в чем я не прав конкретно.

Просто тон надо было помягче и без личных наездов. Ну и не надо говорить за всех, список может и подходит в очень многих случаях, но не для 90% точно.

FR>>Да я сам часто примерно по такой схеме и работаю, но ситуации бывают разные и есть отрасли с многомиллиардными оборотами в которые с такими рекоменациями лучше не лезть.


VD>Возможно. Но я их не видел.


Так пожалуйста разработка игр под консоли и другие не PC устройства.
Re[14]: История одной оптимизации
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 29.10.05 15:19
Оценка: +3
Здравствуйте, Nickolay Ch, Вы писали:

NC>Тут вообще в основном собираются люди, чтобы поубивать время, насколько я понимаю(поправьте кто-нить, если ошибаюсь).


В моем случае ошибаешься. Мне участие в этом форуме помогает избавляться от однобокости взглядов, которая неизбежно возникает при программировании на одном языке, в проектах одного типа и участием только в специализированных форумах (к примеру, C/C++ или Unix).
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[16]: История одной оптимизации
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.10.05 15:50
Оценка:
Здравствуйте, FR, Вы писали:

FR>Просто тон надо было помягче и без личных наездов.


А... Тут согласен. Погорячился конечно.

FR> Ну и не надо говорить за всех, список может и подходит в очень многих случаях, но не для 90% точно.


Я говорил за себя. Цифра конечно с потолка, но это моя оценка.

FR>Так пожалуйста разработка игр под консоли и другие не PC устройства.


Да не выжимает там никто 100% во всех случаях. Выжимаются там обычно 3D-движки, да и то не по части мелких оптимизаций. Скорее оптимизации там идут на уровне алгоритмическом и API-ном.

Простой пример. Туча игр используют интерпретирующие скрипты для описания логики. Это верх неразумности. Одако многие считают что производительность оных скриптов погоды не делает. А это и есть жизнь по описываемым мною приципам. Другое дело, что скрипт можно было заменить на управляемый или функциональный язык, короче, на типобезопасный и компилируемый язяк. Но это уже отдельная песня.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: История одной оптимизации
От: vdimas Россия  
Дата: 29.10.05 15:55
Оценка: 149 (14) +5
Здравствуйте, VladD2, Вы писали:

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

В общем, так. Свой первый пост ты предоставил в настолько разжеванном виде, и до того гипертрофированно стоят акценты в нужных местах, что основной посыл поймет даже человек, весьма далекий от программирования как такового. Давай условимся считать, что оппонент понял, просто не согласен, либо же имеет замечания/дополнения.

V>>Я с 1990-го работал на Turbo C, там можно было менять размер буфера структуры FILE (ты же ее использовал?)


VD>Я уже не помню что я использовал. Название getch и то взято на абум как одно из близких. К делу это отношения не имеет. Ты просто вообще ничего не понял из написанного. Попробуй перечитать текст не обращая внимания на технические детали.


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

Так вот, если уж речь идет об отношении затраченных усилий к полученному эффекту, то очевидно, что необходимо минимизировать потраченные усилия, либо отказаться от их траты, если получаемый эффект невелик. Так вот, ОЧЕНЬ ЧАСТО т.н. "оптимизация" ничего не стоит, никак не портит программу, не усложняет код и не требует полного повторного цикла тестирования. Мы давно пишем свои программы не с 0-ля, не с машинных кодов, а основываясь на весьма мощных платформах весом в миллионы строк исходников. Владение информацией об этом окружении помогает выбрать оптимальный путь решения задачи. Сам выбор оптимального пути уже является оптимизацией, даже если разработчик не потратил ни лишней минуты на это. Назовем это дело по другому: "грамотное инженерное решение".

Ты в своем посте красочно обрисовал тонны потраченных усилий, были ярки картины загубленной красоты исходников... Ты ведь "потомству в пример" это все написал, признайся? Так вот, потомство должно так же знать, что недостаточное владение инструментом может породить все эти проблемы даже при решении такой несложной задачи как буферизация ввода.

Опять же... Требования и еще раз требования... Ну почему мы всегда обсуждаем что-то абстрактно, и как тут можно понять, чьи позиции устойчивее, если контекст не задан? Более-менее воссоздать картину можно попробовать из твоих эмоциональных акцентов. Но где гарантия, что их правильно истолковали? А может быть ты тогда не совсем правильно истолковал внешние условия? Какой был процент "покрытия" этими кеш-драйверами? Предназначалась ли твоя прога и для XT? Даже для тех, у кого 256кБ? (На них эти всякие кеши не ставились принципиально никогда, но тем не менее одно время таких машин было достаточно)

VD>Посыл явно непонятен, раз ты продолжаешь рассуждать о каких-то там структурах и версиях компиляторов.


Ловко, однако не зачтено.

Диктую большими буквами: ЕСЛИ ВАМ И ПРОЕКТУ ЭТО НИЧЕГО НЕ СТОИТ, ТО ВЫБИРАЙТЕ НАИБОЛЕЕ ЭФФЕКТИВНОЕ РЕШЕНИЕ ЗАДАЧ НА ЛЮБЫХ УРОВНЯХ.

Ключевая фраза: "ничего не стоит".
Понимаешь, этот закон распространяется не только на ПО, а вообще на всю инженерию. Правда он там звучит чуть построже, без первой половины, а в конце добавляется.. ну примерно следующее: "в рамках сроков и бюджетов проектов".

Кстати, эта формула верна и для ПО, выполненного не на заказ, а предназначенного для агрессивной конкуренции.

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

Но тем не менее, факт остается фактом. Тысячи и тысячи программистов пишут одно и то же, выпускают массу продуктов очень близкой функциональности, все получают немаленькую ЗП, и вопрос минимизации затрат на разработку ПО встает в гораздо более жесткой форме — быть бизнесу или же провалиться с треском. Отсюда все эти веяния. Теперь примерно понятно, почему я там 3 поставил?

В своей жизни я уже успел написать несколько учетных систем, массу системных и т.д. и т.п. И очень многие мои коллеги так же. Кое какие продукты используются до сих пор, кое-какие скоро начнут активно использоваться (я очень надеюсь). Однако, я ни на секунду не забываю, что программист (и я в том числе) сейчас используется крайне неэффективно. Процесс раздела рынка ПО сейчас в самом разгаре, и продлиться по прогнозам еще не менее 20 лет, т.е. сейчас рулят правила джунглей. А правила не гласят — "сделай лучше всех", правила гласят: "сделай всех", или еще короче: "выживи". И вот такой вот внешний контекст оказывает весьма серьезное влияние на умы даже опытных разработчиков, да такое, что они в пылу спора уже и не помнят, где причина а где следствие обсуждаемых вещей.

Ну представь хоть на секунду, что в стремлении выпустить, например, новую Тойоту на рынок, с новыми, прямо-таки космическими внешними обводами, фирма Тойота пошла на следующие допущения:
— Весит в 2 раза больше, однако, по-прежнему шустро ездит за счет более мощного мотора
— Топлива она жрет в 2 раза больше


Такое может привидется только в кошмарном сне кокого-нибудь инженера Тойоты. В реальности, каждая следующая модель выходит со все лучшими характеристиками, ос более оптимальным весом, с большим КПД (люди, вы еще помните это слово) двигателя.

Но ведь это не удивительно, над новой моделью работаюбт сотни инженеров. А у нас, у программистов, примерно 5-15 человек делают проекты, по информационной сложности мало уступающие проекту той же Тойты. Поянтное дело, что для самого факта успешности подобных проектов жизненно необходимо максимально все упрощать и выкидывать все лишнее (и оптимальные пути разумеется тоже). А иначе как? Человеческий мозг — весьма ограниченная в своем объеме штуковина.

... Хотел еще примеров написать, но вроде и так общий (самый общий) мой посыл должен быть понятен.

А что касается конкретных выводов для молодого поколения: ребята, исходим из того что есть (собственно, это и есть формула выживания ).

То, что современное положение дел малость не нравится некоторым "динозаврам" и "птеродактилям" пусть не беспокоит. Отнестить к этому можно с долей прагматичности — по-максимуму выведывать у склонных к сентиментальности "старичков" (35-45 лет) секреты активно утрачиваемого мастерства. Возможно, вам оно когда-нибудь пригодится.



V>>Ответ в том, что иногда оптимизация достается весьма малой кровью. И как вывод: вовсе игнорировать возможность оптимизации не стоит (собственно, я настаиваю на таком подходе). Надо лишь соизмерять потраченные усилия и получаемый эффект.


VD>Дажа малая кровь в сумме может привести к смерти от обезкровлевания. Но тут важнее не это. Важнее то, что миросозерцание пропагандируемое тов. Dvorkin-ым (против этого миросозерцания и был направлен этот рассказ) приводит к тому, что люди начинают пытаться написать максимально оптимальный (с точки зрения производительности) код и вместе с водой выплескивают ребенка.


Я бы не стриг всех под одну гребенку. К счастью, в крайности бросаются не многие. А что касается текущего положения дел, то на само понятие "эффективности" молодое поколение просто забило. Влад, даже ты пишешь свои программы более менее эффективно (сужу по публикуемым кускам). Ты по другому не можешь, хоть и озвучиваешь другую точку зрения. (гы-гы, кстати). А у нового поколения — ни стыда ни совести по отношению к ресурсам аппаратуры или сети. Я двумя руками за то, чтобы все эти темы по прежнему активно обсуждались, и народ хоть имел представление о том, что оптимальность решения инженерных задач по прежнему в цене. Просто в этих ценах надо ориентироваться (не устану повторять...)

В споре рождается истина, только дураки учаться на своих ошибках и т.д. Как еще молодым научиться оценивать тот хрупкий баланс м/у потраченными усилиями и получаемым эффектом? И еще немаловажно, куда эти усилия тратить. В описанном тобой примере их стоило потратить не на кодирование, а на изучение документации.

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



Знаешь, когда я писал лексические анализаторы, я тоже не пользовался классами строк, и тоже активно использовал стек. При определенной аккуратности лекго исключаются возможности прохода по стеку. Обяснить как?

Т.е., повторю, в отрыве от контекста доказывать свою правоту бесполезно. Лично я поддержал сам факт обсуждения этой темы. Согласен, что Дворкин немного перегибает, но, может он это делает специально, в ответ полное пренебрежение к этому вопросу у окружающего мира?


V>>Понятное дело, что чем больше осведомленность о тонкостях используемых технологий, тем больше можно сделать оптимизаций без какого-либо ущерба для продукта или потраченного времени.


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


Вообще-то, согласно правилам инженерии, самое общее решение является самым неподходящим для конкретного случая. Однако, в ПО повторное использование ничего не стоит (т.е. разможение информации и кода ничего не стоит). И вот мы называем самые общие решения "грамотным дизайном", потому как они повторно применимы. В общем, это совсем другой вопрос — что считать грамотным. Я тоже люблю фреймворки писать.

Добавлю еще насчет грамотного дизайна. Опять все встает с ног на голову. Раньше люди решали путем анализа вполне конкретные программистские задачи. Потом обнаружили их похожесть. Потом дали имена паттернам и использовали так: спроектировал что-либо, максимально удовлетворяющее требованиям, а потом _обяснил_ разработку на языке паттернов. Т.е. язык паттернов — это всего лишь терминологическая база. А молодежь как сейчас что-то проектирует??? Вместо того, чтобы решать поставленную задачу, крутит эти паттерны как кубики Лего, путем полного перебора стараясь подобрать нечто условно отвечающее поставленной задаче. И выходят монстры, один другого страшнее. И _паттэрны_ вроде есть, и неграмотно при этом...


V>>Жаль, что ты не указал точно год, правда, если речь о 386-х и у нас, то предполагаю где-то после 92-го. Если бы ты писал свою утилиту ранее, и позиционировал ее именно для XT (c 4.7 MGh CPU) и без кеша драйва, то все твои усилия уже не выглядели бы такими уж ненужными и бесполезными. Тем более, что описанный способ буферизации не выдерживает никакой критики и вполне справедливо создал хаос в исходниках. Ты тогда еще в школе учился что-ли? Ибо студент после 1-го курса профилирующей специальности должен был просто отвязать интерфейс ввода от конкретной его реализации.

(тут ты не ответил)

VD>Я бы поверил тебе, что ты так всегда поступашь, если бы не видел твоей "тройки" вот на этом призыве
Автор: Pavel Dvorkin
Дата: 05.10.05
. Возможно ты и его не понял доконца, но тогда вопрос можно ставить об адекватности восприятия тобой и вещей вроде объема крови жертвуемой на оптимизации и необходимостью этих оптимизаций. (ни прими это за оскорбление, плиз)


(уффф, чтоб меня так чужие оценки беспокоили...)

В этом месте ты уже забыл, что я настаивал на выборе оптимального инженерного решения, и обращал внимание, что сам этот выбор может ничего не стоить. А оценку я поставил за художественную силу и злободневность самой темы. И за то, что не поленился человек такой большой пост откатать, и при этом вовсе не нудный. В общем, по аналогии с фигурным катанием, оценки не только за технику ставим, но еще и за артистичность.


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


Мы все тебя прекрасно понимаем, мамой клянусь!
Давайте, после артподготовки (обмена любезностями), перейдем к ближнему бою. Выкладывайте у кого что есть из актуальных примеров, когда по чьему-то мнению требвалось принимать волевое решение об затратах на оптимизацию, заодно попытаемся собрать максимум внешних ограничений/требований и оценить адекватность подобных затрат. У меня есть пара весьма актуальных примеров, если народу будет интересно, с удовольствием пообсуждаю.

Re[17]: История одной оптимизации
От: FR  
Дата: 29.10.05 16:12
Оценка:
Здравствуйте, VladD2, Вы писали:

FR>>Так пожалуйста разработка игр под консоли и другие не PC устройства.


VD>Да не выжимает там никто 100% во всех случаях. Выжимаются там обычно 3D-движки, да и то не по части мелких оптимизаций. Скорее оптимизации там идут на уровне алгоритмическом и API-ном.


ты скажи это тем кому приходится писать так чтобы современная игра работала на 32Mb памяти (притом не виртуальной) и грузилась с DVD (так чтобы можно было уже начать играть) за 20 секунд, да еще плюс жесткие требования к минимальному fps (именно к минимальному а не к среднему). И притом оригиналу на PC не хватало памяти объемом 256Mb для нормальной работы. В общем тому кому придется это портировать я не завидую

VD>Простой пример. Туча игр используют интерпретирующие скрипты для описания логики. Это верх неразумности. Одако многие считают что производительность оных скриптов погоды не делает. А это и есть жизнь по описываемым мною приципам. Другое дело, что скрипт можно было заменить на управляемый или функциональный язык, короче, на типобезопасный и компилируемый язяк. Но это уже отдельная песня.


Нет просто ты не понимаешь роль скриптов в играх, извини ты просто не в теме.
Re[11]: История одной оптимизации
От: IT Россия linq2db.com
Дата: 29.10.05 17:05
Оценка: +2
Здравствуйте, VladD2, Вы писали:

IT>>У меня есть только одно замечание к данному тезису. Ничто не может насобирать столько замечаний пользователей сколько сам разработчик в роли пользователя


VD>Вот тут не согласен. Разработчик конечно должен быть первым пользователем. Но его взгляд притуплен авторсвом. Автор не может 100%-но адекватно оценивать плоды своего туруда. Он ведь априори согласен со всеми принятыми решениями. Плюс лень. Так что мнение пользователей очень важно.


Я говорю не о просто кнопки подавить перед тем как пользователю отсылать, а серьёзном и продолжительном использовании для своих собственных нужд. Это очень хорошо заметно на том же самом .NET FW. Там где MS использует фреймворк для собственных разработок (та же ComponentModel), там всё как надо. Те части которые писались "для пользователя" иногда без дополнительной обработки напильником просто невозможно использовать.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: История одной оптимизации
От: gear nuke  
Дата: 29.10.05 20:36
Оценка: +2
Здравствуйте, FR, Вы писали:

FR>А ведь Дворкин прав не следует даже сейчас на PC читать побайтово с диска


А я с этим и не спорю. Смысл-то в том, что перед тем, как оптимизировать что-то, нужно хорошо понимать, что за этим стоит. А иначе это пустая трата времени, скрывающая за собой множество других (неявных) пустых трат.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[3]: История одной оптимизации
От: gear nuke  
Дата: 29.10.05 23:17
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Вот и я о том же.


А мне что бы понять, 2й раз перечитать потребовалось. Пропуская при этом эмоциональные детали .
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[14]: История одной оптимизации
От: GlebZ Россия  
Дата: 30.10.05 01:27
Оценка: 10 (1) +3
Здравствуйте, Nickolay Ch, Вы писали:

NC>Тут вообще в основном собираются люди, чтобы поубивать время, насколько я понимаю(поправьте кто-нить, если ошибаюсь). Обычно на философствования времени то не остается.

Нет. Не путай со священными войнами. Форум действительно очень полезный. Почему он полезен для меня:
1. Здесь собираются люди с различных языков, разных проектов, и вообще с разным жизненным опытом. Здесь узнаешь вещи и направления о которых и не догадывался потому как не встречался.
2. Здесь обсуждаются вещи которые для других являются offtop. Ну например, где еще можно сравнивать языки между собой. Именно корректно сравнивать. Благодаря этому форуму я узнал многие вещи о других языка. Или о языках о существовании которых не знал.
3. Здесь обсуждаются отношение к программированию, и в программировании. То есть философия. А философия — точная наука. Просто программисты очень любят спорить.

Этот форум дает широкий кругозор. Собственно благодаря ему я ентот кругозор себе сильно расширил.

Среди недостатков, повышенная флеймистость, и некоторые темы исчезают отсюда в недрах священных войн.

С уважением, Gleb.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.