Форум
Компьютерные священные войны
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, netch80, Вы писали: N>Здравствуйте, alex_public, Вы писали: _>>Не следует путать final (кстати тоже есть в C++, как отдельная сущность) и не виртуальные функции. В отличие от последних final полностью блокирует одно из ключевых преимуществ ООП подхода - расширяемость и кастомизируемость через наследование. N>Я не путаю. Задача исключить переопределение в потомке им обеспечивается, а подобные философии тут не интересны. N>Тем более что одна из задач final - исключить как раз это "ключевое преимущество" в конкретном месте. _>> Так что если в своём коде ты вполне можешь позволить себе применять данную возможность, то у скажем авторов библиотек ситуация намного печальнее. N>Шарповцы в большом количестве стандартных классов размахивают своим sealed направо и налево. Расскажи им про эту печаль. _>>Более того, даже если ты при кастомизации какого-нибудь библиотечного класса в своё проекте проставишь ему везде final, то в очень многих ситуациях (а именно, если этот твой класс предназначен для использования библиотекой) это вообще никак не повлияет на ситуацию, т.к. код вызова твоего класса (расположенный внутри библиотеки) всё равно будет записан через его предка. N>А там, где не будет через предка - поможет, и сразу. _>>Кстати, то, что компилятор имеет такое право в подобном случае, - я согласен. А вот делает ли он это в реальности? Вот конкретный стандартный компилятор java последней версии. Кто-нибудь проверял данный факт? N>Я видел результаты у соседей по фирме, делает. Сам не щупал, поэтому не показываю. _>>Насколько я помню некоторые презентации Java по оптимизации, там были упоминанию о некоторых оптимизациях в данной области. Но речь там шла о скорее статистических методах (некий аналог escape анализа), которые срабатывают в редких случаях и после длительного наблюдения за исполнением кода. Думаю не надо объяснять, чем подобное отличается от гарантированного прямого вызова на уровне синтаксиса языка? ) N>В Java всё равно JIT включается не сразу. Поэтому разница не фатальна, и таки да, надо объяснять, чему равно это твоё "длительно". N>В C# не щупал, но если они не воспользуются этим при немедленном стартовом JIT, я удивлюсь. Хотя что-то навскидку помню - показывали выход IL, где он вызывал явно, а где через VMT. Так что тоже должно работать.
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …