なぜ、凶悪なマクロプログラムに挑戦するのか

昨日のGCC拡張を用いたマクロプログラムもそうですが、私はこうやってときどき凶悪なマクロプログラムに挑戦しています。無い知恵を絞りながら、コンパイラの限界に挑むようなマクロをいろいろと考えています。さらには、コンパイラの限界を突破するために、PHPに前処理をさせるPCPのようなものまで持ち出しています。

一見すると、これは単なる興味本位で行っているようにしか見えないかもしれません。しかし、このような挑戦をときどき行っていると、実務で実現できるかどうか判断が難しいような状況でも、すぐにできることと、そうでないことの見分けが付くようになります。

こんな言語機能ばかり突き詰めても、実際のアプリケーション開発には役に立たないと揶揄する人もいることでしょう。しかし、私の仕事はアプリケーション開発だけではありませんし、実際にこうした知見がものをいう機会も少なくないのです。

私は、コンパイラの機能から見て、実現の可否を見分ける上で、その難度に応じていくつかのランク付けを行っています。すなわち、

  1. まったく実現できない。
  2. PCPのような前処理を行うことで実現可能
  3. 移植性やパフォーマンスなど、いくつかの代償を払うことで実現可能
  4. 実現可能だが、多大な工数がかかる。あるいは高いスキルが要求される。
  5. とくに問題なく実現可能

というようにです。ここで挙げた2.〜3.は、場合によって複数のランクにまたがる可能性があります。ときどき挑戦的なプログラミングを行っていると、このランク付けがスムーズにできるようになります。

もちろん、そうした実益面だけではなく、純粋に娯楽の要素もあります。ですので、時間があるときや、時間がなくても気分転換したいときには、なるべく積極的にこの手のプログラミングに手を染めます。というわけで、今後もいろいろと凶悪なマクロを紹介していければと考えています。

そういえば、これまではそこそこ「できる」と判断したものだけを紹介してきました。しかし、これからは、いろいろ検討したけれど、「できない」という結論に達したものや、できるけれども完成度が著しく低いものも、可能な範囲で紹介していきたいと思います。でき上がった結果も大事ですが、この手のものは、その検討過程にこそ価値がありますので。

この記事のトラックバックURL:

http://www.kijineko.co.jp/trackback/842