1 2 3 4 5 6 7 8 9
LINQ как шаг к функциональному программированию в избранное  новое горячее всё    подписка   модер. 
От: Чистяков Влад (VladD2) rsdnwww.k-press.ru/cs
Дата: 28.08.08 13:11
Оценка:1531 (53) +2
Статья:
LINQ как шаг к функциональному программированию
Автор(ы): Чистяков Влад (VladD2)
Дата: 26.01.2009
Цель данной статьи – объяснить читателю незнакомому с ФП, что такое функциональный подход, какие он дает преимущества, и как его можно использовать с помощью LINQ и C# 3.0.
Кроме того, эта статья дает некоторое понимание того, как работает «LONQ to Object» и на каких принципах он основан.


Авторы:
Чистяков Влад (VladD2)

Аннотация:
Цель данной статьи – объяснить читателю незнакомому с ФП, что такое функциональный подход, какие он дает преимущества, и как его можно использовать с помощью LINQ и C# 3.0.
Кроме того, эта статья дает некоторое понимание того, как работает «LINQ to Object» и на каких принципах он основан.
Вышел Nemerle 1.0


Все что нас не убивает, потом сильно об этом жалеет :).
Re: LINQ как шаг к функциональному программированию в избранное  новое    модер. 
От: nikov экспертMy buzz
Дата: 28.08.08 18:48
Оценка: +1
Здравствуйте, Чистяков Влад (VladD2), Вы писали:

ЧВV>Статья:

ЧВV>LINQ как шаг к функциональному программированию
Автор(ы): Чистяков Влад (VladD2)
Дата: 26.01.2009
Цель данной статьи – объяснить читателю незнакомому с ФП, что такое функциональный подход, какие он дает преимущества, и как его можно использовать с помощью LINQ и C# 3.0.
Кроме того, эта статья дает некоторое понимание того, как работает «LONQ to Object» и на каких принципах он основан.


Терминологическое уточнение: x = y это не "присвоение", а "присваивание".
Re: LINQ как шаг к функциональному программированию в избранное  новое    модер. 
От: _FRED_ экспертProfile on Google
Дата: 29.08.08 04:51
Здравствуйте, Чистяков Влад (VladD2), Вы писали:

ЧВV>Статья:

ЧВV>LINQ как шаг к функциональному программированию
Автор(ы): Чистяков Влад (VladD2)
Дата: 26.01.2009
Цель данной статьи – объяснить читателю незнакомому с ФП, что такое функциональный подход, какие он дает преимущества, и как его можно использовать с помощью LINQ и C# 3.0.
Кроме того, эта статья дает некоторое понимание того, как работает «LONQ to Object» и на каких принципах он основан.


Обычно, при использовании сокращений (даже общеизвестных), принято в первый раз упомянуть термин полностью, а следом указать аббревиатуру в скобках, и, далее, уже пользоваться кратким обозначением.

Это как объявление и использование переменных

Даже в узкоспециализированной литературе пренебрегать этим, ИМХО, неправильно: тяжело сразу настроить мозг на "раскрытие" сокращений и чтение уже не такое лёгкое, и удовольствия от него меньше.

Аббревиатуры "ФП" и "ИЯ" встречаются сразу без предупреждения:

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

Меж тем в ИЯ имеется множество конструкций создающих побочные эффекты.

What I've learned about software engineering: 1) Listen to smart people 2) Prefer simple to clever 3) Have no ego 4) Shut the fuck up.
Не бойтесь делиться своими методами работы. Большинству людей будет тупо лень их использовать.
Re: LINQ как шаг к функциональному программированию в избранное  новое    модер. 
От: McSim 
Дата: 01.09.08 00:42
Оценка: :))
Здравствуйте, Чистяков Влад (VladD2), Вы писали:

ЧВV>Статья:

ЧВV>LINQ как шаг к функциональному программированию
Автор(ы): Чистяков Влад (VladD2)
Дата: 26.01.2009
Цель данной статьи – объяснить читателю незнакомому с ФП, что такое функциональный подход, какие он дает преимущества, и как его можно использовать с помощью LINQ и C# 3.0.
Кроме того, эта статья дает некоторое понимание того, как работает «LONQ to Object» и на каких принципах он основан.


Здравствуйте, Влад!
Статью читал в журнале. Очень понравилась. Взял на вооружение.
Но очень огорчает большое количество орфографических ошибок в тексте.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: LINQ как шаг к функциональному программированию в избранное  новое    модер. 
От: Cyberax 
Дата: 01.09.08 01:28
Оценка: -1 :))) :))
Здравствуйте, McSim, Вы писали:

MS>Но очень огорчает большое количество орфографических ошибок в тексте.

Это чтоб сразу было видно, что Влад пишет
Sapienti sat!
Re[3]: LINQ как шаг к функциональному программированию в избранное  новое    модер. 
От: AngeL B. 
Дата: 01.09.08 02:36
Оценка: +2
Здравствуйте, Cyberax, Вы писали:

MS>>Но очень огорчает большое количество орфографических ошибок в тексте.

C>Это чтоб сразу было видно, что Влад пишет

