Здравствуйте, MTD, Вы писали:
SV.>>Ладно бы еще, если б именно STL, как реализация, не нравился и переписывался. Меня вот он чисто эстетически убивает, в отличие от FCL (наконец-то онтопик!). Но оформлять условный подсчет количества именно книжек, да еще по неуниверсальному предикату, в отдельную функцию...
MTD>Это не прикол, вы на полном серьезе? В школе проблем не было, когда решали задачу "было у вас 5 яблок, забрали 2"? Из себя при этом не выходили, типа как так яблоки забирают?
Ну так шли бы вы в школу и там кормили первоклассников своими яблоками. А вы вместо этого забиваете шлаком голову студентам. Расскажите, хоть, что за ВУЗ такой, чтобы знать, чего бояться.
Здравствуйте, MTD, Вы писали: SV.>>Ну так шли бы вы в школу и там кормили первоклассников своими яблоками. MTD>Аааа, низкий коммуникационный навык. Мне вас жаль Всего вам доброго!
Мне вас жаль, гордо сказал MTD. И каким бы низким не был мой "коммуникационный навык", такой штампище даже я распознал.
MTD, ну зачем так подставляться? Сначала с кодом, потом с сожалениями. Я ж вам не студент, отметкой не напугаете.
Скрытый текст
Я не поклонник лукоморья, мягко говоря, но его создателям иногда не откажешь в наблюдательности.
Здравствуйте, SV., Вы писали:
V>>В процессе адекватного развития проекта зачастую так и происходит: локальные наколенные "велосипеды" медленно но верно заменяются хорошо отлаженным повторно-используемым кодом. SV.>...и вот мы уже написали свой хорошо отлаженный повторно-используемый STL.
Инфраструктура STL ни разу не прикладная, в отличие от инфраструктуры конкретного проекта.
SV.>Ладно бы еще, если б именно STL, как реализация, не нравился и переписывался. Меня вот он чисто эстетически убивает, в отличие от FCL (наконец-то онтопик!). Но оформлять условный подсчет количества именно книжек, да еще по неуниверсальному предикату, в отдельную функцию...
Если ты намекаешь на уникальную уникальность задачки из твоего примера... то это какое-то нубство, "отливать из бетона" в исходниках упомянутые 100р. Причем, без учета инфляции. )))
Т.е. того было мало, что даже не попытался аргументировать по обсуждаемому вопросу, а сразу перешел на личности/ники... Потом еще решил луркой прикрылся... ))
Ну, молодца.
Здравствуйте, vdimas, Вы писали:
V>Т.е. того было мало, что даже не попытался аргументировать по обсуждаемому вопросу, а сразу перешел на личности/ники... Потом еще решил луркой прикрылся... )) V>Ну, молодца.
Аргументировать что? Что для подсчета элементов в коллекциях, соответствующих некоторому условию, лучше иметь единый алгоритм и разные предикаты, чем разные функции, реализующие один и тот же алгоритм? Может, вам лучше самому что-нибудь почитать типа этого: http://en.wikipedia.org/wiki/Don%27t_repeat_yourself?
Здравствуйте, SV., Вы писали:
SV.>Аргументировать что? Что для подсчета элементов в коллекциях, соответствующих некоторому условию, лучше иметь единый алгоритм и разные предикаты, чем разные функции, реализующие один и тот же алгоритм?
Кто с этим спорил? Сам придумал врага, сам его заборол — молодец, но к доктору сходить стоит — жить в своей реальности неправильно.
Здравствуйте, MTD, Вы писали:
SV.>>Аргументировать что? Что для подсчета элементов в коллекциях, соответствующих некоторому условию, лучше иметь единый алгоритм и разные предикаты, чем разные функции, реализующие один и тот же алгоритм?
MTD>Кто с этим спорил? Сам придумал врага, сам его заборол — молодец, но к доктору сходить стоит — жить в своей реальности неправильно.
Просто Кобзон какой-то. Дважды попрощался, но все еще на сцене.
Здравствуйте, SV., Вы писали:
SV.>Аргументировать что? Что для подсчета элементов в коллекциях, соответствующих некоторому условию, лучше иметь единый алгоритм и разные предикаты, чем разные функции, реализующие один и тот же алгоритм? Может, вам лучше самому что-нибудь почитать типа этого
Прочитай уже наконец название темы и угомонись.
Здравствуйте, SV., Вы писали:
SV.>Аргументировать что? Что для подсчета элементов в коллекциях, соответствующих некоторому условию, лучше иметь единый алгоритм и разные предикаты, чем разные функции, реализующие один и тот же алгоритм?
Речь шла о лямбдах vs отдельные ф-ии. Лямбдой у тебя являлся сам предикат. Если посмотреть на твой пример, то аналогичное вообще маловероятно в адекватном проекте. Любая конкретика, типа твоих 100р, выносится обычно нафик из нескриптового кода.
Я как-нить сам разберусь, что мне почитать. Еще с тобой не разобрались. Ты пытался поднять окружающих на смех, не? Обоснуешь по какой причине было веселье, или продолжишь бегать?
В исходном примере была параметризация, а в твоем варианте — бесполезная строчка прибитого гвоздями кода. Ты изменил не только синтаксис, но и семантику исходного примера. За это отгреб минусов. А потом устроил представление зачем-то, с попыткой высмеять коллег... вместо того, чтобы увидеть свою ошибку. ИМХО, какой-то дурдом.
SV.> Нужны ли тут комментарии? Я бы предпочел их видеть, поскольку функция-то точно не нужна.
Есть простое правило: Если комментарии нужны, значит у тебя получается сложный код. Даже вот так:
var expensiveBookCount = books.Count(b => b.Price > 100);
Console.Writeln(expensiveBookCount);
Здравствуйте, Философ, Вы писали: Ф>поражает такая вещь: этой книжке туева хуча лет, её многие читали Ф>и он далеко не единственный кто об этом пишет, Ф>однако товарищи программисты по прежнему пренебрегают абсолютно всеми рекомендациями, Ф>притом не только в коде, но и в тексте (пример
). Ф>Почему?
старческое брюзжание никому не интересно
Ф>блин, неужели это так сложно, долбануть лишний раз энтер, или пробел после запятой?
как научили, так и пишут
другое дело, что обучение должно начинаться с оформления кода, потому что нагородить можно много чего, а вот сделать так, чтобы не икалось и в гробу не вертелось уже не всякий сможет
короче говоря, программист с как попало оформленным кодом это повар, который яичницу пожарить не может. может быть что-то другое он делать научился, но бесполезность и беспомощность его видна всем
Здравствуйте, VladD2, Вы писали:
B>>Там после него издевательство. VD>Что? Причем тут форматирование то?
При том, что и в русском техническом языке можно адски оформить текст.
Сравни
<<<
читал про то что нужно Administrative Tools ->Microsoft .Net Framework 2.0 Configuration. Under My Computer -> Runtime Security Policy -> Machine -> Code Groups -> All_Code select New… to create a new Code Group. Set a descriptive name for the group, select URL as the condition type and enter the URL of you site, for example localhost/WinControlTest*. Finally assign the FullTrust permission set to the code group. (В смысле поствавить FullTrust на созданную группу кода, однако у меня только на 1.1 .net fr есть такая настройка, но т к пишу в VS 2010, то поддержка от 2.0 до 4.5 .net framework и нету Администрирование ->Microsoft .Net Framework 2.0 Configuration). >>>
и (моя разбивка)
<<<
читал про то что нужно
Administrative Tools ->
Microsoft .Net Framework 2.0 Configuration. Under My Computer ->
Runtime Security Policy ->
Machine -> Code Groups ->
All_Code
select New…
to create a new Code Group.
Set a descriptive name for the group, select URL as the condition type and enter the URL of you site, for example localhost/WinControlTest*.
Finally assign the FullTrust permission set to the code group.
(В смысле поствавить FullTrust на созданную группу кода, однако у меня только на 1.1 .net fr есть такая настройка, но т.к. пишу в VS 2010, то поддержка от 2.0 до 4.5 .net framework и нету Администрирование -> Microsoft .Net Framework 2.0 Configuration). >>>
Здравствуйте, Философ, Вы писали:
Ф>Это злоупотребление структурой цикла for в C-подобных языках — цикл while, втиснутый в заголовок цикла for.
Отнюдь нет.
Дело в том, что на практике есть не два, а 5 видов циклов.
1. Подлинно бесконечный цикл, с остановкой по исключению.
2. Цикл опроса (предмет цикла меняется извне; покуда он не изменился, мы молотим почти бесконечный цикл).
3. Цикл неограниченных итераций, с остановкой по условию (предмет цикла меняется в его теле, но последовательность значений нетривиальна, а то и непредсказуема — например, проблема 3X+1)
4. Цикл линейного пробега по всему диапазону.
5. Цикл линейного поиска.
К сожалению, в Си есть только три языковые конструкции: for, while/do-while и проклятая if-goto
Вот и приходится выделываться с while(true), for(;;) и break/continue.
В С++11 можно отличать 4 от 5 вот так
for_each(xs.begin(), xs.end(), [](int x)
{
..... // будет выполнено для всех-всех-всех элементов
}
);
auto found = find_if(xs.begin(), xs.end(), [](int x) -> bool
{
.....
if(not_yet) return false; // аналог continue
.....
if(gotcha) return true; // аналог break
.....
return false; // концевое continue - само собой разумеющееся
}
);
Иногда действия для линейного пробега оказываются столь тяжеловесны, что запихнуть их в заголовок for невозможно.
Например, обход двусвязного двоичного дерева.
В этом случае неискушённый и умеренно-ленивый программист замаскирует цикл четвёртого или пятого типа под третий тип. И вгонит в ступор себя же, год спустя.
Искушённый и умеренно-энергичный — конечно же, напишет тройку функций