Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Язык программирования Си#: критическая оценка 
:(
    Опции темы
Medved
Дата 22.12.2004, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 3
Всего: 154



регресс.
Цитата(Sardar @ 22.12.2004, 19:31)
По любому я рад что в Java нет этой возможности.

будет.... в следующе версии.... не в следующей, так в последующей. Или будет что-то типа такого.

ИБО это очень удобный и правильный механизм. Его не зря в C# добавили.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Domestic Cat
Дата 1.1.2005, 07:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 9
Всего: 172



Цитата(Pegas @ 22.12.2004, 07:56)
будет.... в следующе версии.... не в следующей, так в последующей. Или будет что-то типа такого.


Эту фичу пытались добавить в 1.5; дело в том что в Java сообществе любой человек может высказать свои пожелания к следующей версии, после чего решают добавлять или нет. В результате не добавили.

Лично я никакой крутизны в перегрузке операторов не вижу. Глубоко в нас сидит коечно восприятие "кульности" такой перегрузки; по крайней мере уменя оно сидит со времен 386 и Паскаля.

Так вот, каковы конкретно преимущества ?
1. Работать проще (заметьте, экономии места нет, скомпилируется все равно одинаково).

... и все.
Объясню: как часто оно надо? Скажем приложение клиент-сервер - куда совать эту перегрузку?
Или ХМЛ редактор? Ну ладно, пару мест можно найти, и то с натяжкой.
В основном это надо в приложениях, где идет работа с определенными юзером типами данных, причем специфическая - типа комплексных чисел.
Тогда да, удобнее писать
Код

c1 + c2 + c3 + c4

чем
Код

с1.add(c2.add(c3.add(c4)));


Недостатки:
1. Неясный код.
Предположим мы видим
Код

date++;


Вопрос - что сие означает? Да все что угодно. Ьожет, действительно идет приращение поля объекта. (какого тогда? - часы, минуты, секунды? года?) Нужно смотреть код и выяснять. Гораздо понятнее было бы
Код

date.addHours(1);

Набирать больше, но зато все понятно.

Тоже все, ИМХО.
Думаю, ни на Java, ни на С# никто мат библиотек писать не будет (из-за потери эффективности)
потому "против" для меня перевешивает аргументы "за".


--------------------

PM   Вверх
Sardar
Дата 1.1.2005, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: нет
Всего: 317



Согласен с Domestic Cat, перегрузка операторов сбивает с толку, по крайней мере меня.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Sun
Дата 4.1.2005, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: нет
Всего: 48



Еще один минус перегрузки операторов в C# - то что не все языки .Net ее поддерживают и в рекомендациях предлагается дублировать все перегруженные операторы обычными методами, что сводит удобность операторов на нет.


--------------------
Account removed
PM MAIL   Вверх
Kurt
Дата 4.1.2005, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


Профиль
Группа: Участник Клуба
Сообщений: 1662
Регистрация: 22.8.2003
Где: Краснодар

Репутация: 20
Всего: 36



Вот меня всегда удивляло, почему программеры ругают некоторые НЕОБЯЗАТЕЛЬНЫЕ К ПРИМЕНЕНИЮ средства языка. Ну, блин, если нравится использовать переруженные операторы - используй, нет - не используй. Это личное дело каждого, зачем же ругать создателя?


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
arilou
Дата 4.1.2005, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 21
Всего: 61



Цитата(Kurt @ 4.1.2005, 14:56)
Ну, блин, если нравится использовать переруженные операторы - используй, нет - не используй. Это личное дело каждого, зачем же ругать создателя?

Тут еще надо учитывать договоренность в команде


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
[Last]Wizard
Дата 4.1.2005, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 20.7.2004
Где: Минск, Беларусь

Репутация: 4
Всего: 10



Цитата(Kurt @ 4.1.2005, 14:56)
Это личное дело каждого, зачем же ругать создателя?

Kurt, одно дело, когда пишешь код только сам для себя, и никто этого кода никогда не увидит, кроме тебя. Тут можно писать как хочешь. Совершенно другое дело, когда код пишется для кого-то, или в команде, или еще хуже тебе самому приходиться разбираться в чьем-то коде. Тогда хочется ругать не только человека, который это написал, а и создателей языка и всех остальных.
Это касается не только перегрузки операторов.

PM ICQ   Вверх
Sun
Дата 4.1.2005, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: нет
Всего: 48



Очень был удивлен наличием указателей в C#. Правда их использование там достаточно усложненно и не совсем понятно чем было продиктовано их введение.


--------------------
Account removed
PM MAIL   Вверх
Coresh DRAW!
Дата 2.2.2005, 14:27 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











а) Насчет свойств. Свойства - вещь рульная и, несомненно, полезная. Я согласен с автором, что они иногда вводят программиста в заблуждение, однако я не согласен с тем, что он обвиняет в этом именно их. Виноваты не свойства, а соглашение о наименованиях в стиле Pascal. Именно благодаря ему нельзя разобраться, где у тебя метод, где поле, где свойство а где константа. Если бы ребята из мелкософт выбрали бы более удобное соглашение о наименованиях, например, как в Java, и/или договорились бы ставить перед свойствами знак подчеркивания, этого можно было бы избежать.
б) Насчет индексаторов. Опять таки вещь нужная. Вот только когда я столкнулся с кодом mess["first"] = "The first", я подумал о том, что лучше было бы пользоваться методом put("first", "The first") а индексаторы оставить для того, чтобы можно было обращаться с объектами, как с массивами, т.е. только через целочисленный индекс. На худой конец, можно было сделать дополнительный индексатор для объектов, но с круглыми скобками. Выражение mess("first") = "The first" меня лично не сбивает с толку. Хотя это на любителя. В конце-концов, привыкнуть не проблема.

