Re[7]: Конец эпохи говнокода
От: mgu  
Дата: 30.01.16 12:29
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Потребности, то есть те же объемы данных в пользовательских задачах растут сильно быстрее производительности железа. При чем не просто быстрее, а нелинейно быстрее. Это значит, что все твои рассуждения про эффективность смысла не имеют.


Когнитивный диссонанс.

I>Раньше считали одним компом — сейчас считают сетями, облаками и тд и тд. Вкладываться в один толковый комп больше не даёт того прироста, как раньше. Всё, приехали.


"Одна старушка -- 10 копеек, а 10 -- уже рубль!" Р. Раскольников.

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


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

I>В той области, где я работал, объемы данных за относительно короткий срок объемы увеличились примерно в 100-1000 раз.


А объёмы и скорость доступа жёстких дисков?
Re[11]: Конец эпохи говнокода
От: mgu  
Дата: 30.01.16 12:35
Оценка:
Здравствуйте, consign, Вы писали:

C>Кому вообще нужен HTML без стилей? Хотя, даже и без стилей — достаточно файлеца на мегабайт на 5, чтобы браузер начал конкретно тупить.


Мне как-то понадобился почти без стилей и HTML-а, обычный роман с либ.ру. Так вот, страница простого текста > 1М в ИЕ6 на современном компьютере просто не открывается. В других браузерах без проблем. Т. е. тормоза не от HTML-а как такового, а от логики браузеров, обход тех самых деревьев.
Re[7]: Конец эпохи говнокода
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 30.01.16 12:47
Оценка:
Здравствуйте, mgu, Вы писали:

I>>Нету не ври. Ну или запиши видео, посмотрим, где у тебя глазом видно как интерфейс перерисовывается.


mgu>http://www.youtube.com/watch?v=LBfJ1RWI4Q4


Хм. На 11.8 заголовок закладки Re-Loan пропадает и тут же появляется. Затем на 12.5 он снова пропадает. На 12.7 исчезают оба и появляются, на 12.8 исчезает New Loan и появляется. На 13.6 появляется непонятная белая рамка вокруг основного таба, тут же кто-то портит почти всё окно, восстанавливает. Меняются табы, появляется заголовок Payment (на 14.2), снова пропадает... на 16.0 заголовок закладки New Loan пропал, на 16.1 появился... надоело.

Главное здесь — что моргания происходят, но сами эти пропадания, появления, прорисовки происходят _мгновенно_ (по крайней мере, на 15 FPS не видно недорисованных состояний одного отдельно взятого элемента). Вместе с морганиями элементов, которые остаются на месте, это говорит, что это не торможения интерфейса как таковые:

1. То, на что это больше всего похоже — что GUI отрабатывается в одном треде, а изменения содержания на логическом уровне — в другом. На момент перестройки иерархии отображаемых виджетов никто не догадался приостановить перерисовку (что для разработчиков GUI ранних времён было как "отченаш"). Это особенно удивительно потому, что код изменения окна (если это он в начале видео) линейный. Во времена "чистого" WinAPI, MFC и т.п. это было невозможно, если происходило в том же треде; для перерисовки надо было принято новое сообщение.

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

Скорее всего, эта странная машинерия не включается при изменении _содержимого_ минимального виджета, типа нажатия цифры в поле ввода, но именно при изменении их _состава_ начинается весь этот thrashing.

Собственно выводы.
1. Компьютер не виноват Подобным насилием над ним, заставляя выполнять бессмысленную работу по отображению незавершённых результатов за счёт той части, что эти результаты поставляет, можно замедлить любую программу и в 100, и в 1000 раз.
2. Авторов это подхода с GUI тредом надо выслать убирать весь снег в Сибирь. Но, если они предусмотрели возможность заказать отложить перерисовку, можно амнистировать лет через 20, а тем временем исправить все программы вставкой этого откладывания.
3. Это лучшая иллюстрация тезиса топикстартера и за весь тред, и вообще, сколько я видел Есть множество других bloatware-trended решений, но для них есть хоть какое-то оправдание пользовательскими запросами, но тут его в принципе не может быть.
Аминь.
The God is real, unless declared integer.
Re[9]: Конец эпохи говнокода
От: Pavel Dvorkin Россия  
Дата: 30.01.16 12:49
Оценка:
Здравствуйте, mgu, Вы писали:


