Re[25]: Паттерны проектирования - копипаста!
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 24.09.12 09:14
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>И по тому, что он так хорошо подходит народ пишет так

WH>
WH>(from ...
WH>select ...).Take(...)
WH>

WH>Что же линк так сплоховал то?
WH>Где слово take? А как насчет insert и delete? И главное где мой flatten?

Query Comprehension вдруг стал Linq ? Вот так новость Сам подуймай, какой же это всемогутор если надо вот так вот писать код.

WH>>>Так что ты будешь делать с лишними словами? И что более важно с теми, которых не хватает?

I>>Этот вопрос я задавал тебе раз 5 или 6.
WH>Ты не мог задать этот вопрос. По тому, что ты даже не понимаешь где проблема.

С твоей верой спорить не будем.

I>>Если у тебя нет качественных абстракций, все твои языки будут мусором и тебе придется нанять человека вроде Эрика Мейера.

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

И давно Query Comprehension вдруг стал Linq ?

WH>И поэтому получается, что там либо есть лишние слов, либо не хватает слов и приходится лепить костыли типа того что выше. А обычно и то и другое.


Ты ведь собираешься решить эту проблему, правильно ? Покажи свой вариант linq, главное что бы он в хаскель не превратился.
Re[21]: Паттерны проектирования - копипаста!
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 24.09.12 09:29
Оценка:
Здравствуйте, WolfHound, Вы писали:

I>>>>ГУИ они разные. Там где контента много, а получить уведомления об изменении модели сложно, ViewModel не годится. Он годится для случаев, когда контента мало и изменения хорошо локализованы и легкодоступны.

WH>>>И в чем ты видишь проблемы?
I>>Разумеется в сложности реализации взаимодействия.
WH>Бла-бла-бла. Конкретики как обычно не будет?

ViewModel годится для случаев, где сценарии пользователя достаточно примитивны а требования меняются не часто, соответсвенно контролы простые, их мало. Пример — формочка логина, регистрации и тд.

WH>>>Или ты хочешь сказать, что виртуальные коллекции, которые физически загружают, только небольшое окно уже отменили?

I>>Я хучу сказать, что вариантов UI намного больше чем "только небольшое окно"
WH> БРЕД! Просто по тому, что на экране может поместиться только очень не большое количество данных.

Это заблуждение. Пример — гуглмап.

I>>Что мне должно быть понятно из примера для двух контролов ? Я не знаю сколько кода нужно другими инструментами.

WH>Ты тут вещаешь про UI а сам не знаешь как выглядит код для пары контролов на обычных технологиях?
WH>Забавно.

Забавно, что ты путаешь контекст. Как в веб разные инструменты описывают UI не имею понятия. В десктопе это делается почти полностью визуально. По крайней мере лазить в код дизайнера приходится от силы раз в пару месяцев.

I>>"если ... появится" — это, как ты понимаешь, написано после того, как yield return уже появился. Подумай хорошо, чего ты хочешь сказать.

...
WH>Так зачем ты показал на yield return в качестве примера решения проблемы?

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

WH>>>Я тебе показал, что такое реактивное программирование.

WH>>>То, что ты показываешь, к нему не относится.
I>>Примеры для случае в два контрола меня не интересуют.
WH>Ты не можешь показать всю круть своего подхода даже на двух контролах.

Я показал это даже без контролов, на примере Power Library. Конкретно в случае UI это полезно для обработки сложных сценариев в юзеринпуте, например игры, редакторы и тд и тд.

WH>Перепиши пример Introduction из этой демки. http://user1663.netfx45lab.discountasp.net/

WH>Посмотрим. Получится ли у тебя короче.
WH>Можешь даже на воображаемом языке, в котором есть все нужные тебе плюшки писать.

Я честно не сильно понимаю этот пример.
Re[25]: Паттерны проектирования - копипаста!
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 24.09.12 09:35
Оценка:
Здравствуйте, WolfHound, Вы писали:

I>>Перепутать авк и хайоктан — доказательство что ты вообще не помнишь контекст

WH>Это кто тут контекст не помнит?

Тот, кто с твоего аккаунта попутал хайоктан с авк. Ищи сам,я к твоему аккаунту не имею доступа.

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

WH>Они тебе не могут быть известны, поскольку ты не понимаешь предмет.

Думаешь что бы чувствовать боль надо быть врачом ? Да, сильно

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

