2013-12-16 3 views
2

я готовлю для моих финалов и наткнулся на этот вопрос:Java, C# и Пролог механизмы отражения

Узнайте о механизмах отражения Java, C# и Пролог, все , которые позволяют программу, чтобы проверить и причина его собственной таблицы символов во время выполнения. Насколько полны эти механизмы ? (Например, может ли программа проверять символы, которые в настоящее время не включены?) Что такое отражение? Какое использование должно быть считается хорошей или плохой практикой программирования?

Почему этот вопрос задан в терминах таблицы символов? Могу ли я написать такое же решение, что я пишу в терминах классов и объектов, как упомянуто в этом СЦ вопрос:

What is reflection and why is it useful?

+3

Возможно, попросите вашего репетитора, почему так выразился? –

+2

Когда дело доходит до назначения и экзаменов, самое главное, чтобы он придумал ** ожидаемый ** ответ, а не только любой ответ, который кажется правильным во внешнем мире. В этом случае ответ лучше, чем ни один, но вам действительно нужно знать, что маркер будет ожидать от вас на основе вашего курса. –

ответ

1

Я думаю о отражении как базовый инструмент для выполнения метапрограммирования.

Это оказывается декларативным способом решения (своего рода) проблем. Когда-то вместо построения a решение может быть полезно для написания чего-то, что позволяет описать проблемное пространство. То есть, посмотрите, можно ли переформулировать вашу проблему на более практичном языке.

Понимаете, мы рассматриваем языки как компоненты алгоритмов, такие как данные. Затем мы можем обменивать компоненты между языками.

Практически пример интересного отражения Java/Пролог JPL

Некоторое время назад я нашел полезным - и производительный - C# отражение. Объединенный пакет emit позволяет создавать скомпилированный код.

Пролог использует отражение в бесшовном режиме: например, DCG действительно являются «простыми» переписаниями объявленных правил.

Я начал проект, и я надеюсь, что возьму меня в Prolog, контролирующий интерфейс Qt, , конечно, отражение Qt играет фундаментальную роль.

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

1

Я предлагаю вам прочитать следующие страницы, чтобы получить представление об отражении в соответствующем язык:

После того, как вы прочитали те, которые вы собрали, см. Сходство методов. Честно говоря, я никогда не работал с размышлениями в Prolog, но документы должны помочь вам.

Таблица symobl используется механизмами отражения, чтобы смотреть на вещи вверх. См. here для описания таблиц символов.

Эти ресурсы должны дать вам представление о том, как ответить на ваши вопросы

1

символ «стол» является только внутренняя концепция, которая необходима для «отражения», чтобы делать то, что он делает: способность программы исследовать себя во время выполнения и делать что-то динамически с этим. (помните о различии между - интроспекцией и рефлексией).

Итак, если вы понимаете, какое отражение хорошо, как оно реализовано на вашей целевой платформе (Java, C# и т. Д.), И каковы могут быть ограничения, вы должны быть в состоянии ответить на все те вопросы, которые я предполагаю.

Подумайте о таблице символов как о «детали реализации» платформы/времени выполнения. Согласно вышеизложенному вопросу, я не думаю, что они ожидают, что вы точно знаете, как это реализовано.

+0

[интроспекция против отражения] (http://stackoverflow.com/questions/351577/why-is-reflection-called-reflection-instead-of-introspection) - TL; DR Read vs Read/Write access – zapl

Смежные вопросы