Re[13]: Кнут о компонентном программировании.
От: jazzer Россия Skype: enerjazzer
Дата: 04.08.09 13:51
Оценка: :)
Здравствуйте, master_of_shadows, Вы писали:

поскипал то, с чем согласен
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[27]: Кнут о компонентном программировании.
От: master_of_shadows Беларусь  
Дата: 04.08.09 14:34
Оценка:
Здравствуйте, Sinclair, Вы писали:

Как-то я не понял вот это:

S>Вообще-то да. Потому что у меня, к примеру, неоднократно встречались случаи типа "есть бага, выпущенная в минорном релизе OpenSource 3rdparty, из-за которой мы валимся. Сабмиттить патч — дело бесполезное, потому что

S>а) у нас нет экспертизы в исходниках этой 3rdparty, чтобы этот патч сделать
S>б) даже если мы его сделаем, нужно убедить маинтейнеров включить его в следующий релиз
S>в) даже если патч войдет куда надо, надо дождаться, пока маинтейнеры дистрибутивов заапрувят его в стабильные ветки
S>г) когда это случится, в стабильную ветку попадёт еще масса изменений, которые потребуют повторного тестирования совместимости на нашей стороне
S>д) и если там есть изменения, ломающие обратную совместимость, нам придётся выпускать дополнительный релиз

S>В результате, вместо "reeditable" мы просто выпускаем бюллетень со словами "ОпенХня версии 5.2.3.31 официально не поддерживается нашим софтом. Ждите починки багов вендором".


Если ваша команда не может починить багу в 3rd party, то чем тут поможет black box? Один фиг результат тот же — апликация не работает с тем-то и тем-то.
В случае с закрытым продуктом будет всё то же самое, но без пунктов а-б. Где разница то ?
Re[28]: Кнут о компонентном программировании.
От: Sinclair Россия https://github.com/evilguest/
Дата: 05.08.09 03:22
Оценка: +1 :)
Здравствуйте, master_of_shadows, Вы писали:
__>Если ваша команда не может починить багу в 3rd party, то чем тут поможет black box? Один фиг результат тот же — апликация не работает с тем-то и тем-то.
__>В случае с закрытым продуктом будет всё то же самое, но без пунктов а-б. Где разница то ?
Ну, в случае с коммерческим продуктом по крайней мере есть кто-то, кто отвечает за саппорт.
Впрочем, это неважно — фишка как раз в том, что разницы нет. Об ээтом я и говорю — для большинства потребителей Open Source возможность reedit-а исходников совершенно абстрактна. Поэтому считать её "неотъемлемой основой" я не хочу.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[29]: Кнут о компонентном программировании.
От: WFrag США  
Дата: 05.08.09 03:39
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Ну, в случае с коммерческим продуктом по крайней мере есть кто-то, кто отвечает за саппорт.

S>Впрочем, это неважно — фишка как раз в том, что разницы нет. Об ээтом я и говорю — для большинства потребителей Open Source возможность reedit-а исходников совершенно абстрактна. Поэтому считать её "неотъемлемой основой" я не хочу.

Опять же, она не абстрактна для тех, кто предоставляет этим потребителям саппорт.

Это так же, как не считать забой скота «неотъемлемой основой» мясопроизводства. А что, ведь большинству потребителей возможность заколоть свинью совершенно абстрактна. Утрирую, конечно.
Re[29]: Кнут о компонентном программировании.
От: master_of_shadows Беларусь  
Дата: 05.08.09 06:05
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Ну, в случае с коммерческим продуктом по крайней мере есть кто-то, кто отвечает за саппорт.


У части опенсорсов то же есть сапорт за денежку. Только отстёгивай.

S>Впрочем, это неважно — фишка как раз в том, что разницы нет. Об ээтом я и говорю — для большинства потребителей Open Source возможность reedit-а исходников совершенно абстрактна. Поэтому считать её "неотъемлемой основой" я не хочу.


Для большинства потребителей комерческих продуктов саапорт то же не "неотъемлиая часть". Сужу точно так же по себе — ни разу в саппорт не обращался .
Проекты с лицензий конечно же.
Re[13]: ROFL
От: Roman Odaisky Украина  
Дата: 08.08.09 09:06
Оценка: :)
Здравствуйте, 4058, Вы писали:

4>Поговорим об пресловутых печатных отчетах, для этого я использую (но не всегда) компонент, который преобразует HTML->PDF. Стоимость компонента 400$, работает у нас в условиях 24/7.