WH>Но ты ничего не сказал. Всё что ты сказал сводится к реляционной алгебре.
WH>И решается с пол пинка.

Это вычислительная модель. А вот майнтейнить код в таком виде, как ты предложил очень тяжело и это провереный факт. Нужны качественные абстракции и тогда язык сам собой становится компактным.
На пример linq — куча народу пробует прикрутить к нему insert и delete, но пока что даже до внятного языка дело не дошло, получаются монстры для частных случаев. Как только будет найдена хорошая абстрация — это перекочует в язык.
До той поры городить языки как ты предлагаешь смысла нет,более того, это усложняет майнтенанс.
Re[22]: Паттерны проектирования - копипаста!
От: WolfHound  
Дата: 24.09.12 09:46
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>ViewModel годится для случаев, где сценарии пользователя достаточно примитивны а требования меняются не часто, соответсвенно контролы простые, их мало. Пример — формочка логина, регистрации и тд.

Бла-бла-бла. Обоснование будет?

WH>>>>Или ты хочешь сказать, что виртуальные коллекции, которые физически загружают, только небольшое окно уже отменили?

I>>>Я хучу сказать, что вариантов UI намного больше чем "только небольшое окно"
WH>> БРЕД! Просто по тому, что на экране может поместиться только очень не большое количество данных.
I>Это заблуждение. Пример — гуглмап.
Ты сам-то понимаешь, про что говоришь?
Гугломап это самый яркий пример в мою пользу.
Ибо в каждый конкретный момент тебе показывают очень маленький кусочек огромный карты.
Это и есть "небольшое окно".

I>Забавно, что ты путаешь контекст. Как в веб разные инструменты описывают UI не имею понятия. В десктопе это делается почти полностью визуально. По крайней мере лазить в код дизайнера приходится от силы раз в пару месяцев.

Ты бы сразу сказал, что делаешь только примитивный ГУИ.
Я бы время не тратил.
Ибо если нужен шаг в сторону, то визуальный редактор идет лесом.

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

Вот так стразу совсем любую? Просто нет слов.

I>Я показал это даже без контролов, на примере Power Library. Конкретно в случае UI это полезно для обработки сложных сценариев в юзеринпуте, например игры, редакторы и тд и тд.

Бла-бла-бла.
Код для данных двух едитов в студию.
Или можно уже слив засчитывать?

WH>>Перепиши пример Introduction из этой демки. http://user1663.netfx45lab.discountasp.net/

I>Я честно не сильно понимаю этот пример.
Что можно не понять в данном примере?
Тут есть еще кто-то кто не понял, что делает это пример?
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[26]: Паттерны проектирования - копипаста!
От: WolfHound  
Дата: 24.09.12 09:53
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>>>Перепутать авк и хайоктан — доказательство что ты вообще не помнишь контекст

WH>>Это кто тут контекст не помнит?
I>Тот, кто с твоего аккаунта попутал хайоктан с авк. Ищи сам,я к твоему аккаунту не имею доступа.
Я восстановил разговор.
Но ты не смог его даже его перечитать.
Наверное, пора перестать с тобой разговаривать.
Ибо даже не в состоянии восстановить контекст, когда тебе его полностью пересказали.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[27]: Паттерны проектирования - копипаста!
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 24.09.12 11:54
Оценка:
Здравствуйте, WolfHound, Вы писали:

I>>>>Перепутать авк и хайоктан — доказательство что ты вообще не помнишь контекст

WH>>>Это кто тут контекст не помнит?
I>>Тот, кто с твоего аккаунта попутал хайоктан с авк. Ищи сам,я к твоему аккаунту не имею доступа.
WH>Я восстановил разговор.
WH>Но ты не смог его даже его перечитать.
WH>Наверное, пора перестать с тобой разговаривать.
WH>Ибо даже не в состоянии восстановить контекст, когда тебе его полностью пересказали.

Бывает, ну да не важно.
Re[23]: Паттерны проектирования - копипаста!
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 24.09.12 11:58
Оценка: :)
Здравствуйте, WolfHound, Вы писали:

I>>ViewModel годится для случаев, где сценарии пользователя достаточно примитивны а требования меняются не часто, соответсвенно контролы простые, их мало. Пример — формочка логина, регистрации и тд.

WH>Бла-бла-бла. Обоснование будет?

