在"语言X只有太多魔法"或"平台Y通常避免魔法"等语境中,"魔法"这个词在这里被抛出很多.然而,似乎这个术语的定义很差,人们在看到它时就会知道.例如,Java被认为包含很少的魔力,但它的垃圾收集器隐藏了很多程序员.如果魔术只是意味着隐藏细节的抽象,那么为什么它被认为是一件坏事,因为没有人再用汇编语言编写大型程序了?如果魔法意味着什么更多,那么它意味着什么?
"任何足够先进的技术都与魔术无法区分"--Arthur C. Clarke.
实际上并不是那么 - 魔术用于复杂和隐藏而不是高级(虽然可能是设计师认为它们是先进的),例如在程序调用之前需要特定状态的系统(COM线程模型)以及"自动"类型转换(VB变种,Javascript ==,Java autoboxing).
一旦系统隐藏了程序员的细节,它们就不再可以预测,它们就变得神奇了.你不得不用你不理解的语言重复调用,因为它在过去有正确的效果.这是不好的魔法,或伏都教.
还有很好的魔力 - http://aggregate.org/MAGIC/
当你忽略它/你不知道它是如何工作的时候,有些东西是神奇的.