Hatena::ブログ(Diary)

プログラミング言語を作る日記

2012-08-25 SoftwareDesign2012年8月号に記事を書かせていただきました & er

[][]SoftwareDesign2012年9月号に記事を書かせていただきました & erattaのお詫び

遅い報告になってしまいましたが、タイトルのとおり、SoftwareDesign 2012年9月号に記事を書かせていただきました。

SoftwareDesignトップページ

該当号もくじ

特集「C言語ポインタは必要ですか?」の2番目の記事「Part2:ポインタの壁の克服の仕方」を書かせていただいております。

テーマがテーマだけに、「C言語 ポインタ完全制覇」のダイジェスト的なものになっている面はありますが、はてなブックマークでも定期的にCのポインタが話題になるようですから、今こういう記事を書くことにも相応の価値はあるのではないかと思っています。

また、ISO C99についても多少言及しました。

そして、早々にミスが見つかってしまいました。申しわけありません。

p.30 「空の[]について」の上の章、下から6行目

誤)

「intの配列(要素数3)の配列(要素数5)」と読めます。

正)

「intの配列(要素数5)の配列(要素数3)」と読めます。

p.31 図1

誤)

int a[5][3]という配列において

正)

int a[3][5]という配列において

多次元配列の読み方のところですので、今回の記事において、かなり重大なミスかと思います。

大変申しわけありませんでした。

2011-05-08 「はてブ元に戻して」運動実施中です。

[]「はてブ元に戻して」運動実施中です。

ご存知の通り、4/5にはてなブックマークが改悪されました。

はてなブックマークのエントリーページを改良しました - はてなブックマーク日記 - 機能変更、お知らせなど

上のページのはてブ。

はてなブックマーク - はてなブックマークのエントリーページを改良しました - はてなブックマーク日記 - 機能変更、お知らせなど

この変更により、ブックマークの一覧性が失われてしまいました。現状、私はブクマのページを表示するたびに毎回一番下までスクロールし、「すべてのブックマークを見る」をクリックしている、という有様です。面倒です。

この変更には、「早期に☆がついたブクマコメントしか読まれなくなる」という弊害もあります。この仕様だと「平日の昼間っからネットをうろうろしてせっせとブクマコメントを書いている人たち」が有利になるわけで、「ネット上で声の大きい人」の声をさらに大きくするだけでしょう。

というわけで、いまさらではありますが、私は最近はブックマークするたびに「はてブ元に戻して」というタグをつけています。

kmaebashiのはてなブックマーク

よろしければ皆様もご一緒に。

2010-09-09 日経ソフトウエア掲載のMILに(まだ)バグがありました

[]日経ソフトウエア掲載のMILに(まだ)バグがありました

重ね重ね申しわけありません。

以下のコメントで「oku」様にご指摘いただいたとおり、MILの行番号カウントにバグがありました。

http://d.hatena.ne.jp/kmaebashi/20100810/p1#c1283752401

MILでは「#」から改行までがコメントなのですが、コメントの終わりの改行でst_current_line_numberをカウントアップしていません。そのため、エラーメッセージで、コメントの分だけ行番号がずれます。

これを直すには、lexicalanalyzer.cの222行目周辺、掲載誌上のリストで言えば33ページ左側のリストの以下の箇所を修正する必要があります。

    case COMMENT_STATE:
      if (ch == '\n') {
	state = INITIAL_STATE;
        st_current_line_number++; /* これを追加 */
      }
      break;

またしてもご迷惑をおかけしまして申しわけありません。お詫びいたします。

2010-08-10 日経ソフトウエア掲載のMILにバグがありました

[]日経ソフトウエア掲載のMILにバグがありました

以下の記事で紹介させていただきました日経ソフトウエア8月号の記事について、バグをご指摘いただきました。

http://d.hatena.ne.jp/kmaebashi/20100704/p1

バグご指摘のツイート:

http://twitter.com/aifaruba/status/20618838814

@aifaruba 様、ご指摘いただき、ありがとうございました。

static void
fix_labels(void)
{
  int i;

  for (i = 0; i < g_bytecode_size; i++) {
    if (g_bytecode[i] == OP_PUSH_INT
        || g_bytecode[i] == OP_PUSH_STRING
        || g_bytecode[i] == OP_PUSH_VAR
        || g_bytecode[i] == OP_ASSIGN_TO_VAR) {
      i++;
    } else if (g_bytecode[i] == OP_JUMP
               || g_bytecode[i] == OP_JUMP_IF_ZERO
               || g_bytecode[i] == OP_GOSUB) {
      g_bytecode[i+1]
        = st_label_table[g_bytecode[i+1]].address;
      i++; /* ←これが抜けていました。*/
    }
  }
}

このi++;が抜けていることにより、ループの次の回ではバイトコードではなく今置換したジャンプ先アドレスを指すことになります。たまたまそれがジャンプ系の命令と合致しなければスカるだけ(2ワード命令と合致すれば1ワード余計にスカりますが)なので気付かなかったようです。

ご迷惑をおかけし大変申しわけありませんでした。

9月24日発売号(日経ソフトウエア11月号)にて修正が載るとのことです。

2009-07-05

[]amazonアソシエイト2009年6月会計報告

紹介料は寄付する旨宣言してますので、先月分の会計報告です。

f:id:kmaebashi:20090705235738p:image

なんかこう、寂しいことになっておりますが。

哀れに思った方はぜひこちらから。