我正在準備我的決賽碰到這個問題就來了:的Java,C#和Prolog的反射機制
瞭解的Java,C#和序言的反射機制,所有的 允許 程序檢查以及在運行時自己的符號表的原因。 如何完成這些機制? (例如,程序是否可以檢查 目前不在範圍內的符號?)反射有什麼好處?什麼用途應該是 被認爲是好的或壞的編程習慣?
爲什麼按照符號表問這個問題?我可以寫,我寫的類方面等物體在這太問題提到了相同的解決方案:
What is reflection and why is it useful?
我正在準備我的決賽碰到這個問題就來了:的Java,C#和Prolog的反射機制
瞭解的Java,C#和序言的反射機制,所有的 允許 程序檢查以及在運行時自己的符號表的原因。 如何完成這些機制? (例如,程序是否可以檢查 目前不在範圍內的符號?)反射有什麼好處?什麼用途應該是 被認爲是好的或壞的編程習慣?
爲什麼按照符號表問這個問題?我可以寫,我寫的類方面等物體在這太問題提到了相同的解決方案:
What is reflection and why is it useful?
我想到反思就是基本的工具做元編程。
事實證明,這是一種解決(一種)問題的聲明方式。 有時,而不是構建a解決方案,可以寫一些東西來描述問題空間。也就是說,看看你的問題是否可以用更實用的語言來重述。
你看,我們把語言當作算法的組成部分,比如數據。然後我們可以在語言之間交換組件。
實際上,有趣的Java/Prolog的反射的一個例子是JPL
前一段時間,我發現有用 - 和高性能 - C#反射。聯合發射包允許產生編譯代碼。
Prolog以無縫方式使用反射:例如DCG實際上是對已聲明規則的「簡單」重寫。
我已經開始了一個項目,希望我能帶我到Prolog控制Qt接口,當然Qt反射起着基礎作用。
編輯關於你在符號表上的問題:符號是一個非常的一般術語。也所有語言有符號的概念,(也許)不同地彙總。這是核心的語言。那麼這個問題完全是以非常籠統的方式提出來的,只是爲了檢查你對這些基本語言概念的理解。
的「符號表」僅僅是被需要「反思」,以做它的內部概念的想法:程序的能力在運行時檢查自己,並動態地做一些事情。 (注意關於內省與反思之間的差異)。所以如果你明白反射是好的,它是如何在你的目標平臺(Java,C#等)中實現的,以及可能有什麼限制,你應該能夠回答所有我想的問題。
認爲符號表只是平臺/運行時的「實現細節」。根據上面的問題,我不認爲他們希望你確切知道這是如何實現的。
[內省與反射](http://stackoverflow.com/questions/351577/why-is-reflection-called-reflection-instead-of-introspection) - TL; DR讀取與讀取/寫入訪問 – zapl
也許問你的導師爲什麼這是措辭? –
談到作業和考試時,最重要的是拿出**期望的答案,而不僅僅是在外界看來是正確的答案。在這種情況下,有一個答案比沒有答案好,但你真的需要知道標記根據你的課程對你的期望。 –