Re: Какой полиморфизм используется в ФЯ?
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.10.04 21:01
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Вот возник вопрос:

К>в ФЯ есть полиморфизм типов, что имхо есть очень близко к шаблонам C++. Наряду с шаблонами C++ есть generics Java и C#, но там используются несколько иные механизмы. Так вот — какой из подходов будет ближе к тому, как это работает в ФЯ?
К>Заранее сенкс за любую инфу!

В смысле статический или динамический?

Думаю, оба варианта. Тот же патер-матчинг — это по сути динамический полиморфизм. Ведь вариант функции для пустого списка может быть подобран только в рантайме. С другой стороны работать с известными типами можно и статически (если они известны во время компиляции).

И вообще, если подумать по лучше, то вопрос необходиомсти "динамичности" в полиморфизме — это вопрос достаточноности информации. Если инфомрации достаточно еще при компиляции, то можно спокойно принять решение и жетсно закодировать алгоритм.

Если же информация доступна при компиляции не вся, и полный ее объем становится доступен программе только на этапе выполнения, то без динамических проверок не обойтись, а стало быть статического полиморфизма недостаточно.

Кстати, забавно, что очень часто динамический полиморфизм применяется исключительно для увучшения модульности приложения. Так КОМ не мыслим без виртуальных вызовов. А тот же АТЛ использу применяет забавные методы эмуляции полиморфизма на базе шаблонов.

И еще забавно, что среды вроде дотнета (обладающие средствами JIT-компиляции) потенциально способны превращать динамический полиморфизм в статический. Ведь на самом деле ложки (тфу-ты, компонентов) на самом деле не существует. Реальное приложение монолитно. Оно загружает все модули превращая их в один исполняемый файл. И в момент когда становятся извесны все входящие в приложение модули (это может быть момент когда все они загружены в процесс или даже момент инсталляции приложения на машину клиента) теоритически нет препятствий для преобразования динамического полиморфизма в статический.

В общем, думаю что через несколько лет (возможно десятков) у разработчиков компиляторов/рантаймов и т.п. руки дойдут и до этого. Тогда вопрос статичности или динамичности полиморфизма станет таким же важным как сейчас вопросы автоматического инлайнинга методов, т.е. будут интересовать только разработчиков компиляторов.
... << RSDN@Home 1.1.4 beta 3 rev. 206>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.