Re[11]: Что хорошего в Net?
От: Sheridan Россия  
Дата: 16.03.09 19:12
Оценка:
kuj однажды (16 марта 2009 22:06) писал в rsdn.flame.comp:

> S>Я в .NET не силен.

> Заметно
А сам то?

--
Бортовой журнал
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[10]: Что хорошего в Net?
От: anton_t Россия  
Дата: 16.03.09 19:50
Оценка:
Здравствуйте, saproj, Вы писали:

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


C>>И так тоже можно:


S>
C>>  public Form1()
C>>  {
C>>    InitializeComponent();

C>>    button1.Click += delegate(object sender, EventArgs e)
C>>    {
C>>      // The following code is part of an anonymous method.
C>>      MessageBox.Show("You clicked the button, and " +
C>>        "This is an anonymous method!");
C>>    };
C>>  }
C>>

S>По-моему, это syntactic sugar.

  public Form1()
  {
    InitializeComponent();

    string str = GetMyString();
    button1.Click += delegate(object sender, EventArgs e)
    {
      // The following code is part of an anonymous method.
      MessageBox.Show("You clicked the button, and " +
        "This is an anonymous method! " + str);
    };
  }

А так? Предложишь лишний член класса ввести?

S>
C>>var query =
C>>    from c in listOfCustomers
C>>    where c.City == "Sarasota"
C>>    select new {c.Name,c.City};
C>>

S>Я в .NET не силен. Это встроенная поддержка SQL? Ну, поздравляю. Цель разработчиков была, чтобы народ побился в экстазе, или есть в этом больший смысл?

Это называется декларативное программирование. Перепиши теперь этот код с помощью циклов и сравни.

S>Я недавно написал первую программу на C++/CLI. Простенькая такая, ходит по файлам и каталогам. Вот кусок:

S>
array<DirectoryInfo^>^dirs=d->GetDirectories();
S>Collections::IEnumerator^en=dirs->GetEnumerator();
S>...
S>DirectoryInfo^di=safe_cast<DirectoryInfo^>(en->Current);

S>Необходимость кастить (safe_cast) — это, по-моему, каменный век.

Не нравится кастить — не касть:

    array<DirectoryInfo^>^ dirsArray = d->GetDirectories();
    IEnumerable<DirectoryInfo^>^ dirs = dirsArray;
    IEnumerator<DirectoryInfo^>^ en = dirs->GetEnumerator();
        ...
    DirectoryInfo^di = en->Current;
Re[11]: Что хорошего в Net?
От: kuj  
Дата: 16.03.09 20:55
Оценка:
Здравствуйте, anton_t, Вы писали:


_>Это называется декларативное программирование. Перепиши теперь этот код с помощью циклов и сравни.


Речь даже не столько в декларативном программировании, сколько в статической типизации без необходимости городить флюент интерфейс.
Re[11]: Что хорошего в Net?
От: saproj  
Дата: 17.03.09 07:22
Оценка:
Здравствуйте, anton_t, Вы писали:

C>>>И так тоже можно:


C>>>  public Form1()
C>>>  {
C>>>    InitializeComponent();

C>>>    button1.Click += delegate(object sender, EventArgs e)
C>>>    {
C>>>      // The following code is part of an anonymous method.
C>>>      MessageBox.Show("You clicked the button, and " +
C>>>        "This is an anonymous method!");
C>>>    };
C>>>  }
C>>>

S>>По-моему, это syntactic sugar.

_>  public Form1()
_>  {
_>    InitializeComponent();

_>    string str = GetMyString();
_>    button1.Click += delegate(object sender, EventArgs e)
_>    {
_>      // The following code is part of an anonymous method.
_>      MessageBox.Show("You clicked the button, and " +
_>        "This is an anonymous method! " + str);
_>    };
_>  }
_>

_>А так? Предложишь лишний член класса ввести?

Для строки? А мы о каком языке говорим?
В C++ можно вводить новые члены класса, а можно не вводить, используя local class.

C>>>var query =
C>>>    from c in listOfCustomers
C>>>    where c.City == "Sarasota"
C>>>    select new {c.Name,c.City};
C>>>

S>>Я в .NET не силен. Это встроенная поддержка SQL? Ну, поздравляю. Цель разработчиков была, чтобы народ побился в экстазе, или есть в этом больший смысл?

_>Это называется декларативное программирование. Перепиши теперь этот код с помощью циклов и сравни.


Это фича языка, существующая только для поддержки запросов SQL?

S>>Я недавно написал первую программу на C++/CLI. Простенькая такая, ходит по файлам и каталогам. Вот кусок:

