Re[6]: Кнут о компонентном программировании.
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 19.07.09 17:34
Оценка:
Здравствуйте, Blondy, Вы писали:

B>А вы занимались? Чего достигли? Если для вас главное экономика, то основной критерий оценки ваших успехов это ваше состояние в долларовом исчислении. Каково Ваше состояние? Может Кнут, не занимаясь экономикой, и по этому критерию вас сделал?


Тут, в топике, кажется уже писали о лигической некорректности аппеляции к авторитетам. Авторитеты хороши в процессе познания, а не в процессе спора.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237 on Windows 7 6.1.7100.0>>
AVK Blog
Re[45]: Кнут о компонентном программировании.
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 20.07.09 06:06
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>А с чего ты взял, что МС хочет его задавить? Они, вроде, даже как то apache foundation спонсировали.


Apache Foundation уже давным-давно не только http-сервер: http://projects.apache.org/indexes/alpha.html и http://incubator.apache.org/projects/index.html


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[45]: Кнут о компонентном программировании.
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 20.07.09 07:37
Оценка: +1
Здравствуйте, IB, Вы писали:

L>> Я не заметил, чтобы eao197 как то по своему описывал подход Кнута.

IB>То есть, его аргументация у тебя возражений не вызывает? А как же призывы подумать?

Нет, не вызывает.
А думать я стараюсь для того, чтобы понять, а не найти возражения.
Re[46]: Кнут о компонентном программировании.
От: IB Австрия http://rsdn.ru
Дата: 20.07.09 08:29
Оценка: -1
Здравствуйте, lomeo, Вы писали:

L>Нет, не вызывает.

То есть, слепое поклонение авторитету думательную часть мозга отключает. ЧТД.
... << RSDN@Home 1.2.0 alpha 4 rev. 1082>>
Мы уже победили, просто это еще не так заметно...
Re[7]: Кнут о компонентном программировании.
От: VGn Россия http://vassilsanych.livejournal.com
Дата: 20.07.09 08:48
Оценка:
B>А почему на гриде остановились? Ведь грида это часто антипатерн. В ASP.NET точно. Там гриду используют только ламеры. В смарт клинтах это не так явно, но в первой версии WPF гриды нет, и рекомендуется без нее обходиться. Смена порадигмы между WinForm и WPF как раз и произошла в том направлении, чтобы не было таких монстриков как грида.

На гриде остановился, потому как наиболее объёмный и узнаваемый из стандартных. По поводу антипаттерна: использование своих деревянных велосипедов — тоже довольно сильный антипаттерн.
Сейчас разработано много мощных сторонних компонентов (типа кубов, диаграмм, можных меню и целых функциональных модулей), которые довольно сложно охватить взглядом на уровне кода, да и, как я уже сказал, обычно никому не надо.
Это же касается WPF. У меня не много опыта работы с ним, но я точно знаю, что тот же Инфрагистикс уже наваеял под него офигенные контролы (даже круче чем под ASP.NET, несмотря на то, что с аспнетом они работают много дольше)
... << RSDN@Home 1.2.0 alpha 4 rev. 1233>>
Re[7]: Кнут о компонентном программировании.
От: thesz Россия http://thesz.livejournal.com
Дата: 20.07.09 08:57
Оценка:
Здравствуйте, VladD2, Вы писали:

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


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


VD>Кстати, сколько ты знаешь алгоритмов названных его именем?


Knuth-Bendix completion algoritm, тебе, как интересующемуся компиляторами, желательно с ним ознакомиться.

Поиск назван его именем.

Ещё, наверное, по мелочи.

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


Логика Хоара, те самые тройки {P} S {Q}.

С их помощью ты можешь описать (и с их помощью описывают) контракты на компоненты.

VD>Нет, ты не моська, ты демогог.


Это следовало бы говорить после моих ответов, а не в их ожидании.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[47]: Кнут о компонентном программировании.
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 20.07.09 09:05
Оценка: 1 (1) :)))
Здравствуйте, IB, Вы писали:

L>>Нет, не вызывает.

IB>То есть, слепое поклонение авторитету думательную часть мозга отключает. ЧТД.

