PHP
なぜ、凶悪なマクロプログラムに挑戦するのか
昨日のGCC拡張を用いたマクロプログラムもそうですが、私はこうやってときどき凶悪なマクロプログラムに挑戦しています。無い知恵を絞りながら、コンパイラの限界に挑むようなマクロをいろいろと考えています。さらには、コンパイラの限界を突破するために、PHPに前処理をさせるPCPのようなものまで持ち出しています。
『プログラマーのためのソースコードを読む技術』サポートページ
このページでは、『プログラマーのためのソースコードを読む技術』に関するサポート情報を掲載していきます。『プログラマーのためのソースコードを読む技術』は技術評論社から好評発売中です。
[実験] PCP: C Preprocessor
バカバカしいことも大まじめに取り組めば、ひとつぐらい実のなるものもあるかもしれないということで、いろいろ実験を行っています。今回もそのひとつで、PHPをCのプリプロセッサに使うことでメタプログラミングをやろうという話です。この話題は、当サイトでは以前から何度か出ていましたが、いくつかの問題点を解消した結果を今回はまとめておくことにします。
C99関数・マクロ・前処理スクリプト集
ここでは、C99のを対象とした(C90で使えるものもあります)関数、マクロ、そしてPCPを用いた前処理スクリプトを紹介します。GCC拡張を利用したコードも扱いたいと考えています。半分冗談めいたものもありますので、過信はしないでください。
再びnoocyteさんのマネでもするか...
当サイトの初期のころは、「C++テンプレート集」が中心でした。これは、noocyteさんのサイトのパロディのような位置づけで始めたものでした。
ここしばらく、複合リテラルと可変個実引数マクロを使っていろいろ試してきた感じでは、なかなか面白いコンテンツができそうな気がしてきました。再びnoocyteさんのマネをして、「C99関数・マクロ・PHP前処理スクリプト集(仮称)」のようなコーナーを作ると面白いかもしれません。
最近はC1Xも少しずつ調べ始めていますが、そもそも現行規格であるC99についてのノウハウが大して蓄積されていない気がします。C99は、どうしても以前のバージョンとの互換性を考えて、積極的にはその機能を使えなかったのですが、Visual C++を切る覚悟さえ決めれば、C99の互換性はそれほど低くはないように思います。
続・実験サイト「きじねこマーケット」
先日、ドロップシッピングの実験サイト「きじねこマーケット」をFC2で開設したことを紹介しました。ところが、初期状態を構築するまではよかったのですが、その後のメンテナンスに手間がかかりすぎるため、丸一日と経たないうちに嫌になってしまったのです。
しかし、一度始めた実験なので、何らかの成果を得るまでは継続したいところです。もっとも、この手の方法では無理だという結論が得られるだけでも一定の成果ではあるのですが、やはり、それなりに継続可能なサイトを作り上げたいところです。
[実験] PHP を C/C++ の前処理に使う
C/C++ ではプリプロセッサを使うことができます。それによって単純なマクロ機能を使うことはできるわけですが、ちょっと凝ったことをしようとすると、すぐに役不足になってきます。例えば、配列の要素を事前に整列するとか、静的な二分木や三角関数表をつくるといったことは、プリプロセッサではできません。
通常、こうしたことを行うには、別途何らかのコードジェネレータを作って、それに C/C+ のソースコードを生成させることになるわけですが、もっと簡単な方法があればそれに越したことはありません。今回は、埋め込み型のスクリプト言語である PHP を使ってこれを実現することを試みます。
PHP というと、ウェブ専用の言語だと誤解している人もいるかもしれません。しかし、実際の PHP はコマンドラインでも使うことができますので、通常のスクリプト言語として扱うこともできるわけです。しかも、同じソースファイルに PHP のコードと他の言語のコードを混在できますから、今回の目的にはぴったりです。
意外に知られていない && と || の短絡評価
またまた専門学校で出た話題です。さらに、実は最近専門学校以外でも講義を行っているのですが、そこでも話題になりました。C言語を一通り習いました(さらには、C++やC#なども習いました)という生徒であっても、意外に知らないのが && や || の短絡評価です。
ちょっと入門サイトをいくつか調べてみましたが、確かに短絡評価に触れているところは見当たりませんでした。皆無ではないでしょうが、初心者が短絡評価を知る機会はそう多くないようです。しかし、短絡評価は初心者だから知らなくてもよいというようなものではなく、これを知らなければまともな条件式は書けないはずです。
WordPress と格闘中
少し前から訳あって WordPress と格闘しています。それまでは担当者にまかせっきりだったのですが、やはり自分でも理解しておく必要が発生したからです。実際やってみると、一般的なカスタマイズであれば何てことはないことが分かりました。これなら、大抵のことはできそうです。
触ってみて分かることは、ドキュメントさえある程度目を通せば一通りのことはできるのですが、それでもかゆい所にどうしても手が届かないことが出てきたりします。それと、比較的簡単にカスタマイズできるとはいえ、PHPのコードをゴリゴリ書かないと一定以上のことができないわけですから、「素人には難しそうだな」と感じました。
当サイトで使っている Drupal があまりにも便利なため、比べるとどうしても見劣りしてしまいますが、Drupal よりは少し軽量なのかもしれません。目的に応じて使い分けるのが一番なようです。
「Drupalウェブサイトへようこそ!」と表示されるのを隠す。
/modules/node/node.moduleのnode_page_default関数に、