У меня 1 вью и на нем до 100К бизнес-объектов. Как это реализовать в виде VM ? Можешь показать хороший пример ? И это не кнопки, не гриды, и вообще нет стандартных контролов.

I>>Это заблуждение. Пример — гуглмап.

WH>Ты сам-то понимаешь, про что говоришь?
WH>Гугломап это самый яркий пример в мою пользу.
WH>Ибо в каждый конкретный момент тебе показывают очень маленький кусочек огромный карты.
WH>Это и есть "небольшое окно".

"только очень не большое количество данных" — маленький кусочек карты показывает ОЧЕНЬ большое количество данных.
Теперь представь, что каждый объект на карте можно таскать, изменять свойства и тд и тд и тд.

I>>Забавно, что ты путаешь контекст. Как в веб разные инструменты описывают UI не имею понятия. В десктопе это делается почти полностью визуально. По крайней мере лазить в код дизайнера приходится от силы раз в пару месяцев.

WH>Ты бы сразу сказал, что делаешь только примитивный ГУИ.
WH>Я бы время не тратил.
WH>Ибо если нужен шаг в сторону, то визуальный редактор идет лесом.

ViewModel точно так же идёт лесом немногим позже.

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

WH>Вот так стразу совсем любую? Просто нет слов.

Любую из повседневных.

I>>Я показал это даже без контролов, на примере Power Library. Конкретно в случае UI это полезно для обработки сложных сценариев в юзеринпуте, например игры, редакторы и тд и тд.

WH>Бла-бла-бла.
WH>Код для данных двух едитов в студию.
WH>Или можно уже слив засчитывать?

http://rsdn.ru/forum/decl/4874580.1
Автор: Ikemefula
Дата: 30.08.12


I>>Я честно не сильно понимаю этот пример.

WH>Что можно не понять в данном примере?
WH>Тут есть еще кто-то кто не понял, что делает это пример?

Тебя смущает, что же можно не понимать в незнакомой области ?
Re[24]: Паттерны проектирования - копипаста!
От: WolfHound  
Дата: 24.09.12 12:49
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>>>Я показал это даже без контролов, на примере Power Library. Конкретно в случае UI это полезно для обработки сложных сценариев в юзеринпуте, например игры, редакторы и тд и тд.

WH>>Бла-бла-бла.
WH>>Код для данных двух едитов в студию.
WH>>Или можно уже слив засчитывать?
I>http://rsdn.ru/forum/decl/4874580.1
Автор: Ikemefula
Дата: 30.08.12

Ясно. Кода не будет. Значит, засчитываем слив.

I>Тебя смущает, что же можно не понимать в незнакомой области ?

Ты тут рядом пишешь про сложные УИ которые показывают одновременно 100К объектов и тут же путаешься в двух контролах.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[25]: Паттерны проектирования - копипаста!
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 24.09.12 12:59
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>>>Бла-бла-бла.

WH>>>Код для данных двух едитов в студию.
WH>>>Или можно уже слив засчитывать?
I>>http://rsdn.ru/forum/decl/4874580.1
Автор: Ikemefula
Дата: 30.08.12

WH>Ясно. Кода не будет. Значит, засчитываем слив.

Мне лень.

I>>Тебя смущает, что же можно не понимать в незнакомой области ?

WH>Ты тут рядом пишешь про сложные УИ которые показывают одновременно 100К объектов и тут же путаешься в двух контролах.

А что тут странного, я не клепал формочек уже не помню сколько времени А в веб вообще ни одной не склепал, более того, даже ни одной странички самостоятельно не оформил.
Re[6]: Паттерны проектирования - копипаста!
От: vdimas Россия  
Дата: 05.10.12 11:17
Оценка:
Здравствуйте, VladD2, Вы писали:

I>>Передергиваешь в очередной раз. С чего ты взял что текстовые заведомо лучше графических ?

VD>Не важно. Важно, что ты таки принял точку зрения, что для решения сложных задач ДСЛ-и подходят куда лучше чем ЯОН-ы.

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

I>>В некоторых областях текстовые будут лучше, до тех пор пока не появится качественная графическая информация.

VD>Вот хорошая область — разговоры в форумах. Очень много времени на них уходит. Как жаль, что для этого не придумали качественных графических ДСЛ-е. Приходится по старинке использовать текст.