Настоящему мужчине всегда есть что возразить?
Re[12]: Кнут о компонентном программировании.
От: thesz Россия http://thesz.livejournal.com
Дата: 20.07.09 09:32
Оценка:
T>>Приведённый мной код и Си, и Си++.
J>Каким боком это С, если в С шаблонов нет?
J>Да и в С++ у тебя это просто обычная типизация разными несвязанными типами, с тем же успехом ты можешь вместо FILE<content> и FILE<text_file> написать FILE_content и FILE_text_file, ничего не изменится.

Да. Однако, типы связаны через типы функций.

T>>>>Минус-плюс я могу в параметр внести, видно будет.

J>>>Ну вот о чем и речь, что придется весь текст функции засунуть в тип.
T>>Внутренние связи между ограничениями не будут видны в типе. Поэтому я отвечаю резким "нет".
J>Ну где же нет, если ты только что сам сказал, что плюс вынесешь в тип?
J>Хотя... что ты подразумеваешь под "внутренними связями между ограничениями"?

То и называю. Тип — это теорема. Функция с таким типом — её доказательство.

Доказательство может быть сложнее и многословней формулировки теоремы. Обычно и бывает.

Для доказательства используются другие доказанные теоремы (функции с их типами). Связь между использованием этих внутренних теорем не имеет выражения в формулировке самой теоремы.

Если возвращаться обратно к программированию...

Функция void display_members_by_last_name(display_context *context) будет использовать функцию member* get_members_list() и функцию sort_list(A* list, B project_function, bool ascending_sort). Последней мы передадим функцию string project_member_last_name(member*m), сравнение строк на функцию сравнения и true, чтобы список был сортирован в алфавитном порядке.

Можно придумать тип для проверки правильности отображения. Я могу сформулировать ограничения на context, что это будет проверено.

Но если не хочешь, можешь обойтись.

Напомню, что строго типизированное лямбда-исчисление (любой язык программирования) мощнее, чем лямбда-исчисление (любой язык программирования) без типов.

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

T>>Опять же, нет.
J>Почему?

Потому, что не будет. Опыт показывает, что не бывает.

J>>>И этот тип придется тестировать так же, как ты тестировал бы функцию без этого типа.

T>>И снова нет.
J>Почему?

Потому, что не надо. Потому, что ты не сможешь построить доказательство (написать функцию) неправильно сформулированной теоремы (с неправильно написанным типом).

T>>Граничные условия отдельных функций проверяются типами функций.

J>И сколько у тебя тогда типов расплодится в программе?
J>На каждую функцию — по типу?

Да.

Программистов на Java/C# это не смущает. А в случае зависимых типов типы ещё и выразительней (больше можно записать меньшими словами).

J>И в любом случае — как ты без тестов гарантируешь, что ты не ошибся при программировании этих самых типов функций?


У меня не будет написана программа.

T>>Человек выписывает статические связи между участками программы, поскольку текст статичен. Даже если в динамике код программы будет изменяться, то все его изменения должны быть предсказуемы статически.

T>>Больше мне сказать нечего.
J>Хм... Мало что понял, сорри.
J>Если только придраться к тому, что у человека на руках только текст программы, а я видел очень мало людей, способных уместить у себя в голове весь текст программы, чтобы смочь о нем рассуждать.
J>Обычно у человека есть нечто вроде спеков в каком-то полусыром и смутном виде, и программу он уже пишет, основываясь на них и своем интуитивном представлении о том, что же нужно.

И что, эти "спеки" динамические? Они во времени меняются? Они статические.

А если начинают меняться, то это приводит к краху проекта.

T>>Если я неправильно написал типы, то у меня будут затруднения с выражением своих мыслей в других частях программы. Программа просто не будет написана.

T>>Она На Хаскеле пишется с трудом, если типы плохие, что уж говорить про зависимые типы.
J>Можешь привести пример, чтоб было понятно, как именно будут выглядеть "затруднения с выражением своих мыслей в других частях программы"?

У модели процессора есть тип Stmt regaddrsize regdatasize memaddrsize memdatasize.

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

Вдруг выясняется, что у процессоров есть ещё и память команд и туда тоже можно писать и оттуда можно читать. И эта память команд по своим параметрам (ширина и размер) не совпадает с уже имеющимися.

Надо что-то делать. Изменим "тип" Stmt на Stmt regaddrsize regdatasize memaddrsize memdatasize progaddrsize progdatasize. Вариант Stmt по записи в память программ будет StmtStorePM :: Expr progaddrsize -> Expr progmemsize -> Stmt regaddrsize regdatasize memaddrsize memdatasize progaddrsize progdatasize.

