Java、C#和Prolog反射机制
我正在准备期末考试,遇到了这个问题: 了解Java、C#和Prolog的反射机制,所有这些 允许 一种程序,用于在运行时检查自己的符号表并对其进行推理。怎么 这些机制是否完备?(例如,程序是否可以检查 当前不在范围内吗?)反射有什么好处?它应该有什么用途 被认为是好的还是坏的编程实践 为什么要用符号表来回答这个问题?我是否可以编写与我在本问题中提到的类和对象相同的解决方案:Java、C#和Prolog反射机制,c#,java,reflection,prolog,C#,Java,Reflection,Prolog,我正在准备期末考试,遇到了这个问题: 了解Java、C#和Prolog的反射机制,所有这些 允许 一种程序,用于在运行时检查自己的符号表并对其进行推理。怎么 这些机制是否完备?(例如,程序是否可以检查 当前不在范围内吗?)反射有什么好处?它应该有什么用途 被认为是好的还是坏的编程实践 为什么要用符号表来回答这个问题?我是否可以编写与我在本问题中提到的类和对象相同的解决方案: 我建议您阅读以下几页,了解相应语言的反映: -搜索“反射” 读了这些之后,你会发现这些方法的相似之处。 老实说,我
我建议您阅读以下几页,了解相应语言的反映:
- -搜索“反射”
将符号表看作平台/运行时的“实现细节”。根据上面的问题,我认为他们并不希望您确切知道这是如何实现的。我认为反射是进行元编程的基本工具 事实证明,这是一种解决(某种)问题的声明式方法。 有时,编写一些可以描述问题空间的内容,而不是构建解决方案,可能会很有用。也就是说,看看你的问题是否可以用更实用的语言来重述 你看,我们把语言当作算法的组成部分,就像数据一样。然后我们可以在语言之间交换组件 实际上,有趣的Java/Prolog反射示例如下 不久前,我发现C#reflection很有用,而且性能很好。United to emit包允许生成编译代码 Prolog以无缝的方式使用反射:例如,DCG实际上是对已声明规则的“简单”重写 我已经开始了一个项目,我希望我能带我去Prolog控制Qt接口, 当然,Qt反射起着基础作用
编辑关于符号表的问题:符号是一个非常普遍的术语。此外,所有语言都有一个符号的概念,(可能)不同的聚合。这是语言的核心。然后,这个问题以非常笼统的方式完美地提出,只是为了检查你对这些基本语言概念的理解。也许可以问你的导师为什么这样表述?当涉及到作业和考试时,最重要的是给出预期的答案,而不仅仅是任何在外界看来是正确的答案。在这种情况下,有答案总比没有好,但你真的需要知道根据你的课程,批判员会对你有什么期望。-TL;DR读与读/写访问