マクロは低級な言語でより生きる。


高級言語なら多態性クロージャ、遅延評価等によって表現力を豊かに出来ます。
マクロでも表現力を豊かにすることは可能です。
しかし処理を追いかけにくいので高級言語では好まれません。


一方、低級言語ではスピードが求められます。

多態性を使うようなテクニックは実行時に動くなんらかの仕組みが必要です。
動的な仕組みは一般に速度を落とします。
コンパイル時に動作するマクロは静的に問題を解決するので実行時の仕組みはいりません。
だから、マクロは低級な言語でより有用であると言えます。
プログラムは分かりにくいけど実行時は高速。それがマクロなのです。
分かりにくいので頻繁に使うことは推奨されません。
しかし、ライブラリ的なものでより抽象度を上げるのに使うならマクロはとってもいいものなのです。