Теперь для 24-хбитной памяти программ ADSP2181 мне придётся формировать полное 24-хбитное слово из содержимого 16-тибитного регистра АЛУ и специального 8-битного регистра. Вероятность ошибки снизилась: мне надо учитывать, что размеры слова памяти программ отличаются от размеров слова АЛУ. Поскольку от модули ADSP2181 требуется иметь память программ в 24 бита шириной, то мне придётся реализовать эту часть модели правильно, путём ознакомления с документацией.

T>>Тесты калибра меньше функциональных не нужны.

J>пока не убедил.

Я бы и рад, но ты не приводишь примеров, опровержение или подтверждение которых тебя убедит.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[2]: Кнут о компонентном программировании.
От: thesz Россия http://thesz.livejournal.com
Дата: 20.07.09 09:35
Оценка:
Здравствуйте, Tesh, Вы писали:

T>Здравствуйте, 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>>Возможность быстро всё исправить более достижима, чем возможность найти компонент на любой случай жизни.


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


А если это не ошибка? Если требуется доработка?

T>А вносить исправления в достаточно большие проекты — может быть чревато тем, что исправишь в одном месте, и возникнут проблемы в другом.


С этим справляются системы типов.

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


Какова вероятность получения такой компоненты?

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

Я думаю, ты будешь приятно удивлён.

T>Бывает так, что когда люди по-умолчанию поставляют исходный код, то часто на эту тему и не заморачиваются — код же есть, допиливайте, соответственно появляются люди, которые приспосабливаются к такому подходу и не представляют других вариантов) а потом имеют головняки из-за того что вышла новая версия и теперь все надо как-то обновить


Бедняжки.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[2]: Кнут о компонентном программировании.
От: thesz Россия http://thesz.livejournal.com
Дата: 20.07.09 09:37
Оценка:
Здравствуйте, Baudolino, Вы писали:

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.


B>Это ересь по одной простой причине: десятки слегка отличающихся копипаст сложнее поддерживать.


Я не рекомендую считать Кнута глупее себя.

B>Код без ошибок бывает редко, и если ошибка найдена, то придется проверять на её наличие и исправлять все копии. Так что, no thanks, лучше уж наследование и полиморфизм.


Ты про expression problem слышал? Наследование и полиморфизм не решают её.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[43]: Кнут о компонентном программировании.
От: VGn Россия http://vassilsanych.livejournal.com
Дата: 20.07.09 10:16
Оценка:
S>Ну и совсем будет здорово подумать об успехе идеологии OpenSource. Правда, это рискованно — можно, к примеру, додуматься до того, что статистика использования Апача никакого отношения к "идеологии OpenSource" не имеет. Вот те 60%, которые там нарисованы — это что, "поредактированный" Apache? Нихрена, это тот самый blackbox, вытянутый из репозитория и запущенный в неизменном виде.

Хуже. Обычно это нередакитированный апач с дополнительной нахлобучкой
... << RSDN@Home 1.2.0 alpha 4 rev. 1233>>
Re[44]: Кнут о компонентном программировании.
От: VGn Россия http://vassilsanych.livejournal.com
Дата: 20.07.09 10:18
Оценка:
VGn>Хуже. Обычно это нередакитированный апач с дополнительной нахлобучкой
VGn>

Уппс. Повторил твою мысль. Недочитал.
... << RSDN@Home 1.2.0 alpha 4 rev. 1233>>
Re[46]: Кнут о компонентном программировании.
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 20.07.09 10:32
Оценка:
Здравствуйте, eao197, Вы писали:

E>Apache Foundation уже давным-давно не только http-сервер


Я в курсе. Но там речь шла про какие то доработки, связанные с апачем.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237 on Windows 7 6.1.7100.0>>
AVK Blog
Re[47]: Кнут о компонентном программировании.
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 20.07.09 10:41
Оценка:
Здравствуйте, AndrewVK, Вы писали:

E>>Apache Foundation уже давным-давно не только http-сервер


AVK>Я в курсе. Но там речь шла про какие то доработки, связанные с апачем.


http://port25.technet.com/archive/2008/07/25/oscon2008.aspx

It is not a move away from IIS as Microsoft’s strategic web server technology. We have invested significantly in refactoring and adding new, state-of-the-art features to IIS, including support for PHP. We will continue to invest in IIS for the long term and are currently under way with development of IIS 8.


