Re[2]: Как вынести описание метода вне класса (C#)?
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.06.10 15:20
Оценка:
Здравствуйте, TK, Вы писали:

V>>Возможно ли?


TK>В плюсах для этого есть объективные причины. В С# особого смысла в этом нет...


А можно немного ликбеза по объективным причинам? Причем меня всегда больше интересовал вопрос почему в С# нельзя сделать глобальную функцию.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Как вынести описание метода вне класса (C#)?
От: alexey.kostylev Новая Зеландия http://alexeykostylev.livejournal.com/
Дата: 09.06.10 09:06
Оценка:
Здравствуйте, VladD2, Вы писали:

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


V>>>Возможно ли?


TK>>В плюсах для этого есть объективные причины. В С# особого смысла в этом нет...


VD>А можно немного ликбеза по объективным причинам? Причем меня всегда больше интересовал вопрос почему в С# нельзя сделать глобальную функцию.


почему нельзя, можно...


public static class A
{
    public static int Func()
    {
       return 0;
    }
}


чем не глобальная функция
Re[3]: Как вынести описание метода вне класса (C#)?
От: _FRED_ Черногория
Дата: 09.06.10 09:11
Оценка:
Здравствуйте, VladD2, Вы писали:

V>>>Возможно ли?


TK>>В плюсах для этого есть объективные причины. В С# особого смысла в этом нет...


VD>А можно немного ликбеза по объективным причинам?


Сколько проходов?

VD>Причем меня всегда больше интересовал вопрос почему в С# нельзя сделать глобальную функцию.


Ну это немного из другой оперы. причём и про это Эрик, кажется, писал, но не могу сейчас отыскать.
Help will always be given at Hogwarts to those who ask for it.
Re[4]: Как вынести описание метода вне класса (C#)?
От: _FRED_ Черногория
Дата: 09.06.10 09:13
Оценка:
Здравствуйте, _FRED_, Вы писали:

VD>>Причем меня всегда больше интересовал вопрос почему в С# нельзя сделать глобальную функцию.


_FR>Ну это немного из другой оперы. причём и про это Эрик, кажется, писал, но не могу сейчас отыскать.


Why Doesn't C# Implement "Top Level" Methods?
Help will always be given at Hogwarts to those who ask for it.
Re[4]: Как вынести описание метода вне класса (C#)?
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.06.10 19:18
Оценка:
Здравствуйте, alexey.kostylev, Вы писали:

AK>
AK>public static class A
AK>{
AK>    public static int Func()
AK>    {
AK>       return 0;
AK>    }
AK>}
AK>


AK>чем не глобальная функция


Наличием класса в котором она объявлена. Скажем попробуй в C# расширить список перегрузок консольных WriteLine. Или просто вызвать их без указания класса в котором они объявлены.

Ведь по идее класс тут выполняет роль пространства имен (иначе говоря "модуля"), но в отличии от пространств имен и модулей класс мы не можем открыть using-ом (в C#).

Так что лично я никаких объективных причин не вижу. Сделали так как получилось.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Как вынести описание метода вне класса (C#)?
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.06.10 19:39
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Ну это немного из другой оперы. причём и про это Эрик, кажется, писал, но не могу сейчас отыскать.


Поверь человеку самому писавшему компиляторы, что никаких объективных причин тут нет. Это выбор дизайнеров языка. Сделать глобальные функции можно даже не смотря на то, что в дотнете такой возможности нет.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Как вынести описание метода вне класса (C#)?
От: _FRED_ Черногория
Дата: 09.06.10 20:25
Оценка:
Здравствуйте, VladD2, Вы писали:

_FR>>Ну это немного из другой оперы. причём и про это Эрик, кажется, писал, но не могу сейчас отыскать.


VD>Поверь человеку самому писавшему компиляторы, что никаких объективных причин тут нет. Это выбор дизайнеров языка. Сделать глобальные функции можно даже не смотря на то, что в дотнете такой возможности нет.


Ты Why Doesn't C# Implement "Top Level" Methods? ещё не прочитал, да?
Help will always be given at Hogwarts to those who ask for it.
Re[6]: Как вынести описание метода вне класса (C#)?
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.06.10 20:44
Оценка: +1
Здравствуйте, _FRED_, Вы писали:

_FR>Ты Why Doesn't C# Implement "Top Level" Methods? ещё не прочитал, да?


Липерт много пишет. Зачастую защищает мундир или просто исходит из однобокого взгляда. Мне не нужно читать, что-то чтобы понять то, что я и так прекрасно понимаю.

Дизайнерский выбор — это субъективная вещь, по определению. Если дизайнер выбирает одно решение, то приводит "объективные" (как ему кажется) причины этому выбору. Если другую, то точно такие же "объективные" причины находятся и для другого решения.

Единственная объективная причина того почему в С++ оставили глобальные функции — это обратная совместимость с С. С другой стороны причин по которым не сделаны глобальные функции нет.

Собственно, вот реальный ответ товарища Липерта:

First off, I reject the premise that the feature is "bad" for C#. The feature might well be good for C#, just not good enough compared to its costs (and to the opportunity cost of doing that feature instead of a more valuable feature.) The feature might become good enough for C# if its costs are lowered, or if the compelling benefit to customers becomes higher.


C# таков каков он есть, потому что создают его самыми экстенсивными методам. Отсюда это "фича хороша для C#, но недостаточно хороша при сравнении с ее стоимостью" (feature might well be good for C#, just not good enough compared to its costs).

Когда пишешь все на С++ в суровом императивном стиле, то лучшая фича та, что легче всего реализуется в лоб при этом являясь полезной для потребителя.

В таких условиях дизай превращается в хождение на поводу у сложности разработки.

Ну, и конечно не нужно сбрасывать со счетов такие вещи как заблуждение авторов и давление господствующих идеологий. Все же идея "все должно быть объектно-ориентированным" столь же фанатичная и бестолковая как идеи "все должно быть функциональным" или "все должно быть черным".
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.