バイナリ・プログラミング、バイナリ・ハック ― 2006年12月22日 06時00分11秒
ASAHIネット(http://www.asahi-net.or.jp)のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
Binary 2.0なんて集まりがあるのね。
http://itpro.nikkeibp.co.jp/article/NEWS/20061216/257100/
「PS3上のLinuxをWiiリモコンで操作」---Binary 2.0 カンファレンス2006よ
り
コンピュータがある以上、こういうシステムの中をえぐるプログラミングは、絶対に重要。悪用するとどうのこうの以前に、技術屋であれば、ブラックボックスの中身を知るのは絶対的に重要なこと。
その意味で、こういう会合があるってのは、とてもいいことです。
http://itpro.nikkeibp.co.jp/article/COLUMN/20061108/253099/?ST=oss
時代はバイナリ?低レイヤー・プログラミングの楽しさ
低レベルプログラミングというと、単に技術水準が低いプログラミングになるので(苦笑)、低レイヤー・プログラミングといってるんだろうね。
初めて知ったが、
http://www.amazon.co.jp/exec/obidos/ASIN/4873112885/showshotcorne-22/ref=nosim
高林哲, 鵜飼文敏, 佐藤祐介, 浜地慎一郎, 首藤一幸著「Binary Hacks ―ハッカー秘伝のテクニック100選」
という本もあるのね。
バイナリ・ハックというからには、2進数であることを駆使したビット演算プログラミングのハックかと思った。
でも、目次をみると、彼らがいうバイナリ・ハックは、そういう意味じゃないのね。オブジェクトファイルを操作したり、コンパイラ、リンカ、アセンブラ、ローダ、プロファイラ、デバッガなどのツールのTips集みたい感じね。
ここにあるような話よりもっと面白いのが、2進数のビット演算のハック、ほんとのバイナリ・プログラミング、バイナリ・ハック。
本物のハッカーがどういうバイナリ・ハックを築いてきたか、驚異のプログラミングテクニックを知りたい人は、
http://www.amazon.co.jp/exec/obidos/ASIN/4434046683/showshotcorne-22/ref=nosim
ジュニア,ヘンリー・S. ウォーレン著, 滝沢徹, 赤池英夫, 藤波順久, 鈴木貢, 葛毅, 玉井浩訳「ハッカーのたのしみ―本物のプログラマはいかにして問題を解くか」
が必読。
おれ、25年くらい前に管理工学研究所に就職したとき、ビット操作のテクニックって全然知らなかった。かの有名な、XOR3連発による一時変数なしのデータ交換すら知らなかった。
当時は、日本語入力ソフトの松茸や日本語ワープロの松、新松などアセンブラで書いていた。で、データ交換用のマクロ定義にXOR3連発があって、何をやっているのか全然わからなかった。
「え、中村。お前、そんなのも知らないの?」といわれて、恥ずかしかった。
以来、勉強したら、少しはわかるようになったかというと、全然(泣)。
わはは、ま、一応、謙遜ですけど。
嘘、こけ。まるっきり、事実だろ。\(^O^)/
さすがに2の割り算はシフトでやるくらいは知ってたけど。^^;
ともかく、そんなおれだから、「ハッカーのたのしみ」は驚異の世界。XOR3連発なんて、初歩の初歩の初歩の初歩。
ビットの魔術を知りたい人は、ほんとに必読。
おれなんか、理解できずに、全部、忘れたけどね。\(^O^)/
とにかく、プログラミングってね。こういうハードウェアの命令レベルに近いところと、LispやProlog、最近の流行りでいえば、HaskellやCleanなどの関数型言語のように抽象度の高いところを学べば、あとはなんとでもなるのよ。
ほかの、CやC++やJavaやJavaScriptやPerlやRubyやPythonなんて、全部、その中間だからね。
慶応大学教授かつLispハッカーの故中西正和先生の持論は、「プログラミングの最初にアセンブラとLispを教えるべし」でした。BASICとかそんなのでプログラミング入門をして、変な癖がつく前に、アセンブラとLispだけやれば、あとはなんとでもなるということ。
抽象度の高いプログラミングマジック、たとえば、高階関数とか無限リストとかユニフィケーションとか各種の効率的なソートや探索アルゴリズムやAI的アルゴリズムがホワイトマジックだとすれば、「ハッカーのたのしみ」にあるバイナリ・ハックは、ブラックマジック。
ホワイトマジックとブラックマジック、双方に精通してこそ、真のマジシャンですからね。
XOR3連発を知らない人は、
http://ja.wikipedia.org/wiki/XOR交換アルゴリズム
をどうぞ。
あ、もう朝の6時になりそうだ。一眠りして、会社行ってバイオのソフト書かないと。年内早く仕事を済ませたい。
いまやってるのは、グラフ探索、OWL/RDFの操作とか、そういうのばっかだから、バイナリ・ハック、全然、関係ないです。^^;
グラフといっても、棒グラフや円グラフのグラフじゃなくて、有向グラフやDAGやトポロジカルソートでいうときのグラフ。ネットワークといったほうがいいかな。インターネットなどの通信のネットワークとはまたちょっと意味が違うな。用語の意味って難しいね。
Lispなど抽象度の高い高水準言語で、バイナリ・ハックが関係ないかといえば、そうともいえませんね。高速なライブラリの実装は、低レイヤのハックが必要ですもんね。
たとえば、FranzのAllegro Common Lisp用の超高速RDFデータベースAllegro Cacheで使われているCommon Lispで書いたB+ツリーのエンジンやテキスト処理は、低レイヤプログラミングを駆使しているみたいですもんね。
http://www.franz.com/support/tech_corner/btree-121306.lhtml
High Performance Btree Module Now Available
http://www.franz.com/support/tech_corner/read-line-variants-071406.lhtml
Space-efficient variants of read-line
RDFもトリプルの数が10億個くらいになると、はんぱな量じゃないからね。Allegro Cacheはそんな世界でも実用的に動くのがウリだそうです。Oracleなどの通常のデータベースじゃ、数百万か数千万個くらいで、もう動かないそうですからね。
この前のLispセミナー初日の夕方。懇親会の会場に行く道すがら、FranzのJansさんと話してたら、彼は、前述のどうやって効率的なB+ツリーエンジンを作ったかの話を少ししてくれました。それが公開されたということですね。
おれもノードが100万個くらいあるツリーを作ったりしてるけど、何をやるにも時間がかかって、面倒。
バイオの世界って、データが膨大だから、32bit、メモリ2GBなんてマシンでも、なんかね、8bitのマシン、64KBのメモリで10MBのデータをどう料理しようかなとやってる感覚。
先祖がえりですね。^^;
---
Binary 2.0なんて集まりがあるのね。
http://itpro.nikkeibp.co.jp/article/NEWS/20061216/257100/
「PS3上のLinuxをWiiリモコンで操作」---Binary 2.0 カンファレンス2006よ
り
コンピュータがある以上、こういうシステムの中をえぐるプログラミングは、絶対に重要。悪用するとどうのこうの以前に、技術屋であれば、ブラックボックスの中身を知るのは絶対的に重要なこと。
その意味で、こういう会合があるってのは、とてもいいことです。
http://itpro.nikkeibp.co.jp/article/COLUMN/20061108/253099/?ST=oss
時代はバイナリ?低レイヤー・プログラミングの楽しさ
低レベルプログラミングというと、単に技術水準が低いプログラミングになるので(苦笑)、低レイヤー・プログラミングといってるんだろうね。
初めて知ったが、
http://www.amazon.co.jp/exec/obidos/ASIN/4873112885/showshotcorne-22/ref=nosim
高林哲, 鵜飼文敏, 佐藤祐介, 浜地慎一郎, 首藤一幸著「Binary Hacks ―ハッカー秘伝のテクニック100選」
という本もあるのね。
バイナリ・ハックというからには、2進数であることを駆使したビット演算プログラミングのハックかと思った。
でも、目次をみると、彼らがいうバイナリ・ハックは、そういう意味じゃないのね。オブジェクトファイルを操作したり、コンパイラ、リンカ、アセンブラ、ローダ、プロファイラ、デバッガなどのツールのTips集みたい感じね。
ここにあるような話よりもっと面白いのが、2進数のビット演算のハック、ほんとのバイナリ・プログラミング、バイナリ・ハック。
本物のハッカーがどういうバイナリ・ハックを築いてきたか、驚異のプログラミングテクニックを知りたい人は、
http://www.amazon.co.jp/exec/obidos/ASIN/4434046683/showshotcorne-22/ref=nosim
ジュニア,ヘンリー・S. ウォーレン著, 滝沢徹, 赤池英夫, 藤波順久, 鈴木貢, 葛毅, 玉井浩訳「ハッカーのたのしみ―本物のプログラマはいかにして問題を解くか」
が必読。
おれ、25年くらい前に管理工学研究所に就職したとき、ビット操作のテクニックって全然知らなかった。かの有名な、XOR3連発による一時変数なしのデータ交換すら知らなかった。
当時は、日本語入力ソフトの松茸や日本語ワープロの松、新松などアセンブラで書いていた。で、データ交換用のマクロ定義にXOR3連発があって、何をやっているのか全然わからなかった。
「え、中村。お前、そんなのも知らないの?」といわれて、恥ずかしかった。
以来、勉強したら、少しはわかるようになったかというと、全然(泣)。
わはは、ま、一応、謙遜ですけど。
嘘、こけ。まるっきり、事実だろ。\(^O^)/
さすがに2の割り算はシフトでやるくらいは知ってたけど。^^;
ともかく、そんなおれだから、「ハッカーのたのしみ」は驚異の世界。XOR3連発なんて、初歩の初歩の初歩の初歩。
ビットの魔術を知りたい人は、ほんとに必読。
おれなんか、理解できずに、全部、忘れたけどね。\(^O^)/
とにかく、プログラミングってね。こういうハードウェアの命令レベルに近いところと、LispやProlog、最近の流行りでいえば、HaskellやCleanなどの関数型言語のように抽象度の高いところを学べば、あとはなんとでもなるのよ。
ほかの、CやC++やJavaやJavaScriptやPerlやRubyやPythonなんて、全部、その中間だからね。
慶応大学教授かつLispハッカーの故中西正和先生の持論は、「プログラミングの最初にアセンブラとLispを教えるべし」でした。BASICとかそんなのでプログラミング入門をして、変な癖がつく前に、アセンブラとLispだけやれば、あとはなんとでもなるということ。
抽象度の高いプログラミングマジック、たとえば、高階関数とか無限リストとかユニフィケーションとか各種の効率的なソートや探索アルゴリズムやAI的アルゴリズムがホワイトマジックだとすれば、「ハッカーのたのしみ」にあるバイナリ・ハックは、ブラックマジック。
ホワイトマジックとブラックマジック、双方に精通してこそ、真のマジシャンですからね。
XOR3連発を知らない人は、
http://ja.wikipedia.org/wiki/XOR交換アルゴリズム
をどうぞ。
あ、もう朝の6時になりそうだ。一眠りして、会社行ってバイオのソフト書かないと。年内早く仕事を済ませたい。
いまやってるのは、グラフ探索、OWL/RDFの操作とか、そういうのばっかだから、バイナリ・ハック、全然、関係ないです。^^;
グラフといっても、棒グラフや円グラフのグラフじゃなくて、有向グラフやDAGやトポロジカルソートでいうときのグラフ。ネットワークといったほうがいいかな。インターネットなどの通信のネットワークとはまたちょっと意味が違うな。用語の意味って難しいね。
Lispなど抽象度の高い高水準言語で、バイナリ・ハックが関係ないかといえば、そうともいえませんね。高速なライブラリの実装は、低レイヤのハックが必要ですもんね。
たとえば、FranzのAllegro Common Lisp用の超高速RDFデータベースAllegro Cacheで使われているCommon Lispで書いたB+ツリーのエンジンやテキスト処理は、低レイヤプログラミングを駆使しているみたいですもんね。
http://www.franz.com/support/tech_corner/btree-121306.lhtml
High Performance Btree Module Now Available
http://www.franz.com/support/tech_corner/read-line-variants-071406.lhtml
Space-efficient variants of read-line
RDFもトリプルの数が10億個くらいになると、はんぱな量じゃないからね。Allegro Cacheはそんな世界でも実用的に動くのがウリだそうです。Oracleなどの通常のデータベースじゃ、数百万か数千万個くらいで、もう動かないそうですからね。
この前のLispセミナー初日の夕方。懇親会の会場に行く道すがら、FranzのJansさんと話してたら、彼は、前述のどうやって効率的なB+ツリーエンジンを作ったかの話を少ししてくれました。それが公開されたということですね。
おれもノードが100万個くらいあるツリーを作ったりしてるけど、何をやるにも時間がかかって、面倒。
バイオの世界って、データが膨大だから、32bit、メモリ2GBなんてマシンでも、なんかね、8bitのマシン、64KBのメモリで10MBのデータをどう料理しようかなとやってる感覚。
先祖がえりですね。^^;
コメント
_ とんこう ― 2006年12月22日 07時24分00秒
アセンブラの勉強をする時にビット操作もやるはずです。
_ とんこう ― 2006年12月22日 09時06分37秒
XORを使ったものにグレイコードがありますね。交番コードとも言います。
_ 笑われ者 ― 2006年12月23日 19時34分45秒
一番最初のネタは低レベルプログラミングでは無いですね、
5段階で真ん中ぐらいのレイヤーじゃないですか?
しかもドライバも言語はPythonだしSDLとかに頼った成果物がもっぱらみたいです。
与えられた資料やソフトにもとづいて修正している程度なので
システムハッキングとかいうのとも違うと思います。ハイ。
結構OS依存度の少ないハイレベルプログラミングであるとすらいえます。
Wiiリモートのドライバを直接作るって発想(リンク先の)はそもそもずれてます。
WiiリモコンはHIDオブジェクトとしての信号を送っているわけだから
bluetoothとHIDの基本さえOSが持っていればいいわけです。
LINUXはしらないけれど多分NetBSDはOK、Windowsの2000とかXP、MacOS10とかも最上位とはいかなくてもAPIベースのプログラミングで
Wiiリモコンは使えるんですね、
ハイ
あと全然プログラムとは関係ないけれど
WiiリモコンをWii本体無で使うにはセンサーバーが無いとポイント情報を作れないので
センサーバーを自作しないといけないんですね、
でこれは発振回路とかはいらなくて抵抗でギラギラひからせるだけでOKとか
それと振動に対応していなければwiiリモコン対応はうたっちゃダメですね、
リンク先のドライバーとかやらはどうなのかな?
低レベルプログラミングに対するブログ記事自体に対する否定ではありません。
でもビット操作も低レベルかっていえばスクリプト言語でもサポートしているし微妙
wiiリモコンに関する話は非プログラマーでもすでに知られているものなので
最低限のプログラミングの知識が無い文はやっぱちょっとね、
半端なアセンブラ風味のバイナリ操作より
素直にpdfあたりのフォーマットプログラミングから
バイナリー関連の話に持っていった方が
ぼろが出ないんじゃないですかね、
で比較としてライブラリーを使った方法を出して車輪の再発明とかに言及するとか
5段階で真ん中ぐらいのレイヤーじゃないですか?
しかもドライバも言語はPythonだしSDLとかに頼った成果物がもっぱらみたいです。
与えられた資料やソフトにもとづいて修正している程度なので
システムハッキングとかいうのとも違うと思います。ハイ。
結構OS依存度の少ないハイレベルプログラミングであるとすらいえます。
Wiiリモートのドライバを直接作るって発想(リンク先の)はそもそもずれてます。
WiiリモコンはHIDオブジェクトとしての信号を送っているわけだから
bluetoothとHIDの基本さえOSが持っていればいいわけです。
LINUXはしらないけれど多分NetBSDはOK、Windowsの2000とかXP、MacOS10とかも最上位とはいかなくてもAPIベースのプログラミングで
Wiiリモコンは使えるんですね、
ハイ
あと全然プログラムとは関係ないけれど
WiiリモコンをWii本体無で使うにはセンサーバーが無いとポイント情報を作れないので
センサーバーを自作しないといけないんですね、
でこれは発振回路とかはいらなくて抵抗でギラギラひからせるだけでOKとか
それと振動に対応していなければwiiリモコン対応はうたっちゃダメですね、
リンク先のドライバーとかやらはどうなのかな?
低レベルプログラミングに対するブログ記事自体に対する否定ではありません。
でもビット操作も低レベルかっていえばスクリプト言語でもサポートしているし微妙
wiiリモコンに関する話は非プログラマーでもすでに知られているものなので
最低限のプログラミングの知識が無い文はやっぱちょっとね、
半端なアセンブラ風味のバイナリ操作より
素直にpdfあたりのフォーマットプログラミングから
バイナリー関連の話に持っていった方が
ぼろが出ないんじゃないですかね、
で比較としてライブラリーを使った方法を出して車輪の再発明とかに言及するとか
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。
※投稿には管理者が設定した質問に答える必要があります。
トラックバック
_ ホットコーナーの舞台裏 - 2009年07月16日 05時33分56秒
ASAHIネット(http://www.asahi-net.or.jp)のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
マーヴィン・ミンスキーの新刊が出てますね。
http://www.amazon.co.
---
マーヴィン・ミンスキーの新刊が出てますね。
http://www.amazon.co.
_ ホットコーナーの舞台裏 - 2012年04月27日 07時54分11秒
ASAHIネット(http://asahi-net.jp )のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
実践活用編」
こんな本が出ている。
http://www.amazon.co.jp/exec/obidos/A
---
実践活用編」
こんな本が出ている。
http://www.amazon.co.jp/exec/obidos/A
_ ホットコーナーの舞台裏 - 2014年02月17日 10時42分38秒
ASAHIネット(http://asahi-net.jp )のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
お買い上げありがとうございます。
http://www.amazon.co.jp/exec/obidos/ASIN
---
お買い上げありがとうございます。
http://www.amazon.co.jp/exec/obidos/ASIN
_ ホットコーナーの舞台裏 - 2014年05月08日 10時48分45秒
ASAHIネット(http://asahi-net.jp )のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
Kindle版の本のお買い上げがあって知りました。ありがとうございま
---
Kindle版の本のお買い上げがあって知りました。ありがとうございま
_ ホットコーナーの舞台裏 - 2014年05月23日 10時17分45秒
ASAHIネット(http://asahi-net.jp )のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
お買い上げありがとうございます。
http://www.amazon.co.jp/exec/obidos/ASIN
---
お買い上げありがとうございます。
http://www.amazon.co.jp/exec/obidos/ASIN
_ ホットコーナーの舞台裏 - 2015年11月18日 10時49分46秒
ASAHIネット(http://asahi-net.jp )のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
お買い上げありがとうございます。
珍しい。著者は、韓国の人た
---
お買い上げありがとうございます。
珍しい。著者は、韓国の人た
_ ホットコーナー - 2016年03月31日 11時05分46秒
ASAHIネット(http://asahi-net.jp )のjouwa/salonから。
---
日本最古のハッカー、もちろん、Lispハッカーでもある和田英一先生のツイートから、至言、金言を。
https://twitter.com/eiitiwada/status/7150
---
日本最古のハッカー、もちろん、Lispハッカーでもある和田英一先生のツイートから、至言、金言を。
https://twitter.com/eiitiwada/status/7150
_ ホットコーナー - 2019年08月04日 22時45分50秒
ASAHIネット(http://asahi-net.jp )のブログサービス、アサブロ(https://asahi-net.jp/asablo/ )を使っています。
---
http://iiyu.asablo.jp/blog/2019/07/30/9135177
入門Haskellプログラミングほか、有名どころのHaske
---
http://iiyu.asablo.jp/blog/2019/07/30/9135177
入門Haskellプログラミングほか、有名どころのHaske
_ ホットコーナー - 2022年02月01日 11時23分07秒
ASAHIネット(http://asahi-net.jp )のブログサービス、アサブロ(https://asahi-net.jp/asablo/ )を使っています。
---
ウェブのフロントエンド技術者になったものの、基本的なデータ構造やアルゴリ
---
ウェブのフロントエンド技術者になったものの、基本的なデータ構造やアルゴリ
_ ホットコーナー - 2022年06月18日 15時33分59秒
ASAHIネット(http://asahi-net.jp )のブログサービス、アサブロ(https://asahi-net.jp/asablo/ )を使っています。
---
ツイートしたけど、勘違いがあったので訂正ツイートもした。
https://twitter.com/show
---
ツイートしたけど、勘違いがあったので訂正ツイートもした。
https://twitter.com/show