S>>
array<DirectoryInfo^>^dirs=d->GetDirectories();
S>>Collections::IEnumerator^en=dirs->GetEnumerator();
S>>...
S>>DirectoryInfo^di=safe_cast<DirectoryInfo^>(en->Current);

S>>Необходимость кастить (safe_cast) — это, по-моему, каменный век.

_>Не нравится кастить — не касть:


_>    array<DirectoryInfo^>^ dirsArray = d->GetDirectories();
_>    IEnumerable<DirectoryInfo^>^ dirs = dirsArray;
_>    IEnumerator<DirectoryInfo^>^ en = dirs->GetEnumerator();
_>        ...
_>    DirectoryInfo^di = en->Current;
_>


Кусок кода с кастом я взял из примера в MSDN. Спасибо за подсказку. Плюс в сообщение о том, что заметно, лучше бы не ставили.
Re: Что хорошего в Net?
От: Lexxpin  
Дата: 17.03.09 08:20
Оценка:
MikelSV — SV (Svyashennye Voiny) — Священные Войны ?
Re[12]: Что хорошего в Net?
От: mrTwister Россия  
Дата: 17.03.09 08:29
Оценка:
Здравствуйте, saproj, Вы писали:

_>>Это называется декларативное программирование. Перепиши теперь этот код с помощью циклов и сравни.


S>Это фича языка, существующая только для поддержки запросов SQL?


К SQL эта фича (Linq) вообще не имеет никакого отношения. Это унифицированный язык запросов к произвольным источникам данных. В качестве источников данных может выступать все, что угодно, например: обычные объекты, XML, базы данных и т.д.
лэт ми спик фром май харт
Re[9]: Что хорошего в Net?
От: Bigger Российская Империя  
Дата: 17.03.09 09:47
Оценка: +1
Здравствуйте, Sheridan, Вы писали:

скипнул
S>Чтобы имел право судить — посиди под линуксом _хотябы_ год
S>--
S>...belive in the matrix...

Понимаю, что офтоп и тема старая, НО
Выделенное звучит как приговор

Программист — это шаман..., подарите бубен!
Re[10]: Что хорошего в Net?
От: kuj  
Дата: 17.03.09 09:49
Оценка:
Здравствуйте, Bigger, Вы писали:

B>скипнул

S>>Чтобы имел право судить — посиди под линуксом _хотябы_ год
S>>--
S>>...belive in the matrix...

B>Понимаю, что офтоп и тема старая, НО

B>Выделенное звучит как приговор

Чтоб стать похожим на шеридана — посиди под линухом хотя бы год.
Вот это точно звучит как приговор...
Re[11]: Что хорошего в Net?
От: Bigger Российская Империя  
Дата: 17.03.09 11:26
Оценка: +1
Здравствуйте, kuj, Вы писали:

skip

kuj>Чтоб стать похожим на шеридана — посиди под линухом хотя бы год.

kuj>Вот это точно звучит как приговор...

А на личности переходить

Программист — это шаман..., подарите бубен!
Re[12]: Что хорошего в Net?
От: anton_t Россия  
Дата: 17.03.09 11:41
Оценка:
Здравствуйте, saproj, Вы писали:

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


C>>>>И так тоже можно:


S>
C>>>>  public Form1()
C>>>>  {
C>>>>    InitializeComponent();

C>>>>    button1.Click += delegate(object sender, EventArgs e)
C>>>>    {
C>>>>      // The following code is part of an anonymous method.
C>>>>      MessageBox.Show("You clicked the button, and " +
C>>>>        "This is an anonymous method!");
C>>>>    };
C>>>>  }
C>>>>

S>>>По-моему, это syntactic sugar.

S>
_>>  public Form1()
_>>  {
_>>    InitializeComponent();

_>>    string str = GetMyString();
_>>    button1.Click += delegate(object sender, EventArgs e)
_>>    {
_>>      // The following code is part of an anonymous method.
_>>      MessageBox.Show("You clicked the button, and " +
_>>        "This is an anonymous method! " + str);
_>>    };
_>>  }
_>>

_>>А так? Предложишь лишний член класса ввести?

S>Для строки? А мы о каком языке говорим?

S>В C++ можно вводить новые члены класса, а можно не вводить, используя local class.

Что ты имеешь ввиду под "local class"? Я с++ знаю примерно как ты .net

S>
C>>>>var query =
C>>>>    from c in listOfCustomers
C>>>>    where c.City == "Sarasota"
C>>>>    select new {c.Name,c.City};
C>>>>

