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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Преимущество управляемого кода перед неуправляемым 
:(
    Опции темы
snav
Дата 7.5.2011, 08:43 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(DenWPF @ 22.4.2011,  19:22)
ну да...

меня интересует личный опыт участников. так как теория не всегда совпадает с практикой.

Имхо, никаких фундаментальных преимуществ управляемый код не дает. Просто Microsoft из конъюнктурных соображений прекратило развивать неуправляемые средства, и программистам пришлось переходить на .NET. Старые средства уже давно не позволяют разрабатывать приложения современного уровня, а новые средства - управляемые.

Утверждения насчет безопасности .NET очень спорное. С одной стороны, сборка мусора достаточно удобна. С другой стороны, из-за крайне непродуманной и неудачной архитектуры самой .NET и языка C# сборка мусора не защищает от утечки памяти, а сами программы на C# чреваты бОльшим количеством ошибок, чем аналогичные программы на неуправляемом C++.

Это сообщение отредактировал(а) snav - 7.5.2011, 08:49
PM   Вверх
-Mikle-
Дата 7.5.2011, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

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



Цитата(snav @  7.5.2011,  11:43 Найти цитируемый пост)
Утверждения насчет безопасности .NET очень спорное

Ну тут не только безопасность на уровне памяти, но и безопасность в смысле "секьюрити".

Цитата(snav @  7.5.2011,  11:43 Найти цитируемый пост)
сборка мусора не защищает от утечки памяти

Все верно, это не панацея. Правильное проектирование и прямые руки программистов никто не отменял. Да и чаще всего утечка памяти происходит при неверном событийном управлении. Введут завтра новый тип WeekDelegate и новую конструкцию языка weekdelegate void Handler() и эти вопросы будут решены. Только пользоваться лично я им буду в крайне редких случаях, так как предпочитаю чистить за собой.

Цитата(snav @  7.5.2011,  11:43 Найти цитируемый пост)
а сами программы на C# чреваты бОльшим количеством ошибок, чем аналогичные программы на неуправляемом C++.

Интересное утверждение, готов поспорить.


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
snav
Дата 7.5.2011, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



-Mikle-
Проблема в том, что большинство учебников по C# говорит о сборке мусора именно как о панацее, создавая у новичков ложное представление, будто сборка мусора автоматически решает все проблемы управления памятью. На самом деле, правильное управление памятью в .NET - это нетривиальная задача, требующая от программиста внимательности, глубокого понимания механизмов работы .NET и достаточно большого опыта. Для новичков это почти нереально (имхо). Многие просто не подозревают о подводных камнях.

Насчет вероятности ошибок в языках C++ и С#, я написал свое личное мнение, основанное на моем опыте. Хотя, по заверениям Microsoft, язык С# разрабатывался с упором на снижение вероятности ошибок, на мой взгляд, конструкции C# содержат большее количество потенциальных ловушек, чем C++. Например:
1. Модель освобождения ресурсов IDispose - один из самых кривых и неудачных элементов .NET, чреватый серьезными ошибками и проблемами (испытал на себе).
2. Риск утечки памяти при сохранении скрытых (незамеченных) ссылок на объекты.
3. Очень путанная схема работы операторов и методов сравнения объектов, с трудно предсказуемыми результатами.
4. Отсутствие единообразия в использование ключевых слов. Например, по непонятным причинам члены интерфейса запрещено объявлять как public и требуется описывать их подобно приватным членам.
5. Отсутствие константных методов и невозможность передачи методу константных объектов.
6. Различие между структурными и ссылочными типами - при одинаковом синтаксисе они ведут себя по-разному, что является потенциальным источником путаницы.
Список можно продолжить.

Это всё потенциальные ловушки языка C#, которые невозможно устранить с помощью "правильного" стиля программирования. Поэтому утверждения, что C# якобы снижает риск программных ошибок, на мой взгляд, не соответствуют действительности и являются просто рекламным разводом.

P.S.
Справедливости ради, надо отметить, что перечисленные ловушки - это не проблемы управляемого кода вообще. Это просто неудачные решения разработчиков .NET.


Это сообщение отредактировал(а) snav - 8.5.2011, 08:47
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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