Графическое представление не исключает текстовых элементов. Т.е. банальный TreeView — это уже графика в полный рост. Выделения, разметка и прочий гипертекст — тоже.
Re[37]: Паттерны проектирования - копипаста!
От: Tanker  
Дата: 10.01.13 09:51
Оценка:
Здравствуйте, samius, Вы писали:

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

S>Можно взглянуть на хотя бы один способ эмуляции yield return без поддержки языка?

Наконец то дошли руки ответить
            var co = Generator.New<string>(c =>
                                   {
                                       c.yield("1");
                                       c.yield("2");
                                       c.yield("3");
                                       c.yield("4");
                                       c.yield("5");
                                       c.yield("6");
                                   });

            foreach (var item in co)
            {
                Console.WriteLine(item);
            }


В С++, java и даже православном Цэ возможен точно такой же подход при чем безо всякой поддержки компилятора. Да хоть в ассемблере пиши.
The animals went in two by two, hurrah, hurrah...
Re[37]: Паттерны проектирования - копипаста!
От: Tanker  
Дата: 10.01.13 10:04
Оценка: :))
Здравствуйте, Sinclair, Вы писали:

I>>Это можно эмулировать десятком способов, не было только языковой поддержки. Например в winapi есть такая вещь, как файберы — очень интересная штукенция.

S> Покажите мне, как эмулировать Enumerable.TakeWhile на файберах. Его устройство в терминах yield return мне понятно.

Точно так же, как и без файберов Надеюсь идея ясна:
            Func<string, bool> predicate = s => s!= null;
            var co = Coroutine.New<string>(c =>
                                           {
                                               string x;
                                               do
                                               {
                                                   x = c.yield(); // это можно врапнуть в итератор, см ниже
                                                   if(predicate(x))
                                                   {
                                                       c.yield(x);
                                                       continue;
                                                   }
                                                   break;
                                               } while (true);
                                           });
            ...
            var co = Coroutine.New<string>(c =>
                                           {
                                               string x;
                                               foreach(var x in с.source)
                                               {
                                                   if(predicate(x))
                                                   {
                                                       c.yield(x);
                                                       continue;
                                                   }
                                                   break;
                                               } while (true);
                                           });
The animals went in two by two, hurrah, hurrah...
Re[38]: Паттерны проектирования - копипаста!
От: samius Япония http://sams-tricks.blogspot.com
Дата: 10.01.13 11:19
Оценка:
Здравствуйте, Tanker, Вы писали:

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


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

S>>Можно взглянуть на хотя бы один способ эмуляции yield return без поддержки языка?

T>Наконец то дошли руки ответить

T>
T>            var co = Generator.New<string>(c =>
T>                                   {
T>                                       c.yield("1");
T>                                       c.yield("2");
T>                                       c.yield("3");
T>                                       c.yield("4");
T>                                       c.yield("5");
T>                                       c.yield("6");
T>                                   });

T>            foreach (var item in co)
T>            {
T>                Console.WriteLine(item);
T>            }
T>


T>В С++, java и даже православном Цэ возможен точно такой же подход при чем безо всякой поддержки компилятора. Да хоть в ассемблере пиши.


Я не увидел здесь ничего, напоминающего yield, кроме имени метода yield. Пример изоморфен следующему коду
List<string> co = Generator.NewList<string>(List<string> c =>
{
   c.Add("1");
   c.Add("2");
   ...
});
Re[39]: Паттерны проектирования - копипаста!
От: Tanker  
Дата: 10.01.13 11:35
Оценка:
Здравствуйте, samius, Вы писали:

S>Я не увидел здесь ничего, напоминающего yield, кроме имени метода yield. Пример изоморфен следующему коду


Вроде как нужен был код "эмуляции yield return без поддержки языка"

S>
S>List<string> co = Generator.NewList<string>(List<string> c =>
S>{
S>   c.Add("1");
S>   c.Add("2");
S>   ...
S>});  
S>


Изоморфен, только разница в том, что твой энергичный а мой ленивый:
            var co = Generator.New<string>(c =>
                                           {
                                             int i = 0;
                                             while(true) 
                                                c.yield((i++).ToString());
                                           });
The animals went in two by two, hurrah, hurrah...
Re[40]: Паттерны проектирования - копипаста!
От: samius Япония http://sams-tricks.blogspot.com
Дата: 10.01.13 11:39
Оценка:
Здравствуйте, Tanker, Вы писали:

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


S>>Я не увидел здесь ничего, напоминающего yield, кроме имени метода yield. Пример изоморфен следующему коду