S>>>Я в .NET не силен. Это встроенная поддержка SQL? Ну, поздравляю. Цель разработчиков была, чтобы народ побился в экстазе, или есть в этом больший смысл?

_>>Это называется декларативное программирование. Перепиши теперь этот код с помощью циклов и сравни.


S>Это фича языка, существующая только для поддержки запросов SQL?


Нет. Можно делать выборку из любой коллекции, если конечно эта коллекция реализует интерфейс IEnumerable/IEnumerable<T>. Можно даже обойтись без sql-подобного синтаксиса, если не нравится.
Re[12]: Что хорошего в Net?
От: kuj  
Дата: 17.03.09 11:59
Оценка:
Здравствуйте, Bigger, Вы писали:

B>skip


kuj>>Чтоб стать похожим на шеридана — посиди под линухом хотя бы год.

kuj>>Вот это точно звучит как приговор...

B>А на личности переходить


Какие еще личности? Просто факты. ;>
Re[8]: Что хорошего в Net?
От: Anton Batenev Россия https://github.com/abbat
Дата: 17.03.09 13:25
Оценка:
Здравствуйте, infree, Вы писали:

i> кстати. можно же на Линуксе подработать http://www.mozilla-russia.org/contribute/bounty.html


Эх... когда же оперу-то откроють
avalon 1.0b rev 165
Re[13]: Что хорошего в Net?
От: saproj  
Дата: 17.03.09 15:55
Оценка:
Здравствуйте, anton_t, Вы писали:

C>>>>>И так тоже можно:


S>>
C>>>>>  public Form1()
C>>>>>  {
C>>>>>    InitializeComponent();

C>>>>>    button1.Click += delegate(object sender, EventArgs e)
C>>>>>    {
C>>>>>      // The following code is part of an anonymous method.
C>>>>>      MessageBox.Show("You clicked the button, and " +
C>>>>>        "This is an anonymous method!");
C>>>>>    };
C>>>>>  }
C>>>>>

S>>>>По-моему, это syntactic sugar.

S>>
_>>>  public Form1()
_>>>  {
_>>>    InitializeComponent();

_>>>    string str = GetMyString();
_>>>    button1.Click += delegate(object sender, EventArgs e)
_>>>    {
_>>>      // The following code is part of an anonymous method.
_>>>      MessageBox.Show("You clicked the button, and " +
_>>>        "This is an anonymous method! " + str);
_>>>    };
_>>>  }
_>>>

_>>>А так? Предложишь лишний член класса ввести?

S>>Для строки? А мы о каком языке говорим?

S>>В C++ можно вводить новые члены класса, а можно не вводить, используя local class.

_>Что ты имеешь ввиду под "local class"? Я с++ знаю примерно как ты .net


Это когда класс находится в функции. Не вдаваясь в подробности, в С++ обработчик button1.Click тоже можно "спрятать" внутри Form1(), хотя это потребует немного "больше букв" .
Возвращаясь к "syntactic sugar", я так и не понял, чем обсуждаемая фича так ценна.
Re[14]: Что хорошего в Net?
От: kuj  
Дата: 17.03.09 16:30
Оценка:
Здравствуйте, saproj, Вы писали:


S>Это когда класс находится в функции. Не вдаваясь в подробности, в С++ обработчик button1.Click тоже можно "спрятать" внутри Form1(), хотя это потребует немного "больше букв" .


"Класс внутри функции" это совсем не то. рфтм http://www.silverlighthack.com/post/2008/07/14/Evolution-of-delegate-syntax-from-NET-10-to-NET-35.aspx

S>Возвращаясь к "syntactic sugar", я так и не понял, чем обсуждаемая фича так ценна.


Все, что выше ассемблера — синтаксический сахар. Да и ассемблер по-сути тоже. ;> Так что вперед и с песней: 1010100010100101000100...
Re[15]: Что хорошего в Net?
От: saproj  
Дата: 17.03.09 17:53
Оценка: -1
Здравствуйте, kuj, Вы писали:

S>>Это когда класс находится в функции. Не вдаваясь в подробности, в С++ обработчик button1.Click тоже можно "спрятать" внутри Form1(), хотя это потребует немного "больше букв" .


kuj>"Класс внутри функции" это совсем не то. рфтм http://www.silverlighthack.com/post/2008/07/14/Evolution-of-delegate-syntax-from-NET-10-to-NET-35.aspx


Статья о развитии синтаксиса делегатов от 1.0 до 3.5 очень общая. Тем более, что речь идет не о делегатах вообще, а о приведенном в примере синтаксисе для анонимных функций. Если есть какое-то принципиальное отличие, напишите какое. Думаю, для этого должно хватить пары предложений.