Я всегда полагал, что аббревиатура ROFL есть самопротиворечивая абстракция, но это твое сообщение как никогда близко подходит к тому, чтобы воплотить ее в жизнь. Противопоставлять себя Кнуту, настаивая на полезности «готовых хорошо отлаженных компонентов» в области «реальных систем» и на примере чего — «подготовки печатных отчетов»! Я, конечно, понимаю, что Кнут не стал бы заниматься «такой приземленной „ерундой“» вроде компонентов для преобразования текста в PDF, но предположив на минутку, что он задался бы такой целью, какие твои прогнозы насчет его (теоретической, конечно) конкурентоспособности с вышеупомянутым компонентом, который, с одной стороны, хорошо отлажен («хорошо отлажен» — это сколько известных багов?) и, с другой стороны, стоит всего лишь $400 (да, признаю: Кнут никогда не смог бы конкурировать на этом уровне)?
До последнего не верил в пирамиду Лебедева.
Re[47]: Завидую eao197!!!
От: Erop Россия  
Дата: 08.08.09 09:23
Оценка: :)
Здравствуйте, IB, Вы писали:
IB>Здравствуйте, eao197, Вы писали:
IB>Нет, зесь только ты и Кнут не представляете что это такое..

Эх, чертовски неплохая компания, надо сказать
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[38]: И книги по музыке делают в LaTeX!
От: SergeCpp Россия http://zoozahita.ru
Дата: 08.08.09 15:42
Оценка:
Здравствуйте, eao197!

E>О как странно, но большое количество документации разного рода до сих пор делается в разных вариантах TeX-а.


И книги по музыке!

Вот Sample (от издательства) PDF-Book'а Bach: The Goldberg Variations / Peter Williams (или такая ссылка)

Там на 2 странице файла написано: System LaTeX 2e
http://zoozahita.ruБездомные животные Екатеринбурга ищут хозяев
Re[39]: И книги по музыке делают в LaTeX!
От: SergeCpp Россия http://zoozahita.ru
Дата: 08.08.09 16:57
Оценка:
Вот ещё одна (весьма солидная) книга: Music: a Mathematical Offering



В PDF-файле есть текст: Creator(LaTeX with hyperref package)
http://zoozahita.ruБездомные животные Екатеринбурга ищут хозяев
Re[2]: Кнут о компонентном программировании.
От: anton_t Россия  
Дата: 09.08.09 17:39
Оценка: 1 (1) :))
Здравствуйте, jazzer, Вы писали:

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


T>>

I also must confess to a strong bias against the fashion for reusable code. To me, "re-editable code" is much, much better than an untouchable black box or toolkit. I could go on and on about this. If you’re totally convinced that reusable code is wonderful, I probably won’t be able to sway you anyway, but you’ll never convince me that reusable code isn’t mostly a menace.


T>>Пожалуй, подпишусь.


T>>Возможность быстро всё исправить более достижима, чем возможность найти компонент на любой случай жизни.


J>В чем проблема иметь возможность быстро всё исправить в reusable code?


J>Имхо, reusable code и untouchable black box or toolkit — это немножко разные вещи.

J>В словосочетании "reusable code" ключевое слово — это слово "код", который, естественно, можно исправить, если в нем баг.
J>И если ты стараешься поддерживать его в reusable-состоянии (т.е. он _один_ зовется отовсюду) — в чем проблема?

J>А вот если под "re-editable code" понимается copy/paste с исправлениями под конкретную ситуацию, то я тебе сейчас расскажу, чем это заканчивается в реальных проектах (по собственному опыту).

J>Я имел удовольствие работать в одном огромном 10-летнем проекте.
J>В какой-то момент в одном месте обнаружились ошибки с округлением.
J>Когда я стал раскапывать ситуация с округлением, оказалось, что в проекте набралось 3-7 (не помню уже точно, сколько) функций округления, все, естественно, простые (что там может быть сложного в округлении), все явно сделанные из одной исходной функции (суда по именам локальных переменных) путем применения подхода "re-editable code". Разница была лишь в обработке всяких граничных случаев. Так как все это умножается на принцип "работает — не трогай" (софт ворочает миллионами долларов), я думаю, сейчас количество этих функций там уже подбирается к 10. И отследить, где какое округление в результате используется — это дело нескольких дней.
J>А вот если бы с самого начала был _один_ reusable компонент/класс/что-угодно "округлятель" и не разрешалось бы плодить его "легко исправляемые копии", то этого геморроя не было бы.

