Re[38]: Linq : неудачный маркетинг?
От: mrTwister Россия  
Дата: 20.02.10 21:40
Оценка: +1
Здравствуйте, WolfHound, Вы писали:

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


WH>>>В данном случае я прекрасно знаю и работал с обоими подходими.

T>>Это ещё один стандартный аргумент в холиварах.
WH>Ты конечно можешь и дальше отвергать факты этой фразой но факты от этого не перестанут быть фактами ...

Факт заключается в том, что это твое личное мнение (что обсуждаемый синтаксис тебе не мешает). Дак вот, факт наличия у тебя такого личного мнения я не отрицаю.
лэт ми спик фром май харт
Re[39]: Linq : неудачный маркетинг?
От: WolfHound  
Дата: 20.02.10 21:49
Оценка:
Здравствуйте, mrTwister, Вы писали:

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

        def keyToValMap = SCG.Dictionary();
        keyToValMap["asd"] = 1 : byte;//говорим компилятору что 1 у нас имеет тип byte.
        def size = keyToValMap["asd"];
        def arr = array(size); // expected int, got byte- in value reference: System.Byte is not a subtype of System.Int32 [simple require]

Я ее и без указания типов увижу...
Я же говорю ты не работал с языками в которых вывод типов есть.
... << RSDN@Home 1.2.0 alpha 4 rev. 1305>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[40]: Linq : неудачный маркетинг?
От: mrTwister Россия  
Дата: 20.02.10 22:09
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Я ее и без указания типов увижу...

WH>Я же говорю ты не работал с языками в которых вывод типов есть.
Offtop: неужели в Nemerle размер массива можно указывать только в Int32? В любом случае, к выводу типов это не имеет никакого отношения.

Но тем неменее, если вернуться с небес на землю (в смысле к C#), то вышеуказанный пример наглядно демонстрирует, как использование var помешало сделать ошибку очевидной.
лэт ми спик фром май харт
Re[4]: Жуткий оффтопик
От: Кэр  
Дата: 21.02.10 00:18
Оценка:
Здравствуйте, IB, Вы писали:

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


Кэр>>Иван, а ты еще в Редмонде?

IB>Уже нет, мы сейчас с AVK и Голлумом в джерси, в гостях у IT =)

Ых Ну ладно — стучитесь в следующий раз если что
Re[41]: Linq : неудачный маркетинг?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 21.02.10 07:17
Оценка:
Здравствуйте, mrTwister, Вы писали:

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


WH>>Я ее и без указания типов увижу...

WH>>Я же говорю ты не работал с языками в которых вывод типов есть.
T>Offtop: неужели в Nemerle размер массива можно указывать только в Int32? В любом случае, к выводу типов это не имеет никакого отношения.

