link もっと前
   2013年 6月 13日 -
      2013年 6月 4日  
link もっと後

link 未来から過去へ表示(*)
link 過去から未来へ表示

2013年 6月 13日

link permalink

link 編集する

世の中にありそうでない言語

最近、自習を兼ねて、バイナリ解析するアプリを書いていますが、言語が備えていると(私が)嬉しい 3つの条件があります。

個別にみると珍しくない条件で、3つの条件を満たす言語もこの世に既にありそうですが、今のところ「コレだ!」というものが見つからず、気分がモヤモヤしています。

3つの条件

  • 整数型が存在すること。unsigned 型が存在すると嬉しい。
  • ガベージコレクションが存在すること。
  • 最低限 Linux と Windows で動かせること。各種コンテナや、GUI ライブラリが揃っているとなお嬉しい。

今までの選択

初めは C で書いていましたが、条件 2 と条件 3 がない辛さに耐えられなくなりました。リストや連想配列の再発明は、それはそれで楽しいけれど、やりたいこととは関係ないんです。

次は C++ with Boehm GC で書きましたが、条件 3 に躓いたとき GTK にぶち当たって挫けました。決して悪いライブラリではないのですが…。

今は Java で書いていて概ね良好ですが、条件 1 の unsigned 型がないため細々した部分で面倒くさいです。

これからの選択

一番条件が合うのは Visual C# .NET でしょうか。条件 3 の Linux サポートが微妙か?Mono の気分次第ですね。変わり種として D 言語も条件合いそうですが、使う気があまり起きません…なぜでしょう。

スクリプト言語の手軽さには心惹かれていて、ぜひ使いたいところですが、Ruby や Python はやはり条件 1 が満たせません。Java と同様で unsigned がないのです。

ブラウザベースの JavaScript や、ゲーム界で大人気の Lua も心惹かれていますが、どうも整数値という概念がなく、全て浮動小数点として扱われるようで、演算、特に除算とビットフィールドの扱いが面倒くさそうです。

時代の流れ的に整数型ってなくなる方向みたいですし、今後に期待しても望みは薄いかもしれません。うむむ…困ったね。

[編集者: すずき]
[更新: 2013年 6月 16日 01:46]

コメント一覧

  • IKeJI 
    CからJavaへ移植するために元がunsignedで困る事は良くありますね。

    バイナリ解析用途だと時前でbyte[]を使って実装するのはどうでしょうか? 
    (2013年06月16日 07:19:42)
  • すずき 
    >IKeJIさん
    そうですよね、どちらかというとunsignedは使われると他言語移植の時に困る代物になっていますね。
    byte[]のまま処理するというのはおもいつかなかったです。今はbyte[]で読んできて全部64bit整数に変換して凌いでます。 
    (2013年06月16日 09:01:58)
  • よしだあ 
    Ruby使いですがバイナリも意外といけるよ。いっしょにRubyやろうぜ!笑

    http://ref.xaio.jp/ruby/classes/string/unpack 
    (2013年06月18日 02:04:15)
  • すずき 
    >よしだあさん
    Rubyはバイナリの扱いもさることながら、整数の桁数が実質無制限なので、負数の扱いについて、CやJavaと違う処理が必要になりそうです。
    文句言う前に考えろって話ですけど、それなりに面倒くさいんです…。 
    (2013年06月19日 00:28:14)
  • よしだぁ 
    binstr = "\001\002\003\004\377\376\375\374"
    # unsigned
    binstr.unpack("I*") => [67305985, 4244504319]
    # signed
    binstr.unpack("i*") => [67305985, -50462977]

    取得にかんしては、こんな組込み関数があるけどね。内部表現としても 32bit とか 64bit とか、ということになると Ruby は不向きかもなぁ。

    http://moko.cry.jp:3232/~keiji/ruby-manual-1.8-20050214/pack_A5_C6_A5_F3_A5_D7_A5_EC_A1_BC_A5_C8_CA_B8_BB_FA_CE_F3.html 
    (2013年06月20日 12:49:51)
  • すずき 
    >よしだあさん
    なんと、こんなことできるんですか。さすがRuby…できる子。 
    (2013年06月21日 13:16:58)
open/close この記事にコメントする



2013年 6月 8日

link permalink

link 編集する

エンジニア川柳

部下のやる気を「完全に抹殺」する管理職様の心得を川柳にしてみた。

優先度放棄
お客様の 要望全部 最優先
無理な期日
早くやれ どうしてできない 言ってみろ!
恐怖政治
まず怒鳴り 机を叩いて 物を投げ
丸投げ
やっといて あとはよろしく ねえ?できた?
無計画
明日を見ろ 一年後なんか 知らねえよ

メモ: 技術系?の話(なのかな…これ)は Facebook から転記しておくことにした。

[編集者: すずき]
[更新: 2014年 3月 16日 23:55]

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
   2013年 6月 13日 -
      2013年 6月 4日  
link もっと後

管理用メニュー

link 記事を新規作成

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDF ファイル RSS 1.0
QR コード QR コード

最終更新: 10/18 04:44

カレンダー

<2013>
<<<06>>>
------1
2345678
9101112131415
16171819202122
23242526272829
30------

最近のコメント 5件

  • link 20年09月10日
    すずき 「追加情報。最新の Debian Test...」
    (更新:10/07 16:48)
  • link 20年09月20日
    hdk 「最近は音楽聞く時やビデオ視聴時はミニコン...」
    (更新:09/24 21:43)
  • link 20年09月20日
    すずき 「ありゃー、同じ壊れ方ですね。\n新たなヘ...」
    (更新:09/24 00:23)
  • link 20年09月20日
    hdk 「うちのATH-AD300もやはり頭にプラ...」
    (更新:09/23 12:26)
  • link 20年07月10日
    すずき 「鳥のゲームは知りませんでした。色々やって...」
    (更新:08/11 18:59)

最近の記事 3件

link もっとみる
  • link 20年02月22日
    すずき 「[Zephyr を調べる - まとめリンク] 日記が増えすぎて、一...」
    (更新:10/18 04:44)
  • link 20年10月18日
    すずき 「[Zephyr OS で遊ぼう その 27 - SMP 対応、] ...」
    (更新:10/18 04:43)
  • link 20年10月17日
    すずき 「[Zephyr OS で遊ぼう その 26 - SMP 対応、] ...」
    (更新:10/18 03:24)

こんてんつ

open/close wiki
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報