Динамические возможности в статических языках
От: x-code  
Дата: 14.11.11 10:06
Оценка:
Речь о языках типа С++, т.е. компилируемых в машинный код.
Под динамическими возможностями я понимаю в первую очередь динамическое(позднее) связывание (хотя может есть что-то еще?)
Из известного мне:
1. Виртуальные функции C++. В основе — некая таблица указателей на функции (vtbl), каждой функции класса ставится в соответствие некий идентификатор (номер), который используется для индексирования vtbl.
2. Сообщения Objective C. Отправка сообщения — это вызов функции objc_msgSend, которой передается уникальный идентификатор сообщения (вероятно, глобальный номер функции). Вызов осуществляется путем поиска по таблицам, похожим на vtbl, но, насколько я понимаю, там используется хеш-таблица или что-то в этом роде.
3. Сигналы и слоты в QT. Аналогично, при отправке сигнала вызывается функция activate_signal, аргументом которой является некий идентфикатор сигнала. Отличие в том, что в ObjC нет отдельной сущности "сигналы" (наверное, ближе всего к сигналам тип "селектор" — тот самый идентификатор функции).
4. Тип dynamic в C#. Принцип, насколько я понимаю, в общем тот-же — вызов метода превращается в вызов InvokeMember, в который передается имя метода в виде строки (я не настолько хорошо знаю C#, так что это я просто подсмотрел в какой-то статье).

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

И еще — какие динамические возможности есть еще? Какие возможности вы хотели видеть в вашем языке программирования?

В общем, предгалаю пофантазировать не тему
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.