T>Вроде как нужен был код "эмуляции yield return без поддержки языка"

Да-да

T>Изоморфен, только разница в том, что твой энергичный а мой ленивый:

T>
T>            var co = Generator.New<string>(c =>
T>                                           {
T>                                             int i = 0;
T>                                             while(true) 
T>                                                c.yield((i++).ToString());
T>                                           });
T>

мой тоже можно сделать ленивым. Но вопрос не в этом.
co.Any() когда-нибудь вернет управление? Если да, то за счет чего?
Re[41]: Паттерны проектирования - копипаста!
От: Tanker  
Дата: 10.01.13 11:56
Оценка:
Здравствуйте, samius, Вы писали:

T>>Изоморфен, только разница в том, что твой энергичный а мой ленивый:

T>>
T>>            var co = Generator.New<string>(c =>
T>>                                           {
T>>                                             int i = 0;
T>>                                             while(true) 
T>>                                                c.yield((i++).ToString());
T>>                                           });
T>>

S>мой тоже можно сделать ленивым. Но вопрос не в этом.
S>co.Any() когда-нибудь вернет управление? Если да, то за счет чего?

Конечно вернет, а что тут особенного ? При чем вычислится ровно один элемент. А если например ты будешь вызывать вот так Any(x => x == "тарелка борща"); то никогда не вернет.
The animals went in two by two, hurrah, hurrah...
Re[42]: Паттерны проектирования - копипаста!
От: samius Япония http://sams-tricks.blogspot.com
Дата: 10.01.13 11:58
Оценка:
Здравствуйте, Tanker, Вы писали:

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


T>>>
T>>>            var co = Generator.New<string>(c =>
T>>>                                           {
T>>>                                             int i = 0;
T>>>                                             while(true) 
T>>>                                                c.yield((i++).ToString());
T>>>                                           });
T>>>

S>>co.Any() когда-нибудь вернет управление? Если да, то за счет чего?

T>Конечно вернет, а что тут особенного ? При чем вычислится ровно один элемент. А если например ты будешь вызывать вот так Any(x => x == "тарелка борща"); то никогда не вернет.


За счет чего while(true) остановится на одном элементе?
Re[43]: Паттерны проектирования - копипаста!
От: Tanker  
Дата: 10.01.13 12:13
Оценка:
Здравствуйте, samius, Вы писали:

T>>Конечно вернет, а что тут особенного ? При чем вычислится ровно один элемент. А если например ты будешь вызывать вот так Any(x => x == "тарелка борща"); то никогда не вернет.


S>За счет чего while(true) остановится на одном элементе?


Очевидно, за счет средств ОС — потоки, файберы. Никакого обмана.
The animals went in two by two, hurrah, hurrah...
Re[43]: Паттерны проектирования - копипаста!
От: Jack128  
Дата: 10.01.13 12:15
Оценка: 8 (1)
Здравствуйте, samius, Вы писали:

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


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


T>>>>
T>>>>            var co = Generator.New<string>(c =>
T>>>>                                           {
T>>>>                                             int i = 0;
T>>>>                                             while(true) 
T>>>>                                                c.yield((i++).ToString());
T>>>>                                           });
T>>>>

S>>>co.Any() когда-нибудь вернет управление? Если да, то за счет чего?

T>>Конечно вернет, а что тут особенного ? При чем вычислится ровно один элемент. А если например ты будешь вызывать вот так Any(x => x == "тарелка борща"); то никогда не вернет.


S>За счет чего while(true) остановится на одном элементе?


как там товарищ на шарпе/java это сделает — не знаю, но например на дельфи такое делается махинациями со стеком http://habrahabr.ru/post/157777/ . Естественно на плюсах такое повторить без проблем можно.
Re[44]: Паттерны проектирования - копипаста!
От: Tanker  
Дата: 10.01.13 12:21
Оценка:
Здравствуйте, Jack128, Вы писали:

J>как там товарищ на шарпе/java это сделает — не знаю, но например на дельфи такое делается махинациями со стеком http://habrahabr.ru/post/157777/ . Естественно на плюсах такое повторить без проблем можно.


Можно и штаны через голову одеть. Вот генераторы образца 2003 года на файберах http://msdn.microsoft.com/en-us/magazine/cc164086.aspx
Но по моему это глупусть, на потоках намного проще а издержки те же самые.
The animals went in two by two, hurrah, hurrah...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.