По поводу этих функций вспомнинаются слова:

Один плохой программист может создавать до двух рабочих мест в год.

Re[35]: Кнут о компонентном программировании.
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 10.08.09 05:31
Оценка: +1 -1
Sinclair,

E>>Думаю, что опыт Кнута уже давно оказался восстребованным (хотя под соусом опыта Торвальдса) -- сейчас он активно используется в виде "спонсирования OpenSource разработок".

S>Я уже намекал на то, что OpenSource != "re-editable code".
S>OpenSource использует untouchable blackbox в полный рост.
S>Мне также непонятно, каким образом опыт Кнута приравнивается к "спонсированию". Он что, дал кому-то денег на прикручивание прямого рендера в PDF минуя DVI?

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


Я приведу маленький пример из своей практики. Rake — библиотека для автоматизации сборки, фактически EDSL на Ruby, который реализует make-like функционал. Для дотнета существует специальный джем, "rake-dotnet", который вдобавок реализует специфичные для дотнета вещи — вызов msbuild, генерация AssemblyInfo и прочее. Также, там реализован таск :help, однако попытка вызвать его для текущей версии (0.1.9) приводит к ошибке:
C:\workspace\dotnet\mycoolproject>rake help
(in C:/workspace/dotnet/mycoolproject)
rake aborted!
No such file or directory - rake.cmd -T