Может они инвестируют в какие-то эксперименты с PHP под Apache+Windows для того, чтобы потом результаты этих экспериментов использовать в IIS (поскольку Apache-вская лицензия разрешает брать куски кода и вставлять их куда вздумается).


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[43]: Кнут о компонентном программировании.
От: WFrag США  
Дата: 20.07.09 10:42
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Ну и совсем будет здорово подумать об успехе идеологии OpenSource. Правда, это рискованно — можно, к примеру, додуматься до того, что статистика использования Апача никакого отношения к "идеологии OpenSource" не имеет. Вот те 60%, которые там нарисованы — это что, "поредактированный" Apache? Нихрена, это тот самый blackbox, вытянутый из репозитория и запущенный в неизменном виде.


Из какого именно репозитория? А тот же это самый Apache, что раздают на сайте http://httpd.apache.org/?
Re[48]: Кнут о компонентном программировании.
От: IB Австрия http://rsdn.ru
Дата: 20.07.09 11:04
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Настоящему мужчине всегда есть что возразить?

Хочешь поговорить о настоящих мужчинах? Тогда тебе куда-нибудь сюда: http://www.mhealth.ru/
Здесь все-таки форум немного о другом.
... << RSDN@Home 1.2.0 alpha 4 rev. 1082>>
Мы уже победили, просто это еще не так заметно...
Re[48]: Кнут о компонентном программировании.
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 20.07.09 11:13
Оценка:
Здравствуйте, eao197, Вы писали:

E>Может они инвестируют в какие-то эксперименты с PHP под Apache+Windows для того, чтобы потом результаты этих экспериментов использовать в IIS (поскольку Apache-вская лицензия разрешает брать куски кода и вставлять их куда вздумается).


Да нет, все проще — Апач сам по себе особой конкуренции МС не составляет. Даже если, гипотетически, предположить, что Апач полностью вытеснит IIS, МС от этого особо не пострадает.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237 on Windows 7 6.1.7100.0>>
AVK Blog
Re[38]: Кнут о компонентном программировании.
От: Sinclair Россия https://github.com/evilguest/
Дата: 03.08.09 03:43
Оценка:
Здравствуйте, WFrag, Вы писали:
WF>Да? А на мой взгляд, этим как минимум каждый дистрибутив занимается.
Да неужели? И какие дистрибутивы распространяют, к примеру, апач или мускул, существенно отличные от стандартной версии?
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[39]: Кнут о компонентном программировании.
От: WFrag США  
Дата: 03.08.09 07:49
Оценка: +2
Здравствуйте, Sinclair, Вы писали:

WF>>Да? А на мой взгляд, этим как минимум каждый дистрибутив занимается.


S>Да неужели? И какие дистрибутивы распространяют, к примеру, апач или мускул, существенно отличные от стандартной версии?


А откуда внезапно взялось требование «существенно»?

Речь о том, что у них есть возможность взять исходники, заточить под себя и выпустить продукт. Меняют они исходники существенно или нет — не важно. Важно то, что они это делают. А ты вдруг говоришь, что «эта техника has proven generally ineffective», в то время как половина смысла существования дистрибутивов Linux-а именно в этом затачивании под себя
Re[40]: Кнут о компонентном программировании.
От: Sinclair Россия https://github.com/evilguest/
Дата: 03.08.09 08:23
Оценка:
Здравствуйте, WFrag, Вы писали:

WF>Речь о том, что у них есть возможность взять исходники, заточить под себя и выпустить продукт. Меняют они исходники существенно или нет — не важно. Важно то, что они это делают. А ты вдруг говоришь, что «эта техника has proven generally ineffective», в то время как половина смысла существования дистрибутивов Linux-а именно в этом затачивании под себя

Ок. Пусть будет половина смысла от дистрибутивов.
Сколько у нас есть этих дистрибутивов? Пара десятков? Сотня? А сколько есть всего опенсорсных проектов? Вот в их существовании какую долю смысла будет занимать затачивание, а какую — зависимость от black box? Поэтому я и говорю — generally ineffective. Да, в некоторых узких, частных случаях эта техника всё еще применяется.

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

Ну вот, допустим, завтра в РФ официально разрешат браки мужчин с деревьями. И что, это автоматически сделает модель нашего законодательства более правильной? Будет ли главным наличие этой возможности? Даже если двадцать-тридцать фанатов таки зарегистрируют такие браки?
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.