根據 WiKi 百科︰
在計算機科學裡,『內省』 Type introspection 是指程式在執行中 Run time 檢查『物件』 Object 類型的一種能力。相對於『內省』,『反射』 Reflection 則更進一步,它在程式在執行中,還可以檢視和修改本身的『狀態』或『行為』。
在《CPU 機器語言的『解譯器』》一文裡,我們提到︰
事實上 Von Neumann 的計算機架構,對於電腦程式語言的發展,有著極為深遠的影響,產生了現在叫做 Von Neumann 程式語言,與Von Neumann 的計算機架構,同形 isomorphism 同構︰
program variables ↔ computer storage cells
程式變數 對映 計算機的儲存單元
control statements ↔ computer test-and-jump instructions
控制陳述 對映 計算機的『測試.跳至』指令
assignment statements ↔ fetching, storing instructions
賦值陳述 對映 計算機的取得、儲存指令
expressions ↔ memory reference and arithmetic instructions.
表達式 對映 記憶體參照和算術指令
由於機器語言內,並不區分『指令』與『資料』,而且一般多以『二進制』的數值表達,因此都是『反射』的。之後的一些高階語言,比方說 C ,區分了『指令』和『資料』,這個『反射』的能力就逐漸消失了。一九八二年 Brian Cantwell Smith ── 現是加拿大‧多倫多大學教授 ── 在博士論文中介紹了『程式語言』的計算『反射』的這種概念,此後常用在『元編程』 metaprogramming 、『自循環直譯器』 Meta-circular evaluator 以及『軟體測試』 software testing 中。
事實上, Python 語言高度支持『內省』與『反射』,在此僅列出幾個鏈結給有興趣的讀者︰
‧ inspect — Inspect live objects
‧ Python Programming/Reflection
雖然目前『 Ninja-IDE 』上沒見到『內省』或『反射』功能,據聞『 NINJA-IDE 3.0 』將包含一些新的特色,就讓我們拭目以待的吧!
也許『 Ninja-IDE 』的想法是︰打造自己的 IDE ,所以詳細說明了如何寫作插件《 Plugin Tutorial 》,這也是了解忍者 IDE 運作方式的文件。此處我們將介紹一個『 ninja-debugger-plugin 』,安裝方法十分簡單,在主選單裡選擇【 Addins 】‧【 Manage Plugins 】,然後點選『 ninja-debugger-plugin 』插件,按 Install 鍵即可。如何操作『除錯器』?就請讀者自行閱讀《 Starting to debug 》一文的了。
─── 自得者,家有敝帚,享之千金。 ───