Будущее C#
От: Аноним  
Дата: 24.06.03 09:38
Оценка:
Как считает общественность, реально ли появление в будущем, когда в C# будут введены шаблоны и другие средства, мощных библиотек, аналогов boost?

02.07.03 08:28: Перенесено модератором из '.NET' — TK
Re: Будущее C#
От: 4D man Россия  
Дата: 24.06.03 10:45
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как считает общественность, реально ли появление в будущем, когда в C# будут введены шаблоны и другие средства, мощных библиотек, аналогов boost?


ИМХО, вполне реально.. язык-то, как и сама .NET, очень молодой, если сравнить с C или C++...
Re[2]: Будущее C#
От: Shulapov Россия  
Дата: 24.06.03 11:40
Оценка:
Здравствуйте, 4D man, Вы писали:

--

ну не такой уж и молодой оказывается... для меня было почти шоком
Автор: Plutonia Experiment
Дата: 20.06.03
Одинаковые ошибки не обязательно делать каждый раз, достаточно сделать одну, а затем обращаться к ней по мере необходимости из любого места программы.
Re[3]: Будущее C#
От: 4D man Россия  
Дата: 24.06.03 14:11
Оценка:
Здравствуйте, Shulapov, Вы писали:

S>Здравствуйте, 4D man, Вы писали:


S>--


S>ну не такой уж и молодой оказывается... для меня было почти шоком
Автор: Plutonia Experiment
Дата: 20.06.03

Мда.... хотя и не так уж и удивительно...раз уже была Джава. Вот родись C# до Джавы — было бы круто. А так — всё-равно молодой...даже 5 лет — это не срок...
Re: Будущее C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.06.03 15:12
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Как считает общественность, реально ли появление в будущем, когда в C# будут введены шаблоны и другие средства, мощных библиотек, аналогов boost?


Не не реально. Буст — это затычка проблем языка. В Шарпе и так все неплохо работает. Шаблоны конечно приведут к появлению более безопастных и производительных аналогов существующих классов не не более.
... << RSDN@Home 1.1 alpha 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Будущее C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.06.03 15:13
Оценка: 1 (1) -2
Здравствуйте, <Аноним>, Вы писали:

А>Как считает общественность, реально ли появление в будущем, когда в C# будут введены шаблоны и другие средства, мощных библиотек, аналогов boost?


Не не реально. Буст — это затычка проблем языка. В Шарпе и так все неплохо работает. Шаблоны конечно приведут к появлению более безопастных и производительных аналогов существующих классов не не более.
... << RSDN@Home 1.1 alpha 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Будущее C#
От: WolfHound  
Дата: 24.06.03 19:34
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Не не реально. Буст — это затычка проблем языка. В Шарпе и так все неплохо работает. Шаблоны конечно приведут к появлению более безопастных и производительных аналогов существующих классов не не более.

Да я бы так категорично не стал высказываться. Например сравни boost\signal и делегаты в C#.
... << RSDN@Home 1.0 beta 6a >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[3]: Будущее C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.06.03 19:41
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Да я бы так категорично не стал высказываться. Например сравни boost\signal и делегаты в C#.


Именно что сравнивал. Делегаты намного удобнее. Жаль что медленнее. Зато делегаты позволяют сразу делать асинхронные вызовы и прозрачно использоваться при междоменном взаимодействии. В общем-то это даже проблема не Буста. Это уже общая проблема С++. Все уши и хвосты из-за того, что этот язык не заточен на компонетную разработку.

А на счет катигоричности. Да конечно появление шаблонов откроет пути к совершенству. Вот только завявление о том, что "мощных библиотек, аналогов boost" намного более котегорично, так как по сравнению с Фрэймворкмом Буст мелка библиотечка.
... << RSDN@Home 1.1 alpha 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Будущее C#
От: WolfHound  
Дата: 25.06.03 04:44
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Именно что сравнивал. Делегаты намного удобнее. Жаль что медленнее.

И мение функциональны.
template<typename T>
struct list_result
{
    typedef std::list<T> result_type;

    template<typename InputIterator>
    result_type operator()(InputIterator first, InputIterator last) const
    {
        result_type result;
        for(;first!=last;++first)
            result.push_back(*first);
        return result;
    }
};
float Add(int i, float f)
{
    return i+f;
}
float Sub(double i, float f)
{
    return i-f;
}
double Div(double i, float f)
{
    return i/f;
}
double Mul(double i, int f)
{
    return i*f;
}
int main()
{
    namespace lm=boost::lambda;
    boost::signal<float(float,float), list_result<float> > sig;
    sig.connect(&Add);
    sig.connect(&Sub);
    sig.connect(&Div);
    sig.connect(&Mul);

    std::list<float> test=sig(10, 20);
    for_each(test, std::cout<<lm::_1<<"\n");

    return 0;
}

Вывод
30
-10
0.5
200

