Здравствуйте, 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, главное что бы он в хаскель не превратился.
Здравствуйте, 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>Можешь даже на воображаемом языке, в котором есть все нужные тебе плюшки писать.
Здравствуйте, WolfHound, Вы писали:
I>>Перепутать авк и хайоктан — доказательство что ты вообще не помнишь контекст WH>Это кто тут контекст не помнит?
Тот, кто с твоего аккаунта попутал хайоктан с авк. Ищи сам,я к твоему аккаунту не имею доступа.
I>>Симптомы которые он перечисляет мне очень хорошо знакомы. Полной картины пока нет, но оснований для сомнений вполне достаточно. WH>Они тебе не могут быть известны, поскольку ты не понимаешь предмет.
Думаешь что бы чувствовать боль надо быть врачом ? Да, сильно
I>>Вроде как в прошлый раз ты задачу правильно понял при чем предложил именно то решение от котог мы отказались. Не боись — я майнтейнил этот код достаточно долго что бы разобраться что к чему и какие проблемы дает тот подход который ты предлагаешь. WH>Но ты ничего не сказал. Всё что ты сказал сводится к реляционной алгебре. WH>И решается с пол пинка.
Это вычислительная модель. А вот майнтейнить код в таком виде, как ты предложил очень тяжело и это провереный факт. Нужны качественные абстракции и тогда язык сам собой становится компактным.
На пример linq — куча народу пробует прикрутить к нему insert и delete, но пока что даже до внятного языка дело не дошло, получаются монстры для частных случаев. Как только будет найдена хорошая абстрация — это перекочует в язык.
До той поры городить языки как ты предлагаешь смысла нет,более того, это усложняет майнтенанс.
Здравствуйте, 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) А. Эйнштейн
Здравствуйте, Ikemefula, Вы писали:
I>>>Перепутать авк и хайоктан — доказательство что ты вообще не помнишь контекст WH>>Это кто тут контекст не помнит? I>Тот, кто с твоего аккаунта попутал хайоктан с авк. Ищи сам,я к твоему аккаунту не имею доступа.
Я восстановил разговор.
Но ты не смог его даже его перечитать.
Наверное, пора перестать с тобой разговаривать.
Ибо даже не в состоянии восстановить контекст, когда тебе его полностью пересказали.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
I>>>>Перепутать авк и хайоктан — доказательство что ты вообще не помнишь контекст WH>>>Это кто тут контекст не помнит? I>>Тот, кто с твоего аккаунта попутал хайоктан с авк. Ищи сам,я к твоему аккаунту не имею доступа. WH>Я восстановил разговор. WH>Но ты не смог его даже его перечитать. WH>Наверное, пора перестать с тобой разговаривать. WH>Ибо даже не в состоянии восстановить контекст, когда тебе его полностью пересказали.
Здравствуйте, 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>Или можно уже слив засчитывать?
Здравствуйте, Ikemefula, Вы писали:
I>>>Я показал это даже без контролов, на примере Power Library. Конкретно в случае UI это полезно для обработки сложных сценариев в юзеринпуте, например игры, редакторы и тд и тд. WH>>Бла-бла-бла. WH>>Код для данных двух едитов в студию. WH>>Или можно уже слив засчитывать? I>http://rsdn.ru/forum/decl/4874580.1
Ясно. Кода не будет. Значит, засчитываем слив.
I>Тебя смущает, что же можно не понимать в незнакомой области ?
Ты тут рядом пишешь про сложные УИ которые показывают одновременно 100К объектов и тут же путаешься в двух контролах.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>>>Бла-бла-бла. WH>>>Код для данных двух едитов в студию. WH>>>Или можно уже слив засчитывать? I>>http://rsdn.ru/forum/decl/4874580.1
Мне лень.
I>>Тебя смущает, что же можно не понимать в незнакомой области ? WH>Ты тут рядом пишешь про сложные УИ которые показывают одновременно 100К объектов и тут же путаешься в двух контролах.
А что тут странного, я не клепал формочек уже не помню сколько времени А в веб вообще ни одной не склепал, более того, даже ни одной странички самостоятельно не оформил.
Здравствуйте, VladD2, Вы писали:
I>>Передергиваешь в очередной раз. С чего ты взял что текстовые заведомо лучше графических ? VD>Не важно. Важно, что ты таки принял точку зрения, что для решения сложных задач ДСЛ-и подходят куда лучше чем ЯОН-ы.
Попытка подмены тезиса оппонента. Он говорил сугубо о текстовых DSL, которые обязательно требуют тонны идентификаторов для всех "промежуточных" элементов программы. В графических DSL этого требования нет.
I>>В некоторых областях текстовые будут лучше, до тех пор пока не появится качественная графическая информация. VD>Вот хорошая область — разговоры в форумах. Очень много времени на них уходит. Как жаль, что для этого не придумали качественных графических ДСЛ-е. Приходится по старинке использовать текст.
Графическое представление не исключает текстовых элементов. Т.е. банальный TreeView — это уже графика в полный рост. Выделения, разметка и прочий гипертекст — тоже.
Здравствуйте, 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 и даже православном Цэ возможен точно такой же подход при чем безо всякой поддержки компилятора. Да хоть в ассемблере пиши.
Здравствуйте, 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);
});
Здравствуйте, Tanker, Вы писали:
T>Здравствуйте, samius, Вы писали:
I>>>Это можно эмулировать десятком способов, не было только языковой поддержки. S>>Можно взглянуть на хотя бы один способ эмуляции yield return без поддержки языка?
T>Наконец то дошли руки ответить T>
Здравствуйте, 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() когда-нибудь вернет управление? Если да, то за счет чего?
Здравствуйте, 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 == "тарелка борща"); то никогда не вернет.
Здравствуйте, 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) остановится на одном элементе?
Здравствуйте, samius, Вы писали:
T>>Конечно вернет, а что тут особенного ? При чем вычислится ровно один элемент. А если например ты будешь вызывать вот так Any(x => x == "тарелка борща"); то никогда не вернет.
S>За счет чего while(true) остановится на одном элементе?
Очевидно, за счет средств ОС — потоки, файберы. Никакого обмана.
Здравствуйте, 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/ . Естественно на плюсах такое повторить без проблем можно.
Здравствуйте, Jack128, Вы писали:
J>как там товарищ на шарпе/java это сделает — не знаю, но например на дельфи такое делается махинациями со стеком http://habrahabr.ru/post/157777/ . Естественно на плюсах такое повторить без проблем можно.