PD>>И я не видел. Но считаю своим долгом напоминать о качестве как оно технологически есть. Может, кто-то все же засомневается...


mgu>Джордано Бруно плохо кончил.


https://www.youtube.com/watch?v=IKBrA99mKn8
With best regards
Pavel Dvorkin
Re[2]: Конец эпохи говнокода
От: mgu  
Дата: 30.01.16 12:56
Оценка:
Здравствуйте, netch80, Вы писали:

mgu>>Пример гнойнокода из Cracking the Code Interview:


N>Это в 4-м издании. В 5-м поправили. Интересно, кто их пнул


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

mgu>>Если при говнокодировании операции выполнялись неадекватно долго, то при гнойнокодировании программа просто зависает, вываливается или выдаёт неадекватный результат. Появился термин responsive design – это когда веб-программисты не способны вычислить 100% ширины экрана хоть на каком-то устройстве.


N>Типа такого?


Нет, просто у меня старый, но исправный монитор 4:3, и в последние годы приходится читать страницы с крупным шрифтом (под толстый палец), а полоса горизонтальной прокрутки находится вне зоны видимости, если вообще есть. В общем, приходится менять масштаб страницы.

mgu>>Мы будем с теплотой в сердце вспоминать эпоху говнопрограмм, память о них навсегда сохранится в наших сердцах.


N>Я вот думаю... ламокод? фаллокод?


Для нового или старого подхода? Я выбрал "говнокод" и "гнойнокод" т. к. первый хоть и противен, но является продуктом здоровой жизнедеятельности, а вот второй уже требует врача.
Re[7]: Конец эпохи говнокода
От: Pavel Dvorkin Россия  
Дата: 30.01.16 12:58
Оценка:
Здравствуйте, Ikemefula, Вы писали:

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


Если из соображений бюджета ты поставил O(N2) , (написав его за 2 недели), там, где можно было написать O(NlnN), но потратив месяц, то радуйся тому, что ты уложился в бюджет и сроки, празднуй сдачу проекта и т.п. Словом, делай что хочешь, ты совершенно прав.
Только не называй это эффективным кодом.


I>Потребности, то есть те же объемы данных в пользовательских задачах растут сильно быстрее производительности железа. При чем не просто быстрее, а нелинейно быстрее. Это значит, что все твои рассуждения про эффективность смысла не имеют.


Ну и ну. Потребности растут — из этого следцет почему-то, что можно писать неэффективно.

I>Раньше считали одним компом — сейчас считают сетями, облаками и тд и тд. Вкладываться в один толковый комп больше не даёт того прироста, как раньше. Всё, приехали.


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

I>В той области, где я работал, объемы данных за относительно короткий срок объемы увеличились примерно в 100-1000 раз. Как это закрыть одним компом — не ясно. А для клаудов и прочих вещей нужны другие принципы построения системы.

Слушай, не передергивай. Где я писал, что нужно все закрыть одним компом ? Понятно, что если размер задачи вырос, то одним компом не обойдешься. Но из этого не следует, что надо использовать десять там, где можно обойтись одним, и сотню — там, где хватит двадцати.
Если, конечно, писать эффективно и брать от каждого из этих 20 все, что можно.
With best regards
Pavel Dvorkin
Re[15]: Конец эпохи говнокода
От: mgu  
Дата: 30.01.16 13:00
Оценка:
Здравствуйте, consign, Вы писали:

C>PS и сидюк — по тем временам, предмет роскоши.


Но бабы не давали -- по улице с этим не пойдёшь, а дома воспринимался как какой-то осциллограф. То ли дело сотовый телефон (можно муляж)!
Re[8]: Конец эпохи говнокода
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.01.16 13:22
Оценка:
Здравствуйте, mgu, Вы писали:

