![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
snav |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 8.9.2007 Репутация: нет Всего: 4 |
Имхо, никаких фундаментальных преимуществ управляемый код не дает. Просто Microsoft из конъюнктурных соображений прекратило развивать неуправляемые средства, и программистам пришлось переходить на .NET. Старые средства уже давно не позволяют разрабатывать приложения современного уровня, а новые средства - управляемые. Утверждения насчет безопасности .NET очень спорное. С одной стороны, сборка мусора достаточно удобна. С другой стороны, из-за крайне непродуманной и неудачной архитектуры самой .NET и языка C# сборка мусора не защищает от утечки памяти, а сами программы на C# чреваты бОльшим количеством ошибок, чем аналогичные программы на неуправляемом C++. Это сообщение отредактировал(а) snav - 7.5.2011, 08:49 |
|||
|
||||
-Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 4 Всего: 59 |
Ну тут не только безопасность на уровне памяти, но и безопасность в смысле "секьюрити". Все верно, это не панацея. Правильное проектирование и прямые руки программистов никто не отменял. Да и чаще всего утечка памяти происходит при неверном событийном управлении. Введут завтра новый тип WeekDelegate и новую конструкцию языка weekdelegate void Handler() и эти вопросы будут решены. Только пользоваться лично я им буду в крайне редких случаях, так как предпочитаю чистить за собой.
Интересное утверждение, готов поспорить. -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
snav |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | .NET для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |