Re[11]: Следующий язык программирования
От: Pavel Dvorkin Россия  
Дата: 27.09.05 05:58
Оценка:
Здравствуйте, AndrewVK, Вы писали:

<skipped>

PD>>Я уже не знаю, как еще объяснять. Никогда не думал, что это так сложно, хотя 20 лет преподаю. Еще раз — все я понял. Что не надо так делать — понял. Что парадигма здесь другая — понял, Что я все неправильно делаю — понял. Что я ничего не понимаю, по вашему мнению, тоже понял. Достаточно ?


AVK>Нет. Надо еще научится не делать одну и ту же ошибку в следующий раз.


Похоже, мои педагогические способности полностью исчерпались. Когда 10 раз объясняешь одно и то же, а в ответ видишь, что человек попросту не слышал твои объяснения — тяжелый случай. Не воспринимает и все!

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

Я вот недавно в очередной раз начал занятия по Win32 со студентами. Одно из первых понятий, которое там надо рассмотреть — дескрипторы. Сказал, все что на этот счет полагается, и разумеется, о том, что численное значение дескриптора для нас не важно и т.д.

А вот теперь представь себе, что приходит ко мне студент и спрашивает — а что такое дескриптор в действительности, что это число означает. (Кстати, в своем спецкурсе я этого вопроса касаюсь).

Вот мой ответ.

1. Работа с дескрипторами прозрачна для приложения, поэтому тебе это не надо знать
2. Если все же узнаешь — ты не должен это знание использовать, это некорректно.
3. То, что ты знаешь, может измениться в следующей версии Windows или даже SP, и твоя программа перестанет работать.

И т.д. Не кажется ли тебе, что эти аргументы вполне совпадают по духу с теми, которые ты пытаешься использовать ?

Только после всего этого я добавлю вот что

"Надеюсь, ты понял, что я тебе сказал и учтешь это в своей работе. А теперь я расскажу тебе, что такое дескриптор".

И дальше — недокументированная информация из Соломона-Руссиновича и Шрайбера или Фень Юаня соответственно.

Потому что бывают случаи, когда все эти 3 правила не играют никакой роли. И некорректно, и недокументировано, и непереносимо и бог знает что еще не. А жить надо, и программу сделать надо. И уж лучше ее сделать не слишком корректными способами, чем корректно ничего не сделать.

Тебе метод Руссиновича перехвата системных вызовов Win32 знаком ? (На всякий случай — это когда в ядре патчится таблица адресов системных вызовов). Метод абсолютно непереносимый, номера функций меняются от одного билда Windows к другому, приходится ссылаться на файлы символов — сам понимаешь, насколько это корректно и т.д. Но другого метода — по крайней мере я не знаю. А этот все же работает, хоть и проблем хватает. Дайте корректный способ — об этом все забудут. Так не дают...

Вот и мои вопросы вовсе не тем объясняются, что не понимаю я идеологию .Net. Прекрасно понимаю, и что то, чего я хочу, не вполне корректно — тоже понимаю. Пока меня не припрет по скорости или памяти — я и не подумаю правила нарушать. А вот если припрет — может, и придется. Потому что отказаться от C# я, вполне возможно, и не смогу, а программу делать надо.

И даже не это главное. Вопрос не столько в том, чтобы найти, где можно нарушить. Вопрос-то мой в совсем другом. Я же вижу, что попал в систему, в которой, мягко говоря, несколько иные принципы в плане эффективности исповедуются. Так вот, главное, что я понять хочу — где в ней основные неэффективнсти находятся !!! Когда я в С++ програмирую, я всегда знаю, что мне та или иная конструкция стоить будет. А здесь — пока не знаю. И вот я вижу конструкцию, которая мне подозрительной по эффективности кажется. И спрашиваю — нельзя ли здесь как-то иначе. Потому как если начну я просто писать — как бы потом не вышло, что программа будет работать с неприемлемой скоростью. Подводные камни я найти хочу и знать о них заранее...

А ты мне в ответ в 10-й раз — здесь указатели использовать нельзя и прямого доступа к памяти нет...
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.