I>>Потребности, то есть те же объемы данных в пользовательских задачах растут сильно быстрее производительности железа. При чем не просто быстрее, а нелинейно быстрее. Это значит, что все твои рассуждения про эффективность смысла не имеют.


mgu>Когнитивный диссонанс.


Нету здесь диссонанса. Люди хотят всё и сразу. Так было во все времена.

mgu>Сейчас главная затычка в производительности каналов связи, клянусь фотографиями Плутона.


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

I>>В той области, где я работал, объемы данных за относительно короткий срок объемы увеличились примерно в 100-1000 раз.


mgu>А объёмы и скорость доступа жёстких дисков?


Зависит от того что как считать и как это сравнивать.

Вот например при переходе на SSD теоретическое ускорение за счет количества около IOPS 10тыс раз. Но вот реальные кейсы показывают, что ускорение всего в 1.5...10 раз. За этот же период сами HDD ускорились так же раз в 10. Вроде бы неплохо ? Но из за увеличения объемов данных RAM уже не хватает, а это значт, что реальное приложение стало работать с памятью в _среднем_ _медленнее_, потому что интенсивно используется виртуальная память, а не физическая ибо её как раз и не хватает.
То есть, своп стал намного быстрее, но при этом свопить приходится намного больше, а сам по себе он несравнимо медленнее RAM даже на самом распрекрасном SSD.

Кроме того, далеко не все определяется винчестером. Слишком много вещей упирается в производительность процессорного ядра, или шины, или видеокарты.
Re[8]: Конец эпохи говнокода
От: mgu  
Дата: 30.01.16 13:23
Оценка:
Здравствуйте, netch80, Вы писали:

N>1. Компьютер не виноват Подобным насилием над ним, заставляя выполнять бессмысленную работу по отображению незавершённых результатов за счёт той части, что эти результаты поставляет, можно замедлить любую программу и в 100, и в 1000 раз.


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

Последнее веяние The Reactive Manifesto. (Каждый раз, когда я вижу Manifest с "О" на конце, я хватаюсь за пистолет.) Это настоящий убийца сетей, а байндинг выжрет оставшиеся ресурсы компьютера (привет сектантам Ангуляра).
Re[10]: Конец эпохи говнокода
От: mgu  
Дата: 30.01.16 13:32
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

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



PD>>>И я не видел. Но считаю своим долгом напоминать о качестве как оно технологически есть. Может, кто-то все же засомневается...


mgu>>Джордано Бруно плохо кончил.


PD>https://www.youtube.com/watch?v=IKBrA99mKn8


Я к бессмертию не стремлюсь, поэтому на стандартных интервью перед лицом инквизиторов веду себя, как Галилей. Попробуй только сказать, что не веруешь и в Model, и во View, и в Его Controller, мигом сожгут поместят резюме в базу данных и обязательно позвонят.
Re[8]: Конец эпохи говнокода
От: consign  
Дата: 30.01.16 13:33
Оценка:
Здравствуйте, netch80, Вы писали:

N>3. Это лучшая иллюстрация тезиса топикстартера и за весь тред, и вообще, сколько я видел


Тогда посмотри еще на это.
http://www.softpedia.com/get/Multimedia/Video/Encoders-Converter-DIVX-Related/SUPER.shtml

Только ставь в виртуалку, это лютая адварь (почти как Windows 10 ). Сделано, кстати, на гугловском NaCl.
Re[8]: Конец эпохи говнокода
От: mgu  
Дата: 30.01.16 13:35
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

I>>Потребности, то есть те же объемы данных в пользовательских задачах растут сильно быстрее производительности железа. При чем не просто быстрее, а нелинейно быстрее. Это значит, что все твои рассуждения про эффективность смысла не имеют.


PD>Ну и ну. Потребности растут — из этого следцет почему-то, что можно писать неэффективно.


Он специалист по алгоритмам.
Re[9]: Конец эпохи говнокода
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 30.01.16 13:54
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Именно. Потому как рост производительности ядра во первых недостаточен, во вторых, давно остановился.

I>Если ты вдруг найдешь способ наращивать производительность ядра семимильными шагами, все мега-клауды и супер-компьютеры резко станут ненужными.