Вместо того, чтобы писать вот такие комментарии про людей, которые для тебя статьи пишут, лучше бы предложил свои услуги по вычитке и коррекции текста.
Re[4]: LINQ как шаг к функциональному программированию в избранное  новое    модер. 
От: McSim 
Дата: 01.09.08 02:58
Здравствуйте, AngeL B., Вы писали:

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


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

Да разве же я с претензией написал это? Скорее просто пожелание на будущее. И если что, то мог бы принять участие в корректировке тексте перед публикацией.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: LINQ как шаг к функциональному программированию в избранное  новое    модер. 
От: AngeL B. 
Дата: 01.09.08 05:06
Здравствуйте, McSim, Вы писали:

MS>Да разве же я с претензией написал это? Скорее просто пожелание на будущее. И если что, то мог бы принять участие в корректировке тексте перед публикацией.


To McSim: Я не про твою фразу написал, а про Cyberax-овскую
Re[2]: LINQ как шаг к функциональному программированию в избранное  новое    модер. 
От: VladD2 rsdnwww.k-press.ru/cs
Дата: 01.09.08 06:44
Здравствуйте, McSim, Вы писали:

MS>Но очень огорчает большое количество орфографических ошибок в тексте.


Это довольно странно, так как статьи проходит корректуру в редакции.
Огромная просьба выслать примеры ошибок на адрес mag@rsdn.ru или submit@rsdn.ru.
Вышел Nemerle 1.0


Все что нас не убивает, потом сильно об этом жалеет :).
Re[3]: LINQ как шаг к функциональному программированию в избранное  новое    модер. 
От: McSim 
Дата: 01.09.08 07:30
Оценка: :)
Здравствуйте, VladD2, Вы писали:

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


VD>Это довольно странно, так как статьи проходит корректуру в редакции.

VD>Огромная просьба выслать примеры ошибок на адрес mag@rsdn.ru или submit@rsdn.ru.

К сожалению с собой только диск от журнала. Мне надо посмотреть на сами страницы журнала.
Сейчас же из статьи с диска несколько цитат:
1.

Далее в запросе просто используются выражения:

where УСЛОВИЕ_ФИЛЬРАЦИИ
select ОПИСАНИЕ_ВОЗВРАЩЯЕМОГО_ЗНАЧЕНИЯ


2. Такая проблема может возникнуть, например, если вам потребуется создать собственную реализацию EqualityComparer основанную на лябде:

и т.д.

Т.е., то буква пропущена, то местами поменяны, то запятой нету.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: LINQ как шаг к функциональному программированию в избранное  новое    модер. 
От: Kupaev rsdnwww.rsdn.ru
Дата: 01.09.08 10:25
Здравствуйте, McSim, Вы писали:

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


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


VD>>Это довольно странно, так как статьи проходит корректуру в редакции.

VD>>Огромная просьба выслать примеры ошибок на адрес mag@rsdn.ru или submit@rsdn.ru.

MS>К сожалению с собой только диск от журнала. Мне надо посмотреть на сами страницы журнала.


Спешка, увы, дает о себе знать.
Re[4]: LINQ как шаг к функциональному программированию в избранное  новое    модер. 
От: Cyberax 
Дата: 01.09.08 13:00
Оценка: :)
Здравствуйте, AngeL B., Вы писали:

C>>Это чтоб сразу было видно, что Влад пишет

AB>Вместо того, чтобы писать вот такие комментарии про людей, которые для тебя статьи пишут, лучше бы предложил свои услуги по вычитке и коррекции текста.
Я это не в упрёк Владу, его орфографические ашыпки и очепятки — уже давно неотъемлимая часть РСДН.
Sapienti sat!
Re: LINQ как шаг к функциональному программированию в избранное  новое    модер. 
От: VladD2 rsdnwww.k-press.ru/cs
Дата: 26.09.08 23:34
Хороший сравнительный пример использования LINQ привел IT в этом сообщении
Автор: IT
Дата: 22.09.08
.
Вышел Nemerle 1.0


Все что нас не убивает, потом сильно об этом жалеет :).
Re[2]: LINQ как шаг к функциональному программированию в избранное  новое    модер. 
От: Alf 
Дата: 12.01.09 20:16
Похоже китайская техника копипейста добралась и до статей =)

Особенность 1: В ФЯ иногда можно встретить два варианта этой функции FoldLeft, FoldRight. Первая производит свертку от начала списка к концу, вторая, соответственно, наоборот, от начала к концу.
Re: LINQ как шаг к функциональному программированию в избранное  новое    модер. 
От: alvas 
Дата: 13.01.09 06:11
Здравствуйте, Чистяков Влад (VladD2), Вы писали:

ЧВV>Аннотация:

ЧВV>Цель данной статьи – объяснить читателю незнакомому с ФП, что такое функциональный подход, какие он дает преимущества, и как его можно использовать с помощью LINQ и C# 3.0.
ЧВV>Кроме того, эта статья дает некоторое понимание того, как работает «LINQ to Object» и на каких принципах он основан.

