Oberon space
General Category => Общий раздел => Тема начата: valexey от Январь 31, 2012, 09:27:04 pm
-
Гусары, молчать! :-)
Прочитал вот эту статью: http://rsdn.ru/article/dotnet/ReactiveExtensions.xml Там, в шарпе появилось модное реактивное программирование. По ходу прочтения меня мучали две мысли:
1) Архитекторов C# покусали функциональщики.
2) Блин, да все это ж было и раньше прямо в языках и в ОС, и называлось, соответственно, сопрограммами и fiber'ами. Ну и соответственно все это легко комбинацией fiber+thread делается.
Вообще, вот этот код из статьи, смотрится весьма эпично:
Func<int, int, int> add = (_x, _y) => _x + _y;
int x = 1, y = 2;
Func<int, int, IObservable<int>> obvervableAdd = add.ToAsync();
IObservable<int> result = from added in obvervableAdd(x, y)
select added;
result.Subscribe(r => Console.WriteLine(@"Observable result for function add({0}, {1}):
result = {2}, CurrentThreadId = {3}", x, y, r,
Thread.CurrentThread.ManagedThreadId));
Если кто не понял -- тут два числа складывают :-) Нет, я понимаю, что это игрушечный пример и что в реальном примере полезного (прикладного) кода в процентном отношении будет больше. Но.. Блин. Зачем так извращаться то (пачка прослоек, игрища с типами, замыкания/лямбды...)? Для императиного подхода есть сопрограммы/fiber'ы и это естественно. Для функциональных - есть лямбды с монадами, и это тоже естественно. А тут ни два ни полтора получается. Застряли по серединке.
-
Так C#-то в данном случае никуда не идет, стоит на месте.
Вся байда реализуется библиотекой.
Полезность/вредность Rx я не могу оценить, не написав хотя бы сотню строк кода.
-
А разве этот Rx не заменён либой Task Parallel Library из .NET 4?
-
Так C#-то в данном случае никуда не идет, стоит на месте.
Вся байда реализуется библиотекой.
Полезность/вредность Rx я не могу оценить, не написав хотя бы сотню строк кода.
Ну, во-первых тут таки используются некие странные языковые конструкции вроде "from added in obvervableAdd(x, y) select added;", хотя это наверняка в LINQ появилось.
Во-вторых, C# это не только язык, но и библиотеки и подходы продвигаемые создателем. Язык без стандартных библиотек и подходов не является инструментом годным для прикладного программирования.
-
А разве этот Rx не заменён либой Task Parallel Library из .NET 4?
А кстати, да. Не знаю как в .net 4, а в C# 5 действительно появилось новое ключевое слово async.
-
Просмотрел по диагонали Task Parallel Library - по моему, это не то. По моему это про parallelism, а не про concurrency. То есть Task Parallel Library это некий аналог OpenMP.
Впрочем, могу и ошибаться.
А то что меня интересует - это async/await из C# 5.
-
Ну, во-первых тут таки используются некие странные языковые конструкции вроде "from added in obvervableAdd(x, y) select added;", хотя это наверняка в LINQ появилось.
Ну да, это LINQ. Хорошая вещь, кстати. Я поначалу негативно отнесся, хотел писать циклы руками (благо, умею это делать). Потом распробовал. При использовании LINQ количество кода может сокращаться в десятки раз.
Вопрос-то в чем?
-
Ну да, это LINQ. Хорошая вещь, кстати. Я поначалу негативно отнесся, хотел писать циклы руками (благо, умею это делать). Потом распробовал. При использовании LINQ количество кода может сокращаться в десятки раз.
Да, я тоже пока не узнал, что такое есть (оно только с какой-то версии появилось) злобно ругался на убогий шарп, в котором циклы надо руками писать :)
Вопрос-то в чем?
Сколько ж можно всякой херни добавлять. Не пора ли новый язык замутить по опыту и с учетом. В частности, с более изящным выражением элементов ФП (ставших модными в современных мэйнстримовых ЯП).
-
Сколько ж можно всякой херни добавлять. Не пора ли новый язык замутить по опыту и с учетом. В частности, с более изящным выражением элементов ФП (ставших модными в современных мэйнстримовых ЯП).
:D :D :D так вот и пытаемся, по мере сил и способностей отпущенных богом (и приобретенных непосильным трудом) ПОДОЙТИ к решению этой задачи :)
-
Сколько ж можно всякой херни добавлять. Не пора ли новый язык замутить по опыту и с учетом. В частности, с более изящным выражением элементов ФП (ставших модными в современных мэйнстримовых ЯП).
:D :D :D так вот и пытаемся,
Это не попытки. То что втащили в промышленный язык, выкинуть уже нельзя. То есть оно там навсегда. Следовательно оно растет как снежный ком. И удачное и не удачное.
Мне политика развития java много больше нравится - язык развивается очень консервативно. А для экспериментов есть другие языки под jvm вроде той же скалы и всяких там груви.
-
Отчего же - по мере СИЛ и СПОСОБНОСТЕЙ мы ДЕЛАЕМ это (Алексей вы не уловили смысл написанного мной).... - важно понять для чего и что хотим получить в результате , пример ведь недалеко , вот Рифат СДЕЛАЛ модификацию Оберона 07 - и что, мы имеем - кучу желающих использовать его? Другой пример JAVAFX - задумывался именно как декларативный неболтливый ЯП со всеми по словам Vlad а новомодными функциональными штучками - где они теперь? сейчас это - официальный фреймворк для JAVA....