Где-то в районе хабра на днях пробегало — есть расчёты, для точного выполнения которых надо шаг сетки в 17 миллионов раз меньше, чем доступно сейчас. А сетка кубическая...
так что пусть ты хоть в миллиард раз его разгонишь — "мега-клауды и супер-компьютеры" всё равно потребуются.

I>Зависит от того что как считать и как это сравнивать.

I>Вот например при переходе на SSD теоретическое ускорение за счет количества около IOPS 10тыс раз. Но вот реальные кейсы показывают, что ускорение всего в 1.5...10 раз.

Слишком много мелких операций?
The God is real, unless declared integer.
Re[9]: Конец эпохи говнокода
От: mgu  
Дата: 30.01.16 14:40
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Нету здесь диссонанса. Люди хотят всё и сразу. Так было во все времена.


Где-то я это уже слышал... Точно, "Москва слезам не верит".

mgu>>Сейчас главная затычка в производительности каналов связи, клянусь фотографиями Плутона.


I>Именно. Потому как рост производительности ядра во первых недостаточен, во вторых, давно остановился.

I>Если ты вдруг найдешь способ наращивать производительность ядра семимильными шагами, все мега-клауды и супер-компьютеры резко станут ненужными.

"Предлагаю дружить домами. -- Встречное предложение: дружить семьями". Я бы наоборот озаботился повышением пропускной способности каналов, а конкретно в вебе -- временем установления соединений. На мой взгляд, идея распределённых вычислений с задействованием неограниченного числа компьютеров весьма хороша. (Шутка сезона: если компьютер тормозит, значит, кто-то у вас чеканит биткойны.)

I>Вот например при переходе на SSD теоретическое ускорение за счет количества около IOPS 10тыс раз. Но вот реальные кейсы показывают, что ускорение всего в 1.5...10 раз. За этот же период сами HDD ускорились так же раз в 10. Вроде бы неплохо ? Но из за увеличения объемов данных RAM уже не хватает, а это значт, что реальное приложение стало работать с памятью в _среднем_ _медленнее_, потому что интенсивно используется виртуальная память, а не физическая ибо её как раз и не хватает.

I>То есть, своп стал намного быстрее, но при этом свопить приходится намного больше, а сам по себе он несравнимо медленнее RAM даже на самом распрекрасном SSD.

RAM при наличии SSD становится бессмысленным. Распределённые приложения (см. выше) нас спасут.

I>Кроме того, далеко не все определяется винчестером. Слишком много вещей упирается в производительность процессорного ядра, или шины, или видеокарты.


Шина -- это да. Но большинство проблем с производительностью упирается в прокладку между стулом и клавиатурой.
Re[9]: Конец эпохи говнокода
От: mgu  
Дата: 30.01.16 14:45
Оценка:
Здравствуйте, consign, Вы писали:

C>Тогда посмотри еще на это.

C>http://www.softpedia.com/get/Multimedia/Video/Encoders-Converter-DIVX-Related/SUPER.shtml

C>Только ставь в виртуалку, это лютая адварь (почти как Windows 10 ). Сделано, кстати, на гугловском NaCl.


Я посмотрел комментарии (в них истина, когда не трут), после слов типа crapware желания не возникло.
Re[5]: Конец эпохи говнокода
От: Vain Россия google.ru
Дата: 30.01.16 15:22
Оценка:
Здравствуйте, playnext, Вы писали:

P>Скрамостояние качества не гарантирует.

ну почему же, оно гарантирует качество стояния на работе
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[10]: Конец эпохи говнокода
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.01.16 15:37
Оценка:
Здравствуйте, mgu, Вы писали:

I>>Нету здесь диссонанса. Люди хотят всё и сразу. Так было во все времена.


mgu>Где-то я это уже слышал... Точно, "Москва слезам не верит".


Именно. Никому не интересны твои объяснения, что все должно быть эффективно и правильно.

