2010年2月19日金曜日

Mac OS X で Hex Dump(バイナリビューワー)

Mac OS X でとりあえず16進数でバイナリを表示したいときに使えるツールのメモ.
$ hexdump ファイル名
$ xxd ファイル名

xxd の方のデフォルトの表示フォーマットのが好きだな.機能の差とかはよく知らない.

2010年2月14日日曜日

またたび式 C 入門 #0

どうも,お久しぶりですw

修士論文とレポートで忙しくてほったらかしてたんだよね.一応,修士論文発表会も終わり,単位認定結果を待つのみとなったので,ブログを書くのを復活させよう♪

久しぶりのブログのネタは,いわゆる C 言語の入門ネタをやろうかと思ってる.C の入門ネタなんてインターネット上に腐るほどあるので,いまさら感はあるんだけど,1回くらいは C の入門ってーのを書いてみたいと前々から思っていたのでwほかの言語でちゃんとした入門ネタを書こうとも思ったんだけど,入門ネタを書けるほど修得してる言語って C くらいかなぁと…….そもそも,C ってとんでもない人がわんさかいるから,僕が偉そうに書くというのもいろいろ自爆してる気がするけどwww

ということで,「またたび式 C 入門」と題して,C 言語の入門ネタを書いていこう.またたび式という名前は,とりあえず C 入門じゃ検索し辛いから,適当に付けた名前なのであまり気にせずにwあと,林檎生活なんだけど,ターゲットプラットフォームは,Windows XP にした.とりあえず,Windows ユーザ向けに書いてみたかったからなんだよね.Windows ユーザ向けで書いてどのくらい読む人がいるか知りたかったのと,Windows っていう C に向かない環境でとりあえず学ぶ方法を開拓してみたかったから.

まあ,今回のエントリは,ぐだぐだ僕の C 言語とそれを学ぶことについて思ってることを書くだけにする.#1 からちゃんと入門っぽいエントリにするのでねw

まず,C を学びたい人ってどういう人だろうねという話.とりあえず,C って有名だから学び始める人が多いのかもしれない.実際,僕はそんな感じで勉強し始めた.学校で教えられるから勉強し始めた人も多いと思う.最近だと,実務で必要だからという人もいるかもしれないね.Web アプリケーションでよく使われる言語からプログラミングを始めて,組み込みの仕事もやることになってみたいな友達を知ってるから.

じゃ,C を学んでハッピーになれる人は?とりあえず,大学で研究するために必要な人は,ハッピーになれるはずだね.学ばないと研究にならないわけだしw実務で使用する人もハッピーになれると思うけど,入門書が役に立つとは思えないな.C の案件って組み込みが多いだろうし,入門書じゃそこまでカバーしきれないから.とりあえず,プログラミングを始めたくて C を選んだ人は,ハッピーにならない気がするな.いわゆる Windows アプリケーションを作成することを夢見てたり,ゲームプログラミングを夢見てるのであれば,C という選択肢はイバラの道だ.Windows API を叩いて Windows アプリケーションを作成するよりは,Visual Studio と C# で作った方が簡単だよね.ゲームを作るにしても,いまなら C# でいいんじゃないかなぁ.Direct X を C++ で叩くよりは,C# で叩いた方が行数が少なかったよね.ハッピーになる人なんて,UNIX アプリケーションのソースを読まなきゃならない人とか,C++ や Objective-C の前段階として学ぶ人くらいじゃないかなぁ.

実際のところ C は広く使われてるから,なんでもかんでもやろうと思えばできる.ハードウェアに近いドライバから,GUI アプリケーションや Web アプリケーションまで.でも,C じゃなきゃ困るというところは,組み込み系とか UNIX アプリケーション系とかに限定されてくる.あとは,リバースエンジニアリングをする目的で Windows API を知らなきゃならないとかいう状況かな.その場合は,もちろんアセンブラの知識の方が重要になるけどね.

という感じで,C をいまさらやらなくてもいいよなぁと思うところもあるわけだけど,大学ではまだ C を教えてるみたいだし,UNIX のサーバとかは C で開発されているのが多いし,とりあえず C を学びたい人はいそうだ.OpenGL や OpenMP,OpenCV を使って研究用の書き捨てのコードを書くなら C っていう選択肢は有りだし,C で書かれている便利なものが多くあるんだよな.

うーん,またたび式では,Windows 上で C の UNIX 的な使い方を勉強しつつ,いろんなライブラリを使える程度のスキルを身につけられるようにすることを目標にしようかな.発展的には,Windows API を使ってみることで,C からかけ離れた使い方を勉強してみるとかwあと,UNIX の開発ツールの使い方とかも一緒に学んで,UNIX アプリケーションのソースを読めるようにするとかね.

まっ,こんなことをグダグダと書いてしまったけど,次回からはちゃんと C 入門を書いていきます.全編通しての例題として考えているのは,リバーシ!いわゆる,オセロねwコンピュータの思考ルーチンとかも作って,最終的には GUI 化しようとか企んでるわけです♪

ではでは,お楽しみにw