パスワードを忘れた? アカウント作成
10290522 story
プログラミング

「アセンブラ短歌」が書籍化される 84

ストーリー by headless
趣味 部門より
ymitsu のタレこみによれば、31バイトでプログラムを書く「アセンブラ短歌」の解説書が発売されるそうだ(Mynavi Advanced Library特集ページアセンブラ短歌)。

アセンブラ短歌とは、「五・七・五・七・七の三十一バイト(みそひとバイト)から成る 機械語コードでプログラムを書いてみるという近未来の文化的趣味」とのこと。近年、アセンブラ学習が見直されているが、遊び感覚でアセンブラを学習する方法として考え出されたものだという。31バイトの機械語コードが決められた位置で区切られるようにプログラミングし、韻を踏むために同じバイトパターンを決まった位置に埋め込むなどの技術を身に着けることで、バッファーオーバーランの脆弱性を攻撃するために送り込まれるシェルコードの解析や対策を考えるためにも役立つとのことだ。

書籍「31バイトでつくるアセンブラプログラミング ~アセンブラ短歌の世界~」は1月7日発売。1月6日までの先行予約期間は限定価格で購入可能だ。紙の書籍と電子書籍(PDF)が選択できるが、紙の書籍は受注生産のため書店の店頭に並ぶことはない。普通の解説書では飽き足らない読者のための「Mynavi Advanced Library」の第1弾とのことで、以前/.Jでも話題となった「Rubyで作る奇妙なプログラミング言語」が復刻再版され、同時に発売される。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by NOBAX (21937) on 2013年12月01日 9時31分 (#2503645)
    月刊ASCIIでコンテスト [geocities.jp]をやってましたね。
    1行(255文字)でも結構まともなゲームができるので感心しました。
  • 出版社のページで 1 章を試し読みできるので読んでみた。まあ読む前からわかっていた気もするけれど、本書は、「5・7・5・7・7 バイトの機械語でプログラムを書く」と言われて、面白そうと思う人向けに書かれている。「5・7・5・7・7 バイトの機械語でプログラムを書く」という本書の目的自体に共感できない人は、それ以上読んでも無駄っぽい。

    以下自分語り。残念ながら僕はこのコンセプトに共感できず、本の内容は独りよがりだとしか思えなかった。変なプログラミング自体は嫌いではないつもりだけど、プログラミングに関して、理由もなく規則を設けておいて、「規則を守っているからすごい」という方向性は、僕はどうも好きじゃない。そんな風にすごさの基準を人工的に作らなくても、世の中にすごいプログラムはたくさんあるのに、と思ってしまう。

  • by Anonymous Coward on 2013年12月01日 1時24分 (#2503613)

    アセンブラ少年のキム君が、今はそんなことをしているのか。...と思った。

  • by Anonymous Coward on 2013年11月30日 14時43分 (#2503427)

    そうすればもう少し実用的なものも生まれてきそうなのに

    • by Anonymous Coward

      いや短歌じゃなくなるでしょ

  • by Anonymous Coward on 2013年11月30日 14時48分 (#2503429)

    文芸部にプレゼントしてハッカーメガネっ娘を量産したい

  • by Anonymous Coward on 2013年11月30日 15時05分 (#2503440)

    どうせあの命令を使うに決まってるから。

  • by Anonymous Coward on 2013年11月30日 15時32分 (#2503448)

    思うこと…。

    機械語(machine language)→CPUが直接理解できる言語
    アセンブリ言語(assembly language)→(より)人間に理解しやすい、機械語と1対1に対応する言語
    アセンブラ(assembler)→アセンブリ言語を機械語へ変換するもの

    だと思うのですけどねぇ…。

    # 書籍には、さらに『アセンブラ言語』なるものも出ちゃってますし…。

    • by fcp (32783) on 2013年11月30日 17時18分 (#2503488) ホームページ 日記

      何言ってんだおめ。

      31バイトでつくるアセンブラプログラミング

      だからこの本を読めば 31 バイトの超コンパクトなアセンブラができるに決まってんだろ (違)。

      親コメント
    • by Anonymous Coward

      私もまったく同じ認識でしたが、改めて考えてみると、assemblyは英語としてはおかしい気がしなくもないですね。アセンブリ言語の文字列から機械語へ変換することを「ハンドアセンブル」と言ったりすることからもわかるように、assembleするのがassemblerです。我々が「アセンブリ言語」と呼ぶものは、「アセンブラに渡す言語」以外の意味を持っていないので。IBM派の主張もわからんではないです。

      そもそもの目的は「assemble(集める、集合させる)」なんですから、言語をassemblyと言ってしまうのは若干の違和感を残します。assemblerを基準に考えると、機械語

      • 例の言語を指す言葉として assembly language と assembler language のどちらが正しいかなんて議論するのは不毛だけれど、少なくとも assembly language が英語としておかしいなんてことはないよ。「理屈を考えると変だけど使われる」という言葉もあるけれど、 assembly language についてはべつに理屈を考えても変ではない (少なくとも、あなたの書いたような理由で変だということはない)。

        assembly という英単語は動詞 assemble の名詞形で、意味がいくつかある。あなたは「集まり」すなわち「assemble した結果できるもの」という意味にこだわっているみたいだけど、 assembly にはそのほかに「assemble するという行為」という意味がある (Wiktionary [wiktionary.org] に載っている意味の 2 番目: 「The act of putting together such set of pieces. instructions for assembly ; assembly line」)。 assemble するのに使う言語、すなわち assembly に使う言語だから、 assembly language と呼ぶのは自然なことだよ。

        ただし、上では説明上「assembly に使う言語」と書いたけれど、実際に assembly という言葉を「例の言語から機械語に翻訳すること」の意味で使うことは、 assembly language や hand assembly 等の特定の複合語以外ではあまりなく、普通は assembling と呼ぶみたい。「例の言語から機械語に翻訳すること」を単体で assembly と呼ぶことはほとんどないのに assembly language という言葉を使うのは変だというのなら、まあその意味では変かもしれない (この点も理屈を付けようと思えば付けられそうではあるけれど、あまり考えていない)。

        親コメント
      • by Anonymous Coward

        #2503448 のACです。

        assemblyを『集まり、集合』と翻訳するとそうかも知れませんが、それ以外に『(組み立て前の)部品』と言う意味もあります。
        ですので部品(ニーモニック)を組み合わせるので、私としては元の言語は assembly language の方がしっくりくるなぁ…と思う次第。

        • by Anonymous Coward

          assembly を部品と訳すと、それは既に組みあがっている部品ですよ。とめてあるネジとか。だから、組み立て作業をassemblyと呼ぶ以外の解釈は無理筋だと思います。

    • by Anonymous Coward

      Anonymousは形容詞です

    • by Anonymous Coward

      誤用の類を指摘する人って、大概本題の中身には触れないよね。

  • by Anonymous Coward on 2013年11月30日 15時33分 (#2503449)

    機械語で公開するんならアセンブラー必要ないよね?
    Cコンパイラーでもいいんじゃ?

    • C 言語でプログラムを書いてコンパイル後の機械語が 31 バイトになるようにする方法さえあればそれでもいいけど…そんな方法があったところで、どうせ処理系依存になるし、素直にアセンブリ言語を使う方が楽じゃないの。

      親コメント
      • by Anonymous Coward

        AT&T記法は、普通のプログラミング言語と代入方向が違うから、地味に面倒臭いよ、
        intel記法で書けばいいけど、上の理由で、二つの記法が混在するわけが分からんことになるから、元ネタが AT&T記法である以上使いにくい。

        • 何を言っているかわからないレベルで話がずれているけれど、僕はアセンブリー言語が簡単だなんて言っていないからね? 機械語で 31 バイトになるプログラムを書きたい場合に (←これはしょうもない目標だと思うけれど、何をしたいかは人それぞれなので受け入れる)、「C 言語でプログラムを書いてコンパイル結果の機械語が 31 バイトになるようにする」なんて無理ゲーに比べれば、アセンブリー言語で書く方が簡単だと言っているだけで。

          親コメント
  • by Anonymous Coward on 2013年11月30日 16時19分 (#2503466)

    万能枕詞 NOP

  • by Anonymous Coward on 2013年11月30日 16時39分 (#2503470)

    「五・七・五・七・七の三十一バイト」ってことは。

    • by Anonymous Coward

      そういうプロセッサでは31ワードにすればいいんじゃないの。実際英語の俳句は語数でカウントするらしいし。

typodupeerror

私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson

読み込み中...