コグノスケ


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

link もっと前
2013年6月13日 >>> 2013年5月31日
link もっと後

2013年6月13日

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

最近、自習を兼ねて、バイナリ解析するアプリを書いていますが、言語が備えていると(私が)嬉しい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/06/16 01:46)

コメント一覧

  • IKeJIさん(2013/06/16 07:19)
    CからJavaへ移植するために元がunsignedで困る事は良くありますね。

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

    http://ref.xaio.jp/ruby/classes/string/unpack
  • すずきさん(2013/06/19 00:28)
    >よしだあさん
    Rubyはバイナリの扱いもさることながら、整数の桁数が実質無制限なので、負数の扱いについて、CやJavaと違う処理が必要になりそうです。
    文句言う前に考えろって話ですけど、それなりに面倒くさいんです…。
  • よしだぁさん(2013/06/20 12:49)
    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/21 13:16)
    >よしだあさん
    なんと、こんなことできるんですか。さすがRuby…できる子。
open/close この記事にコメントする



2013年6月8日

エンジニア川柳

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

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

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

編集者:すずき(2014/03/16 23:55)

コメント一覧

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



link もっと前
2013年6月13日 >>> 2013年5月31日
link もっと後

管理用メニュー

link 記事を新規作成

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

最近のコメント5件

  • link 21年9月20日
    すずきさん (11/19 01:04)
    「It was my pleasure.」
  • link 21年9月20日
    whtさん (11/17 23:41)
    「This blog solves my ...」
  • link 24年10月1日
    すずきさん (10/06 03:41)
    「xrdpで十分動作しているので、Wayl...」
  • link 24年10月1日
    hdkさん (10/03 19:05)
    「GNOMEをお使いでしたら今はWayla...」
  • link 24年10月1日
    すずきさん (10/03 10:12)
    「私は逆にVNCサーバーに繋ぐ使い方をした...」

最近の記事3件

  • link 23年4月10日
    すずき (11/15 23:48)
    「[Linux - まとめリンク] 目次: Linux関係の深いまとめリンク。目次: RISC-V目次: ROCK64/ROCK...」
  • link 24年11月6日
    すずき (11/15 23:47)
    「[Ubuntu 24.04 LTS on ThinkPad X1 Carbon Gen 12] 目次: Linux会社ではTh...」
  • link 24年11月11日
    すずき (11/15 23:26)
    「[Pythonのテストフレームワーク] 目次: Python最近Pythonを触ることが増えたのでテストについて調べようと思い...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
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 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 過去日記について

その他の情報

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

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDFファイル RSS 1.0

最終更新: 11/19 01:04