回复 明月回春 的帖子 g; ]; N$ Y: P+ r/ B2 t$ Y8 g - I9 n) n7 ^& \# ?8 X7 k嘿嘿,探讨一下哈。/ i3 F% S Z6 Q! X
1 Z C+ B3 D/ U2 } Y) v. f# T其实Java和C#的设计理念相当不同,早先的后者只是前者的微软抄袭版本,但是后来则完全不同了,微软加进去了很多很奇怪的特性,例如在语言级别提供数据访问能力,而该类功能传统上是由类库或者函数库来提供的。也就是说,微软的设计理念出了问题,它违反了语言的基本设施应该尽可能简练,而附加的功能通过类库或者函数库来提供这一原则。8 j4 t# g$ ~: K/ E4 i
, R; n2 P/ l" QJava和.Net的本质区别在于思想,前者是自由民主、自由竞争那套,它来自于unix世界,而后者则是唯一可用的官方资源,这里咱们不涉及政治而只论技术。其结果就是前者有大量的可替代选择,也就是第三方类库,而后者则基本没有。对于技术人来说,其实只要你掌握了思想,那些可替代资源的掌握以及选择都不困难;但是如果连选择都没有的话,有些事情就很难作了。# c; k" J9 V# T& N9 S
8 g- S8 x t+ G
至于开源,其实那只是个神话,它的主要用处是方便偷东西,对于客户化和修复错误用处并不大,因为适应曲线和regression test都是问题。
回复 老兵帅客 的帖子& ]7 w \( Z6 S# f' e/ M) q( @! a
/ I6 w& t; H# _4 W) t5 z9 |
在wikipedia上搜了一下reflection C++。 " I |# A9 B; R" S. U7 s+ G
Qt/C++ . `+ I! H. {- M* O/ v4 ]3 }8 r& ]: j; }& y& o
Qt framework extends C++ with its meta-language and provides reflection ability of member/method reference and query by name for Qt objects with QMetaObject class, which contains meta-information about the Qt objects.
Objective-C is a reflective, object-oriented programming language that adds Smalltalk-style messaging to the C programming language.