идём туда (в джем rake-dotnet-0.1.9) и видим строку
taskHash = Hash[*(`rake.cmd -T`.split(/\n/)....

меняем rake.cmd на просто rake — и вуаля!

Так что возможность запустить ручки в модуль (или другими словами во фреймворк, библиотеку, инструмент или просто компонент) является большим благом и позволяет использовать хорошую вещь (включая например тот же Немерле) в риал-лайф проекте, не дожидаясь, пока Большие-и-Влиятельные-Корпорации не возьмут эту вещь на буксир.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[14]: ROFL
От: 4058  
Дата: 10.08.09 13:56
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>...Я, конечно, понимаю, что Кнут не стал бы заниматься «такой приземленной „ерундой“» вроде компонентов для преобразования текста в PDF,


Здесь допущена одна очень важная ошибка, т.к. речь идет не о преобразовании просто текста в PDF, а о преобразовании HTML+CSS2.0[+JS] в PDF, и если делать это "с нуля" (да на коленке), то даже за пол года положительных результатов ждать не приходитя.
К тому-же TeX, не является нечто запредельным, что на столько уж далеко от "приземленной ерунды" вроде HTML->PDF.

RO>но предположив на минутку, что он задался бы такой целью, какие твои прогнозы насчет его (теоретической, конечно) конкурентоспособности с вышеупомянутым компонентом, который, с одной стороны, хорошо отлажен («хорошо отлажен» — это сколько известных багов?)


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

P.S. За прогнозами к метеорологам.
Re[11]: Кнут о компонентном программировании.
От: Erop Россия  
Дата: 10.08.09 16:37
Оценка:
Здравствуйте, thesz, Вы писали:

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

E>>Или, ещё хитрее: "скорее всего выиграет у последней доступной версии программы-конкурента"...
T>Ранг шахматиста — его тип, — как раз и указывает на вероятность выигрыша у шахматиста другого ранга.

Это всего лишь другое название требования "играет не хуже первого взрослого разряда".
Ты это требование в системе типов вырази
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[12]: Кнут о компонентном программировании.
От: Воронков Василий Россия  
Дата: 10.08.09 17:49
Оценка: -1
Здравствуйте, eao197, Вы писали:

E>Индустрия производства ПО, по мнению некоторых участников RSDN, находится в глубокой заднице. При этом программисты-практики, как представители этой самой индустрии, позволяют себе смеятся над человеком, достижения которого (как программиста) им и не повторить. Вместо того, чтобы подумать, а за счет чего Кнуту удается (удавалось) в одиночку делать так много и так хорошо. Может быть и его взгляд на повторное использование не так уж нелеп, как это кажется.


Ну пусть и продолжает делать "так много и так хорошо" дальше, пишет книги, алгоритмы придумывает. Со всем к нему уважением. А повторное использование лучше уж оставить практикам.

А то это, извините, равносильно тому, чтобы молиться на советы по вождению от человека, который изобрел ДВС, но при этом сам никогда не водил автомобиль.
Re[16]: Кнут о компонентном программировании.
От: Воронков Василий Россия  
Дата: 10.08.09 18:06
Оценка:
Здравствуйте, eao197, Вы писали:

Предположим, в компании есть отдельная команда, которая занимается разработкой компонент, используемых в других проектах. Данные компоненты никогда не меняются в рамках отдельных проектов, однако разработавшая их команда осуществляет поддержку, исправляет баги, добавляет фичи.
Это "в терминах Кнута" reusable или reeditable код?

Когда ответите на этот вопрос, можем перейти ко второму.

Предположим, есть некая специализированная компания, которая занимается разработкой компонент...
Re[17]: Как оно обычно бывает...
От: Erop Россия  
Дата: 10.08.09 18:26
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Это "в терминах Кнута" reusable или reeditable код?

ВВ>Предположим, есть некая специализированная компания, которая занимается разработкой компонент...

Я не eao197, но попробую ответить.
Эти два случая отличаются только формально. Всё сводится к тому, как быстро кто-то будет обрабатывать запросы конкретного проекта.
Если команда/компания готова обеспечить для ВАШЕГО проекта реакцию с нужной ВАШЕМУ проекту скоростью и качеством, то и фиг с ним, с reeditable, а если нет, то reeditable становится остро необходимым...

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

Короче вопрос тупо в контроле. Есть у теюя контроль над ситуацией или нет. И в какой степени он есть...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[17]: Кнут о компонентном программировании.
От: Sinclair Россия https://github.com/evilguest/
Дата: 11.08.09 04:52
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

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


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

ВВ>Это "в терминах Кнута" reusable или reeditable код?
Конечно же reusable. Поскольку все проекты используют этот код как чёрный ящик.
Reeditable был бы в том случае, если бы проектная команда брала исходники компонента и допиливала под себя.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[18]: Кнут о компонентном программировании.
От: Воронков Василий Россия  
Дата: 11.08.09 08:11
Оценка: +1
Здравствуйте, Sinclair, Вы писали:

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

ВВ>>Это "в терминах Кнута" reusable или reeditable код?
S>Конечно же reusable. Поскольку все проекты используют этот код как чёрный ящик.
S>Reeditable был бы в том случае, если бы проектная команда брала исходники компонента и допиливала под себя.

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

Вариант, который защищают сторонники reeditable, это плодить кучу несвязанных модификаций, которые не смогут нормально поддерживать ни первоначальные разработчики, ни те, кто меняли, так как их знание о работе кода как правило весьма поверхностное?
Re[19]: Кнут о компонентном программировании.
От: Sinclair Россия https://github.com/evilguest/
Дата: 11.08.09 08:33
Оценка:
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Где ты видишь черный ящик? Код доступен, можешь его посмотреть да и вообще-то говоря он вполне изменяемый — просто есть разделение труда, его допиливает отдельная команда.
Как где? В проекте.
В коде, который использует этот компонент, никаких его внутренних особенностей не применяется.
Никакого "допиливания" проектная команда не делает. Если есть нужда доточить компонент — формируется просьба, и поверхность чёрного ящика пересматривается.
Ключевой момент здесь — в том, что изменения вносятся централизованно. В частности, если команде Б нужны какие-то фичи от команды А, то команда А при их реализации следит за тем, чтобы фичи для команды В не отвалились.

В случае reeditable команда Б имеет полную свободу действий — ей не нужно поддерживать совместимость с требованиями В (о которой Б вообще ничего не знает):
1. Можно использовать компонент как белый ящик, т.е. влезть ему вовнутрь и заточиться на его устройство. Поскольку мы не планируем ни с кем совместно использовать код, у нас нет риска напороться на независимо произведённые изменения
2. Можно вносить какие угодно исправления, опять же потому, что мы не планируем никому их отдавать.

Всё. Любое совместное использование кода моментально отбрасывает вариант с reeditable, оставляя только black box. Потому что иначе невозможно конструктивно вносить изменения.

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

Да, совершенно верно.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[12]: Кнут о компонентном программировании.
От: thesz Россия http://thesz.livejournal.com
Дата: 11.08.09 09:05
Оценка:
Здравствуйте, Erop, Вы писали:

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


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

E>>>Или, ещё хитрее: "скорее всего выиграет у последней доступной версии программы-конкурента"...
T>>Ранг шахматиста — его тип, — как раз и указывает на вероятность выигрыша у шахматиста другого ранга.

E>Это всего лишь другое название требования "играет не хуже первого взрослого разряда".

E>Ты это требование в системе типов вырази

В чём проблема?

Тип будет долго проверяться — надо считать вероятность выигрыша, — но тем не менее он существует.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.