Вот о чем автор не говорил, а стоило бы, так это об избыточности некоторых служебных слов. Например слово struct вещь явно лишняя, т.к. среда исполнения и сама может догадаться, что если в классе используются только данные примитивных типов, то его объекты лучше размещать в стеке. Так же явно избыточной является возможность перегрузки операции приведения типов. Гораздо логичнее, читабельнее и проще пользоваться методами toXXX(). Ведь никто не станет пользоваться выражением string s = (string) obj вместо string s = obj.toString().

А по большому счету, все эти дискуссии - только потеря времени. Не нравится - придумывай свой язык. Все равно трепотня ничего не изменит.
  Вверх
chipset
Дата 2.2.2005, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 1
Всего: 165



Цитата(Sun @ 4.1.2005, 08:37)
Очень был удивлен наличием указателей в C#. Правда их использование там достаточно усложненно и не совсем понятно чем было продиктовано их введение.

Совместимостью с С++ программистами? smile


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
ivashkanet
Дата 10.1.2007, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Во чё раскопал  smile 

А что сейчас мы об этом думаем?

ИМХО, все выше перечисленное (свойства, индексаторы, перегрузка) очень полезные вещи.
Но все нужно использовать с умом. 
А при небольшом желании можно многое извратить smile 



Цитата(Medved @  21.12.2004,  11:13 Найти цитируемый пост)
public int this[int i]
{
get{ return i*i; } // i-е значение равно i*i
set {} // Никаких действий
}

Руки оторвать такому програмисту надо.
А чтобы изменилось, если бы мы написали:
Код

public int GetElementByNumber(int i)
{ return i*i;};

Это типа нормально?
Смысл ведь тот же  smile 

Перегрузка:
Перегрузка должна подчинятся одним и тем же законам (исходя из назначения метода) и соответствовать названию метода.
Пользоваться ей так же нужно с умом smile
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 10.1.2007, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(chipset @  2.2.2005,  15:12 Найти цитируемый пост)
Совместимостью с С++ программистами?

Операции над памятью с пом. указателей быстрее по сравнению с работой над массивами, т.к. нет оверхеда на проверку выхода за пределы. Так что если хочется выжать из шарпа полную производительность при обработке простых массивов данных - пользуемся unsafe, stackalloc и указателями  smile 


--------------------
user posted image
PM MAIL WWW   Вверх
ivashkanet
Дата 10.1.2007, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



mr.DUDA, осторожно, теме 2  smile года  smile 
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 10.1.2007, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Не заметил.  smile 

ivashkanet, гробокопатель !


--------------------
user posted image
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0658 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.