为什么reflection被称为反思而不是内省?

什么是反思一词的起源? 这似乎更像是内省。 为什么不叫它呢?

内省 :向内看; 特别是自我检查的行为或过程。

思考 :

  1. 反映的行为或被反映的状态。
  2. 一个图像; 表示; 副本
  3. 把某些想法固定在某物上; 详细的思考
  4. 思考发生在考虑或冥想。

    有一个有趣的答案在法国维基百科reflection文章( 这里 )

    reflection可以分解成两部分:

    • 反思:一个程序可以检查自己。
    • 调解:一个程序可以修改它的状态/含义。

    所以反思是比反思更“强大”的财产。 这就是为什么你说types自省能够知道types在运行时(和改变他们是另一个行动:转换/铸造)。

    编辑:其实我刚刚意识到第一个答案正是这样说^^。 有时间拔掉自己的电源

    思考来源于“自我审视,自我修改,自我复制”的思想,反思自我的变革目的。 在编程中,您使用reflection来检查程序本身的结构,而不是仅仅检查它。 你得到的是你可以用来修改它的程序的表示,而不是它所在的数据。

    更多信息可以在wikipedia文章中find。 。

    还有另一种称为types自省的概念,指的是在运行时确定对象types的能力。

    编辑:我意识到你的问题的目的是为语言不可知的,但在Java中,reflection用于确定一个对象有什么成员,而反思允许您确定一个对象有哪些JavaBeans属性,这就是为什么内省类是在java.beans包。 但是我不确定这些术语在其他语言中的确切区别是什么,

    “反思”一词来自Brian Cantwell Smith的1982年博士论文,可在http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-272.pdf

    所谓的反思往往只是内省,即获取元数据。 史密斯对反思的要求包括元数据之间的因果关系 ,这通常是缺失的部分。 想象reflection的一种方式是获得实现,而不仅仅是实现计算的一些新实例,而是计算访问它自己的实现。 当然,Java的原始reflectionAPI是错误的,因为它在这个意义上是不reflection的。

    在.Net中,我认为reflection这个术语是非常合适的,因为它不是被检查的types本身,而是代码的performance,这只是一个描述。

    从定义3和4的angular度来看,反思可以是内省的。 也就是反思是对自我的反思。 我认为自省是分析自己的代码行为更好的词,因为这个词更具体,但我不认为反思是完全不合适的。