黒魔術について

Twitterから引用

黒魔術を使ってDSLを作り易くしている言語の作者たちって、ファイル冒頭でuse BlackMagic;しないと黒魔術使えないようにするとかuse BlackMagic::MetaClassHack;とか書かせてどんな魔術が使われているか明示的にするとか考えないのかなぁ
nishio/nishio hirokazu 2010-09-25 15:53:05

PythonのPEP 20には「明示的なのは暗黙的なのより良い(Explicit is better than implicit)」と書かれており、「C++の設計と進化」P.284には「柔軟性や表現の自由を求める気持ちと、安全性、予見性、そして単純性を望む気持ちは衝突する」と書かれている。実際にOption Explicitやuse strictなどの「柔らかくしすぎた言語を固くするオプション」が導入された事例もある。

もう柔軟性を重視する言語設計は避けたほうがいいんじゃないの?



話者に理解できるものが「言語の機能をうまく使ったクールなハック」であって、できないものが「黒魔術」なのでは。太古の強力な魔術に「LISPのマクロ」があるが、普及しているとは言いがたい。強力な魔術であればあるほど、理解する人は少なくなり、黒魔術として忌み嫌われる。