T>Но тем неменее, если вернуться с небес на землю (в смысле к C#), то вышеуказанный пример наглядно демонстрирует, как использование var помешало сделать ошибку очевидной.


Если сравнивать C# с языками с более мощным выводом типов, то оказывается что проблема не в var, а в неявном приведении типов в C#.
Re[14]: Linq : неудачный маркетинг?
От: igna Россия  
Дата: 21.02.10 07:27
Оценка: -1
Здравствуйте, AndrewVK, Вы писали:

AVK>Отсутствие возможности воспользоваться максимально полным контрактом.


Ну что это за аргумент? Почему он относится к локальным переменным и не относится к параметрам?

AVK>Это обеспечивает максимальную гибкость и надежность кода. Есть, ЕМНИП, довольно строгое доказательство сего на основе LSP.


А вдруг все же ТИП? Ссылку давай.

AVK>А теперь встречный вопрос — а зачем обобщать тип локальной переменной?


Затем же, зачем обобщают тип параметра. Различие только количественное.
Re[26]: Linq : неудачный маркетинг?
От: igna Россия  
Дата: 21.02.10 07:31
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Конечно FileStream. ... Компилятор только параметры генерика вывел.


Никакой "конечности" тут нет, компилятор точно также мог вывести наиболее общий достаточный тип.
Re[42]: Linq : неудачный маркетинг?
От: igna Россия  
Дата: 21.02.10 07:39
Оценка:
Здравствуйте, samius, Вы писали:

S>Если сравнивать C# с языками с более мощным выводом типов, то оказывается что проблема не в var, а в неявном приведении типов в C#.


То есть хотя и не использование вывода типов вообще, но все же использование вывода типов в C# может привести к проблемам?
Re[27]: Linq : неудачный маркетинг?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 21.02.10 08:01
Оценка:
Здравствуйте, igna, Вы писали:

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


WH>>Конечно FileStream. ... Компилятор только параметры генерика вывел.


I>Никакой "конечности" тут нет, компилятор точно также мог вывести наиболее общий достаточный тип.


Зачем может понадобится компилятору мухлевать с явно указанным типом локальной переменной?
Re[43]: Linq : неудачный маркетинг?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 21.02.10 08:21
Оценка: 5 (2) +2
Здравствуйте, igna, Вы писали:

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


S>>Если сравнивать C# с языками с более мощным выводом типов, то оказывается что проблема не в var, а в неявном приведении типов в C#.


I>То есть хотя и не использование вывода типов вообще, но все же использование вывода типов в C# может привести к проблемам?


Да, я считаю что именно неявное преобразование типов в C# делает вывод типов в нем менее предсказуемым чем в Nemerle и F#.

Выше был приведен пример когда переполненный byte мог уйти в длину массива. Но шутка может быть еще хуже:

var size = keyToValMap["size"];
var sizeDiv2 = size / 2;
Console.WriteLine(Math.Sqrt(sizeDiv2));

Смотря на этот код без подсказок среды мы не можем предсказать, какой тип хранится в size. Мы его можем поделить на 2 (а хрен знает, это целая 2 или с плавающей точкой) и можем подать в метод, который принимает double.

Языки без неявного приведения типов не стерпят это безобразие. Потому — да, в C#-е вывод типов проблемнее.
Re[28]: Linq : неудачный маркетинг?
От: igna Россия  
Дата: 21.02.10 09:03
Оценка: +1
Здравствуйте, samius, Вы писали:

S>Зачем может понадобится компилятору мухлевать с явно указанным типом локальной переменной?


Затем чтобы IDE показывало тип Stream читающему программу и последнему было бы без просмотра дальнейшего кода ясно, что методы специфичные для FileStream не используются.
Re[7]: Linq : неудачный маркетинг?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 21.02.10 10:15
Оценка:
Здравствуйте, 0x7be, Вы писали:

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


M>>Оптимизация связанная с многопоточностью, обычно либо уровнем выше (например, пул потоков на сервере), либо на уровне качественного изменения алгоритмов, кеширования и т. п. Для качественной оптимизации, данных, которые получает LINQ, может и не хватить. Ну и в таком случае я предпочитаю критические участки писать на чистом С, где все под контролем.

0>Не соглашусь. Пулы потоков, всякие "Task manager`ы", "Scheduler`ы" и прочие "тяжеловесные" решения, организующие параллельные вычисления, достаточно неуклюжи. Они хороши для организации архитектуры прогаммы, сервера, там, какого-нибудь, но неудобны при написании вычислительных алгоритмов. Очень хочется чего-то более простого и органичного.

Я обращал внимание на то, что оптимизация, связанная с многопоточностью, уже может быть выполнена уровнем выше. Например, у нас есть сервер, есть пул потоков, каждая сессия работает в своем собственном потоке. Если при этом еще и сессия начнет плодить потоки дл организации вычислений, то работа сервера в целом может замедлится. Или, например, при написании шахматной прораммы, нет никакого смысла делать генератор ходов многопоточным, потому что распараллеливание естественным образом возникает при переборе вариантов на верхнем уровне.

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



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


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

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

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

Вот большая проблема как раз в правильном выборе. Возникают "дыры", с которыми потом усиленно борешься.
Re[7]: Linq : неудачный маркетинг?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 21.02.10 10:17
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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


M>>Ну и в таком случае я предпочитаю критические участки писать на чистом С, где все под контролем.


AVK>Упомянутый уже здесь Эрик Мейер, когда рассказывал про некоторые применения Rx, говорил, что он недостаточно умен, чтобы написать аналогичное без линка. И я ему почму то верю.


Так тут все просто: не будет хватать моего ума, будут возникать проблемы, буду смотреть в сторону того, как их решать. А если проблем нет и пока не предвидится?
Re[29]: Linq : неудачный маркетинг?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 21.02.10 17:18
Оценка:
Здравствуйте, igna, Вы писали:

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


S>>Зачем может понадобится компилятору мухлевать с явно указанным типом локальной переменной?


I>Затем чтобы IDE показывало тип Stream читающему программу и последнему было бы без просмотра дальнейшего кода ясно, что методы специфичные для FileStream не используются.


И что это даст читающему программу в отношени локальной переменной?
Re[8]: Linq : неудачный маркетинг?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 21.02.10 17:35
Оценка:
Здравствуйте, Mystic, Вы писали:

M>Так тут все просто: не будет хватать моего ума, будут возникать проблемы, буду смотреть в сторону того, как их решать. А если проблем нет и пока не предвидится?


Если проблем нет, то, с большой вероятностью, это означает что ты их пока не видишь
... << RSDN@Home 1.2.0 alpha 4 rev. 1458 on Windows 7 6.1.7600.0>>
AVK Blog
Re[30]: Linq : неудачный маркетинг?
От: igna Россия  
Дата: 21.02.10 20:58
Оценка:
Здравствуйте, samius, Вы писали:

S>И что это даст читающему программу в отношени локальной переменной?


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

Каков вопрос, таков и ответ.
Re[31]: Linq : неудачный маркетинг?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 21.02.10 21:07
Оценка:
Здравствуйте, igna, Вы писали:

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


S>>И что это даст читающему программу в отношени локальной переменной?


I>Отсутствие необходимости просматривать дальнейший код, чтобы убедиться в том, что методы специфичные для FileStream не используются.


И что же даст знание о том что специфичные методы не используются для локальной переменной?
Re[34]: Linq : неудачный маркетинг?
От: Lloyd Россия  
Дата: 21.02.10 22:04
Оценка:
Здравствуйте, olegkr, Вы писали:

IT>>>Кто именно воспользуется?

L>>Любой твой коллега или ты сам.

O>Страшно жить, когда от коллег и себя защищаться приходится.


Правильно, тормоза придумали трусы.
Re: вопрос к специалистам
От: Pavel Dvorkin Россия  
Дата: 22.02.10 03:04
Оценка: 1 (1)
Здравствуйте, 0x7be, Вы писали:

Почитал этот тред и все нелестные высказывания в адрес тех, кто LinQ как следует не знает, а делает выводы.
Я его тоже не знаю, и, чтобы не получить в свой адрес нелестные высказывания, выводы делать не буду.

У меня вопрос к тем, кто считает, что он LinQ знает.

Сформулируйте, когда LinQ стоит применять и когда его применение нецелесообразно.
With best regards
Pavel Dvorkin
Re[32]: Linq : неудачный маркетинг?
От: igna Россия  
Дата: 22.02.10 07:36
Оценка:
Здравствуйте, samius, Вы писали:

S>И что же даст знание о том что специфичные методы не используются для локальной переменной?


Например понимание того, что можно заменить FileStream на какой-либо другой Stream без модификации дальнейшего кода.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.