S>>Возвращаясь к "syntactic sugar", я так и не понял, чем обсуждаемая фича так ценна.


kuj>Все, что выше ассемблера — синтаксический сахар. Да и ассемблер по-сути тоже. ;> Так что вперед и с песней: 1010100010100101000100...


Ваше понимание этого термина сильно отличается от общепринятого. Общепринятое изложено, например, в английской Википедии.
Re[16]: Что хорошего в Net?
От: kuj  
Дата: 17.03.09 18:08
Оценка: -2
Здравствуйте, saproj, Вы писали:

S>>>Это когда класс находится в функции. Не вдаваясь в подробности, в С++ обработчик button1.Click тоже можно "спрятать" внутри Form1(), хотя это потребует немного "больше букв" .


kuj>>"Класс внутри функции" это совсем не то. рфтм http://www.silverlighthack.com/post/2008/07/14/Evolution-of-delegate-syntax-from-NET-10-to-NET-35.aspx


S>Статья о развитии синтаксиса делегатов от 1.0 до 3.5 очень общая. Тем более, что речь идет не о делегатах вообще, а о приведенном в примере синтаксисе для анонимных функций. Если есть какое-то принципиальное отличие, напишите какое. Думаю, для этого должно хватить пары предложений.


Делегат это не функция. ртфм.

А еще угадай что будет, если сделать:

someObj.SomeCommand += () => Console.WriteLine("String 1");
someObj.SomeCommand += () => Console.WriteLine("String 2");

someObj.SomeCommand();

А еще перепиши данный код на C++:

Array.ForEach<string>(someArray, delegate(string input)
                                 {
                                    Console.WriteLine("{0}",input);

                                 });


и это:

customerRepository.FindAll(c => c.City == "Moscow");



Слабо?

S>>>Возвращаясь к "syntactic sugar", я так и не понял, чем обсуждаемая фича так ценна.


kuj>>Все, что выше ассемблера — синтаксический сахар. Да и ассемблер по-сути тоже. ;> Так что вперед и с песней: 1010100010100101000100...


S>Ваше понимание этого термина сильно отличается от общепринятого. Общепринятое изложено, например, в английской Википедии.


Ну ка ну ка, и чем же оно отличается? ;]
Re[17]: Что хорошего в Net?
От: Lloyd Россия  
Дата: 17.03.09 18:14
Оценка:
Здравствуйте, kuj, Вы писали:

kuj>А еще перепиши данный код на C++:


kuj>
kuj>Array.ForEach<string>(someArray, delegate(string input)
kuj>                                 {
kuj>                                    Console.WriteLine("{0}",input);

kuj>                                 });
kuj>


Это можно упростить до
Array.ForEach(data, Console.WriteLine);

Re[18]: Что хорошего в Net?
От: kuj  
Дата: 17.03.09 18:24
Оценка:
Здравствуйте, Lloyd, Вы писали:

kuj>>А еще перепиши данный код на C++:


kuj>>
kuj>>Array.ForEach<string>(someArray, delegate(string input)
kuj>>                                 {
kuj>>                                    Console.WriteLine("{0}",input);

kuj>>                                 });
kuj>>


L>Это можно упростить до

L>
L>Array.ForEach(data, Console.WriteLine);
L>

L>

Тьфу блин. Это просто пример. Вот, чтоб не было больше умных комментариев:

Array.ForEach(someArray, input =>
{
Console.WriteLine("Input: {0}", input);
Logger.Log(input);
});
Re[10]: все верно
От: Sheridan Россия  
Дата: 17.03.09 23:46
Оценка: :))
Bigger однажды (17 марта 2009 12:47) писал в rsdn.flame.comp:

> S>Чтобы имел право судить — посиди под линуксом _хотябы_ год

>
> Понимаю, что офтоп и тема старая, НО
> Выделенное звучит как приговор

Системы разные. Абсолютно. В линуксе в 99% не работают приемы работы с виндами. Чтобы это __понять__ (не выучить, а понять — почему и зачем) — нужно проработать под линухом какоето
время. Поизучать.

--
Бортовой журнал
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[12]: Что хорошего в Net?
От: Sheridan Россия  
Дата: 17.03.09 23:47
Оценка: +2
Bigger однажды (17 марта 2009 14:26) писал в rsdn.flame.comp:

> А на личности переходить

А, этому аленькому цветочку пофиг. Не обращай внимания. Пуссть им модераторы занимаются

--
Бортовой журнал
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.