トラップに関する興味深い話

豊四季タイニーBASICは関数inslist(ソースの579行を参照)の途中で4行をコメントアウトしており、これによって次のような問題が起きる。BASICプログラムの保存領域が残りわずかなとき、既存の行番号をより長い行で上書きしようとすると、既存の行が削除され、新しい行も捨てられる。一方、くだんのコメントを外してコードを生かすと、エラーメッセージを表示して関連の処理をするが、(たぶん不要な)既存の行を保護して新しい行をやはり捨てるから問題を解決したことにならない。結局、上手な解決方法がないので、タイニーBASICの趣旨にのっとり、無駄なコードをコメントアウトしている。

プロのプログラマは、この種のまれにしか起こらない問題をわざと残しておいて、類似のプログラムがコードを不正に流用していないか調べるために使うらしい。そう疑われるのを防ぐため前述の部分はわざわざコメントアウトした理由を(ヘタな英語で)説明しているのだが、そんなことをするといっそう怪しまれると指摘された。腕利きのプログラマは、凡人がソースを見てもバレないようにトラップを仕掛け、もうひとつすぐバレそうなトラップ風のコードを書いてそれがトラップではないことを強調するのだという。

たいへん勉強になった。だからここで豊四季タイニーBASICがトラップを仕掛けていないことを断言しておく。もっとも、わざわざトラップの話を持ち出して、そのあとすぐバージョンアップするプログラムがあったら怪しいという見分け方もあるんだそうだ。凄い世界だね。

広告
カテゴリー: TinyBASIC パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中