Здравствуйте, Аноним, Вы писали:
А>Как считает общественность, реально ли появление в будущем, когда в C# будут введены шаблоны и другие средства, мощных библиотек, аналогов boost?
ИМХО, вполне реально.. язык-то, как и сама .NET, очень молодой, если сравнить с C или C++...
Мда.... хотя и не так уж и удивительно...раз уже была Джава. Вот родись C# до Джавы — было бы круто. А так — всё-равно молодой...даже 5 лет — это не срок...
Здравствуйте, <Аноним>, Вы писали:
А>Как считает общественность, реально ли появление в будущем, когда в C# будут введены шаблоны и другие средства, мощных библиотек, аналогов boost?
Не не реально. Буст — это затычка проблем языка. В Шарпе и так все неплохо работает. Шаблоны конечно приведут к появлению более безопастных и производительных аналогов существующих классов не не более.
... << RSDN@Home 1.1 alpha 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, <Аноним>, Вы писали:
А>Как считает общественность, реально ли появление в будущем, когда в C# будут введены шаблоны и другие средства, мощных библиотек, аналогов boost?
Не не реально. Буст — это затычка проблем языка. В Шарпе и так все неплохо работает. Шаблоны конечно приведут к появлению более безопастных и производительных аналогов существующих классов не не более.
... << RSDN@Home 1.1 alpha 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Не не реально. Буст — это затычка проблем языка. В Шарпе и так все неплохо работает. Шаблоны конечно приведут к появлению более безопастных и производительных аналогов существующих классов не не более.
Да я бы так категорично не стал высказываться. Например сравни boost\signal и делегаты в C#.
... << RSDN@Home 1.0 beta 6a >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Да я бы так категорично не стал высказываться. Например сравни boost\signal и делегаты в C#.
Именно что сравнивал. Делегаты намного удобнее. Жаль что медленнее. Зато делегаты позволяют сразу делать асинхронные вызовы и прозрачно использоваться при междоменном взаимодействии. В общем-то это даже проблема не Буста. Это уже общая проблема С++. Все уши и хвосты из-за того, что этот язык не заточен на компонетную разработку.
А на счет катигоричности. Да конечно появление шаблонов откроет пути к совершенству. Вот только завявление о том, что "мощных библиотек, аналогов boost" намного более котегорично, так как по сравнению с Фрэймворкмом Буст мелка библиотечка.
... << RSDN@Home 1.1 alpha 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, VladD2, Вы писали:
VD>>Именно что сравнивал. Делегаты намного удобнее. Жаль что медленнее. WH>И мение функциональны.
Удивляюсь, как можно приводить абсолютно чудовищный код и утверждать, что это круто.
Лубой язык с функциями высшего порядка позволит все это сделать с десятой частью тех усилий.
Например:
| list |
list := #(10.0 20.0).
#(+ - / *) collect: [:op | list fold: [:a :b | a perform: op with: b]]
Здравствуйте, _vovin, Вы писали:
_>Удивляюсь, как можно приводить абсолютно чудовищный код и утверждать, что это круто.
Я это привел к тому что: Делегаты в .NET не позволяют цеплять функции с другими сигнатурами даже если существует не явное приведение, нельзя из делегата вернуть значение, тем болие нельзя скомбинировать возвращенные значения, если один из методов кинул исключение то остальные не выполнятся, и могое другое что в boost\signal можно сделать легко. _>Лубой язык с функциями высшего порядка позволит все это сделать с десятой частью тех усилий.
Мы вроде о C# и шаблонах говорим?
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
VD>Именно что сравнивал. Делегаты намного удобнее. Жаль что медленнее.
Жаль, что на CodeProject нету статьи Delegates Undocumented, в дополнение к Strings Undocumented и Arrays Undocumented. Я поколупался немного в исходниках Rotor и Mono — там есть интерестные детали. Забавные различия.
Делегаты Mono должны работать сильно медленнее Микрософтовских, например.
VD>А на счет катигоричности. Да конечно появление шаблонов откроет пути к совершенству.
А нет ли какой-нибудь толковой статьи на эту тему? Почему шаблоны так уж "откроют путь к совершенству"? Вроде вполне ограниченная технология на непредвзятый взгляд.
Здравствуйте, mihailik, Вы писали:
M>А нет ли какой-нибудь толковой статьи на эту тему? Почему шаблоны так уж "откроют путь к совершенству"? Вроде вполне ограниченная технология на непредвзятый взгляд.
Скорее не опытный ИМХО. Александреску читал? boost потрошил?
... << RSDN@Home 1.0 beta 6a >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, mihailik, Вы писали:
M>А нет ли какой-нибудь толковой статьи на эту тему? Почему шаблоны так уж "откроют путь к совершенству"? Вроде вполне ограниченная технология на непредвзятый взгляд.
Ненужны никакие статьи. Достаточно научиться писать шаблонизированный код и потом их (шаблонов) все время будет нехватать.
... << RSDN@Home 1.1 alpha 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
using System;
class SignalsTest
{
delegate double op(double i, double f);
static double Add(double i, double f){ return i + f; }
static double Sub(double i, double f){ return i - f; }
static double Div(double i, double f){ return i / f; }
static double Mul(double i, double f){ return i * f; }
static double[] CallAll(op[] opers, double i, double f)
{
double[] res = new double[opers.Length];
for(int k = 0; k < opers.Length; k++)
res[k] = opers[k](10, 20);
return res;
}
static void PrintDouble(double[] ary)
{
foreach(double val in ary)
Console.WriteLine(val);
}
static void Main(string[] args)
{
op[] opers = new op[4]
{
new op(Add),
new op(Sub),
new op(Div),
new op(Mul)
};
PrintDouble(CallAll(opers, 10, 20));
Console.ReadLine();
}
}
Причем это решение еще и боле типбезопасно.
PS
Делегаты делают то ради чего они и были созданы. Делают они это элегантно, но не шустро. Чтобы опнять вес кайф дотнета достаточно попытаться запустить этот пример через сетку (когда вызываемые методы находятся в другом процессе). Или в другом процессе.
... << RSDN@Home 1.1 alpha 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.