在诸如“语言 X 有太多魔法”或“平台 Y 通常避免魔法”之类的上下文中,“魔法”这个词经常出现。然而,这个术语的定义似乎很差,人们看到它就知道。例如,Java 被认为包含很少的魔法,但它的垃圾收集器对程序员隐藏了很多。如果魔术只是意味着隐藏细节的抽象,那么为什么它被认为是一件坏事,因为现在没有人用汇编语言编写大型程序了?如果魔法意味着更多,那么它意味着什么?

请您参考如下方法:

“任何足够先进的技术都与魔法无法区分”——亚瑟·C·克拉克。

实际上并非如此——魔法用于复杂和隐藏而不是高级(尽管设计者可能认为它们是高级的),例如在过程调用之前需要特定状态的系统(COM线程模型)以及“自动”类型转换(VB 变体、Javascript ==、Java 自动装箱)。

一旦系统向程序员隐藏了它们不再可预测的细节,它们就会变得神奇。你被困在你不理解的语言中重复调用,因为它在过去产生了正确的效果。那是不好的魔法,或者巫毒。

还有不错的魔法——http://aggregate.org/MAGIC/


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!