Здравствуйте, Влад!
Статья очень понравилась. С нетерпением жду продолжения.
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[3]: LINQ как шаг к функциональному программированию в избранное  новое    модер. 
От: VladD2 rsdnwww.k-press.ru/cs
Дата: 13.01.09 09:19
Здравствуйте, Alf, Вы писали:

Alf>Похоже китайская техника копипейста добралась и до статей =)


Ну, обладая некоторым талантом можно и без копипаста накосячить

Alf>Особенность 1: В ФЯ иногда можно встретить два варианта этой функции FoldLeft, FoldRight. Первая производит свертку от начала списка к концу, вторая, соответственно, наоборот, от начала к концу.


Да, есть такая ошибка. Сам заметил, но уже поздно.
Вышел Nemerle 1.0


Все что нас не убивает, потом сильно об этом жалеет :).
Re[4]: LINQ как шаг к функциональному программированию в избранное  новое    модер. 
От: _FRED_ экспертProfile on Google
Дата: 13.01.09 09:40
Здравствуйте, VladD2, Вы писали:

Извиняюсь, что спамлю, но на форум mag ты, наверное, не подписан, и личные сообщения не получаешь

Что с подпиской на журнал?
Автор: _FRED_
Дата: 24.12.08
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
What I've learned about software engineering: 1) Listen to smart people 2) Prefer simple to clever 3) Have no ego 4) Shut the fuck up.
Не бойтесь делиться своими методами работы. Большинству людей будет тупо лень их использовать.
Re: LINQ как шаг к функциональному программированию в избранное  новое    модер. 
От: eao197http://eao197.blogspot.com
Дата: 13.01.09 10:26
Здравствуйте, Чистяков Влад (VladD2)

Идентификатор seed при вызове func -- это ошибка или что-то другое?
public static TAccumulate AggregateRight<TSource, TAccumulate>(
  this IEnumerable<TSource> source, 
  TAccumulate acc, 
  Func<TAccumulate, TSource, TAccumulate> func)
{
  if (source == null)
    throw New ArgumentNullException("source");
  if (func == null)
    throw New ArgumentNullException("func");

  foreach (TSource item in source.Reverse())
    acc = func(seed, item);

  return acc;
}


PS. Из статьи можно было бы смело выкинуть, как минимум, 1/3 текста при сохранении той же информативности.
PPS. По ходу чтения сильно напрягает стиль изложения "от первого лица" с наездами на "императивных программистов".
PPPS. Надеюсь, что 90% императивных программистов все-таки пишут так:
for (int i = 0; i < array1.Length; i++)
{
  if (i != 0)
    result += ", ";

  result += array1[i];
}


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: LINQ как шаг к функциональному программированию в избранное  новое    модер. 
От: server_mouseabout:blank
Дата: 13.01.09 15:44
Здравствуйте, Чистяков Влад (VladD2), Вы писали:

ЧВV>Статья:

ЧВV>LINQ как шаг к функциональному программированию
Автор(ы): Чистяков Влад (VladD2)
Дата: 26.01.2009
Цель данной статьи – объяснить читателю незнакомому с ФП, что такое функциональный подход, какие он дает преимущества, и как его можно использовать с помощью LINQ и C# 3.0.
Кроме того, эта статья дает некоторое понимание того, как работает «LONQ to Object» и на каких принципах он основан.


ЧВV>Авторы:

ЧВV> Чистяков Влад (VladD2)

ЧВV>Аннотация:

ЧВV>Цель данной статьи – объяснить читателю незнакомому с ФП, что такое функциональный подход, какие он дает преимущества, и как его можно использовать с помощью LINQ и C# 3.0.
ЧВV>Кроме того, эта статья дает некоторое понимание того, как работает «LINQ to Object» и на каких принципах он основан.


Жаль про join не рассказали ничего.
Повреждение мозга после ректальной биопсии — редкая штука (с) Хаус
Re[2]: LINQ как шаг к функциональному программированию в избранное  новое    модер. 
От: Andrey Gliznetsov 
Дата: 14.01.09 07:39
Здравствуйте, eao197, Вы писали:

E>PPPS. Надеюсь, что 90% императивных программистов все-таки пишут так:

E>
E>for (int i = 0; i < array1.Length; i++)
E>{
E>  if (i != 0)
E>    result += ", ";

E>  result += array1[i];
E>}
E>


Надеюсь что любой грамотный программист напишет вот так:



var sb = new StringBuilder();
for (int i = 0; i < array1.Length; i++)
{
    if (i != 0)
    sb.Append(", ");
    sb.Append(array1[i]);
}
result = sb.ToString();



Кроме того за все в этой жизни надо платить, в том числе и за лаконичность LINQ, вот результаты конкатенации массива чисел из 10000 элементов:

Способ: императивный
Расход памяти: 1200 kb
Время: 1600 ms

Способ: LINQ
Расход памяти: 2400 kb
Время: 860 ms

Способ: StringBuilder
Расход памяти: 580 kb
Время: 4 ms

Интересно что Linq отаработал в два раза быстрее и сожрал в два раза больше памяти, чем простой цикл. Ну а последний результат, как говорится без коментариев
1 2 3 4 5 6 7 8 9