mgu>"Предлагаю дружить домами. -- Встречное предложение: дружить семьями". Я бы наоборот озаботился повышением пропускной способности каналов, а конкретно в вебе -- временем установления соединений. На мой взгляд, идея распределённых вычислений с задействованием неограниченного числа компьютеров весьма хороша. (Шутка сезона: если компьютер тормозит, значит, кто-то у вас чеканит биткойны.)


Пропускную способность каналов повышают и без твоих советов.
А вот паралеллизм это не волшебная палочка — многие алгоритмы просто не масштабируются или масштабируются плохо или усложнаются на несколько порядков для внятного мастшабирования.

I>>То есть, своп стал намного быстрее, но при этом свопить приходится намного больше, а сам по себе он несравнимо медленнее RAM даже на самом распрекрасном SSD.


mgu>RAM при наличии SSD становится бессмысленным. Распределённые приложения (см. выше) нас спасут.


RAM работает на порядки быстрее SSD. А вот распределенные приложения это уже сильно другая специфика.

I>>Кроме того, далеко не все определяется винчестером. Слишком много вещей упирается в производительность процессорного ядра, или шины, или видеокарты.


mgu>Шина -- это да. Но большинство проблем с производительностью упирается в прокладку между стулом и клавиатурой.


Я помню, что один ты только умный.
Re[10]: Конец эпохи говнокода
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.01.16 15:42
Оценка:
Здравствуйте, netch80, Вы писали:

N>Где-то в районе хабра на днях пробегало — есть расчёты, для точного выполнения которых надо шаг сетки в 17 миллионов раз меньше, чем доступно сейчас. А сетка кубическая...

N>так что пусть ты хоть в миллиард раз его разгонишь — "мега-клауды и супер-компьютеры" всё равно потребуются.

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

I>>Зависит от того что как считать и как это сравнивать.

I>>Вот например при переходе на SSD теоретическое ускорение за счет количества около IOPS 10тыс раз. Но вот реальные кейсы показывают, что ускорение всего в 1.5...10 раз.

N>Слишком много мелких операций?


Разные кейсы.
Re[8]: Конец эпохи говнокода
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.01.16 15:49
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

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


PD>Если из соображений бюджета ты поставил O(N2) , (написав его за 2 недели), там, где можно было написать O(NlnN), но потратив месяц, то радуйся тому, что ты уложился в бюджет и сроки, празднуй сдачу проекта и т.п. Словом, делай что хочешь, ты совершенно прав.

PD>Только не называй это эффективным кодом.

Это было всегда вот так. Нет ни одного инженерного решения, которое бы делалось иначе. И ты путаешь эффективность и качество.

PD>Ну и ну. Потребности растут — из этого следцет почему-то, что можно писать неэффективно.


Если оба решения, твой пример — O(N2) и О(NlnN), могут быть выполнены за месяц, то можно говорить про эффективность. А если только одно из них реализуемо за месяц — то именно оно и есть эффективное, ибо другого за тот же период не появится и сравнивать будет не с чем.

I>>В той области, где я работал, объемы данных за относительно короткий срок объемы увеличились примерно в 100-1000 раз. Как это закрыть одним компом — не ясно. А для клаудов и прочих вещей нужны другие принципы построения системы.


PD>Слушай, не передергивай. Где я писал, что нужно все закрыть одним компом ? Понятно, что если размер задачи вырос, то одним компом не обойдешься. Но из этого не следует, что надо использовать десять там, где можно обойтись одним, и сотню — там, где хватит двадцати.

PD>Если, конечно, писать эффективно и брать от каждого из этих 20 все, что можно.

Можно или нельзя — определяется именно экономической составляющей.
Re[10]: Конец эпохи говнокода
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.01.16 15:50
Оценка:
Здравствуйте, mgu, Вы писали:

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


mgu>>>Я лично пользовался HTML на 486 в конце 90-х. Производительность упиралась в модем. А сейчас, при кабелях, иконки быдлосетей загружаются минутами.


I>>Ну и сколько минут у тебя загружается RSDN ?


mgu>RSDN за счёт облегчённой архитектуры (состояние страницы напрочь не запоминается, операции refresh и back не работают вообще) грузится в среднем быстро.


То есть, про минуты ты выдумал ?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.