Смешно. Прямой доступ к памяти нужен не только для обращения к ядру, но и в юзермоде, если идёт речь о юзермоде. А это неэффективно. Вместо
mov dword ptr[ecx+10h], 7h
надо делать
mov edx, ecx add edx, 10h push edx call _myFuckingCheckFunc@4 test eax, eax jne SHIT_HAPPENS mov dword ptr[edx], 7h
Это по эффективности.
А вторая проблема - это замена рантайм проверками компайл тайм проверок, которые достигаются строгой типизацией. Их можно обойти, если целенаправленно к этому стремиться, но на практике это происходит редко. А ведь кроме памяти существуют ещё и другие ресурсы, типа файловых дескрипторов, с которыми управляемым языкам приходится работать в старом добром C стиле. А ещё есть проблема момента освобождения ресурса/объекта, который часто быват нужно явно контролировать. В общем, GC просто замазыват проблему и провоцирует плохой дизайн.
Неэффективно - для кого? Для программиста? Так он второе и не пишет - за него компилятор все делает. Да и лукавите вы - откуда вы знаете, что у вас там в ECX и куда ведет ECX+10h? Ниоткуда? Или все-таки есть где-то код проверки? Нету? Ну, получите синий экран
Мне кажется, ваш разум отравлен страшным сиплюсплюсом и жабой. Ну какое отношение GC имеет к освобождению ресурсов? Только то, что вы привыкли делать это в деструкторе объектов.
> На джаве или сишарпе - вообще нет. У них и эффективность на уровне си.
Мои знакомые серверные программисты, несколько лет пытавшиеся построить на яве относительно высоконагруженый сервер, работающий хотя бы несколько дней без многоминутных фризов на сборку мусора, прочитав сие евангелие минимум час плакали бы обнявшись.
Ну в общем пути решения проблемы им известны, но клепать на коленке менеджер памяти поверх байтовых массивов они пока не созрели. Просто выбирают время суток потемнее и помолясь пинают сборщик мусора.
Теоретически мы имеем миллион долларов всё верно, а практически Микрософт не может найти программистов на дотнете, у которых бы paint или калькулятор не тормозили.
> Микрософт не может найти программистов на дотнете, у которых бы paint или калькулятор не тормозили.
Естественно. Ведь поиск программистов и ускорение работы приложения - это разные задачи. Если нужно решить задачу, пусть ищут решение задачи, а не программистов.
Comments 80
mov dword ptr[ecx+10h], 7h
надо делать
mov edx, ecx
add edx, 10h
push edx
call _myFuckingCheckFunc@4
test eax, eax
jne SHIT_HAPPENS
mov dword ptr[edx], 7h
Это по эффективности.
А вторая проблема - это замена рантайм проверками компайл тайм проверок, которые достигаются строгой типизацией. Их можно обойти, если целенаправленно к этому стремиться, но на практике это происходит редко.
А ведь кроме памяти существуют ещё и другие ресурсы, типа файловых дескрипторов, с которыми управляемым языкам приходится работать в старом добром C стиле. А ещё есть проблема момента освобождения ресурса/объекта, который часто быват нужно явно контролировать. В общем, GC просто замазыват проблему и провоцирует плохой дизайн.
Reply
Reply
Reply
Reply
Мои знакомые серверные программисты, несколько лет пытавшиеся построить на яве относительно высоконагруженый сервер, работающий хотя бы несколько дней без многоминутных фризов на сборку мусора, прочитав сие евангелие минимум час плакали бы обнявшись.
Reply
(The comment has been removed)
Reply
Reply
Reply
Reply
Reply
Reply
Естественно. Ведь поиск программистов и ускорение работы приложения - это разные задачи. Если нужно решить задачу, пусть ищут решение задачи, а не программистов.
Reply
Leave a comment