А на делегатах такое можно?
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[5]: Будущее C#
От: Poudy Россия  
Дата: 25.06.03 05:07
Оценка:
WH>
WH>template<typename T>
WH>struct list_result
WH>{
WH>    typedef std::list<T> result_type;

WH>    template<typename InputIterator>
WH>    result_type operator()(InputIterator first, InputIterator last) const
WH>    {
WH>        result_type result;
WH>        for(;first!=last;++first)
WH>            result.push_back(*first);
WH>        return result;
WH>    }
WH>};
WH>float Add(int i, float f)
WH>{
WH>    return i+f;
WH>}
WH>float Sub(double i, float f)
WH>{
WH>    return i-f;
WH>}
WH>double Div(double i, float f)
WH>{
WH>    return i/f;
WH>}
WH>double Mul(double i, int f)
WH>{
WH>    return i*f;
WH>}
WH>int main()
WH>{
WH>    namespace lm=boost::lambda;
WH>    boost::signal<float(float,float), list_result<float> > sig;
WH>    sig.connect(&Add);
WH>    sig.connect(&Sub);
WH>    sig.connect(&Div);
WH>    sig.connect(&Mul);

WH>    std::list<float> test=sig(10, 20);
WH>    for_each(test, std::cout<<lm::_1<<"\n");

WH>    return 0;
WH>}
WH>

WH>Вывод
WH>
WH>30
WH>-10
WH>0.5
WH>200
WH>

WH>А на делегатах такое можно?

А на фиг такое нужно?
Re[5]: Будущее C#
От: _vovin http://www.pragmatic-architect.com
Дата: 25.06.03 07:54
Оценка: 2 (1)
Здравствуйте, WolfHound, Вы писали:

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


VD>>Именно что сравнивал. Делегаты намного удобнее. Жаль что медленнее.

WH>И мение функциональны.

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

| list |
list := #(10.0 20.0).
#(+ - / *) collect: [:op | list fold: [:a :b | a perform: op with: b]]


Выдаст

#(30.0 -10.0 0.5 200.0)


--

Владимир.
Re[6]: Будущее C#
От: m.a.g. Мальта http://dottedmag.net/
Дата: 25.06.03 08:09
Оценка:
Здравствуйте, _vovin, Вы писали:

_>
_>| list |
_>list := #(10.0 20.0).
_>#(+ - / *) collect: [:op | list fold: [:a :b | a perform: op with: b]]
_>


Smalltalk? А то что-то я давно его не видел...
... << RSDN@Home 1.1 alpha 1 >>
Re[6]: Будущее C#
От: WolfHound  
Дата: 25.06.03 12:20
Оценка:
Здравствуйте, _vovin, Вы писали:

_>Удивляюсь, как можно приводить абсолютно чудовищный код и утверждать, что это круто.

Я это привел к тому что: Делегаты в .NET не позволяют цеплять функции с другими сигнатурами даже если существует не явное приведение, нельзя из делегата вернуть значение, тем болие нельзя скомбинировать возвращенные значения, если один из методов кинул исключение то остальные не выполнятся, и могое другое что в boost\signal можно сделать легко.
_>Лубой язык с функциями высшего порядка позволит все это сделать с десятой частью тех усилий.
Мы вроде о C# и шаблонах говорим?
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[4]: Будущее C#
От: mihailik Украина  
Дата: 25.06.03 15:46
Оценка:
VD>Именно что сравнивал. Делегаты намного удобнее. Жаль что медленнее.

Жаль, что на CodeProject нету статьи Delegates Undocumented, в дополнение к Strings Undocumented и Arrays Undocumented. Я поколупался немного в исходниках Rotor и Mono — там есть интерестные детали. Забавные различия.

Делегаты Mono должны работать сильно медленнее Микрософтовских, например.

VD>А на счет катигоричности. Да конечно появление шаблонов откроет пути к совершенству.


А нет ли какой-нибудь толковой статьи на эту тему? Почему шаблоны так уж "откроют путь к совершенству"? Вроде вполне ограниченная технология на непредвзятый взгляд.
... << RSDN@Home 1.0 beta 7a >>
Re[5]: Будущее C#
От: WolfHound  
Дата: 25.06.03 19:00
Оценка:
Здравствуйте, mihailik, Вы писали:

M>А нет ли какой-нибудь толковой статьи на эту тему? Почему шаблоны так уж "откроют путь к совершенству"? Вроде вполне ограниченная технология на непредвзятый взгляд.

Скорее не опытный ИМХО. Александреску читал? boost потрошил?
... << RSDN@Home 1.0 beta 6a >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[5]: Будущее C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.06.03 22:19
Оценка:
Здравствуйте, mihailik, Вы писали:

M>А нет ли какой-нибудь толковой статьи на эту тему? Почему шаблоны так уж "откроют путь к совершенству"? Вроде вполне ограниченная технология на непредвзятый взгляд.


Ненужны никакие статьи. Достаточно научиться писать шаблонизированный код и потом их (шаблонов) все время будет нехватать.
... << RSDN@Home 1.1 alpha 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Будущее C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.06.03 22:19
Оценка: +1
Здравствуйте, WolfHound, Вы писали:

WH>Скорее не опытный ИМХО. Александреску читал? boost потрошил?


Он Дельфист... в прошлом.
... << RSDN@Home 1.1 alpha 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Будущее C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.06.03 22:19
Оценка:
WH>И мение функциональны...

Мусье любитель извращений? Их есть у меня.

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 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Будущее C#
От: ExtraLamer  
Дата: 25.06.03 22:36
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Скорее не опытный ИМХО. Александреску читал? boost потрошил?


А что такое "Александреску"? {jxe gjxbnfnm
Re[7]: Будущее C#
От: WolfHound  
Дата: 26.06.03 04:48
Оценка:
Здравствуйте, ExtraLamer, Вы писали:

EL>А что такое "Александреску"? {jxe gjxbnfnm

Сам такой
http://www.moderncppdesign.com/
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.