プログラミング
久々にC++*1に触れておこうとリハビリがてら触りはじめてます。家ではVistaマシンにUbuntuのNattyをマルチブートさせている*2関係でVisual Studioを使えない。.Netも触ろうかなと色々調べているとRedirecting…を見つけた。C#も使えそうなので色々触ってみよ…
入れてみて動くか実験。一応動くみたいだ。そのうち何か作るかな。
GPGPU。物理演算をGPUでやらせようという考えだが…物理演算以外でも何かに使えないものかな?
近所の本屋で色々物色してたら、 プログラム本コーナーで ゲームプログラミングとか C言語の本を選んでいる 親子連れがいた。見たところ小学生っぽい。自分の小学生の時は… 叔父さんから貰ったマイコンベーシック片手に ベーシック書いてたっけ。
体験版だが使ってみた。 興味のある人はこちら↓ http://jp.fujitsu.com/group/fst/services/ubiquitous/pgr/download/個人的には かなり使えると思う。だいたい人力でソースチェックは限界あるし… 見落としがちになるし。
2ch見てて気になったけど、 他の会社ってドキュメント化ツールは何使ってるのかな?そういうツールの検証したこと無いからやってみたい気もするな。
MISRA-Cを読んでて知ったのだが…C言語に3文字表記なるものがあるらしい… 使い道が分からないが ??- は ~に置き換わる。なんでこんなものが実装されているのか?謎だ。これが実装された歴史的背景が気になる…
前にブックマークしてた Programmers Heavenを忘れてた。 明日以降はここも読み漁るかな。
今日はSIGGRAPHのページを 見てた…Graphbibであらすじが大体分かるけど… どうやって全文を読むか… 買うしかないのかな?しかし、 一度で良いからSIGGRAPHのカンファレンスに行ってみたいな。
最近、仕事の合間に論文を探しては見てたりするのだが、 英語の論文ばっかりなので読むのに時間かかる。日本語の論文もあることはあるのだが… 個人的に興味のある論文はやはり英語になってくる。少しずつ英語にもなれていかないとだめか…
MISRAルール10と言ってもなんだかわからないが…
デバッグしづらいのが難点だよな…
gccとか使ってるとmakefileを書いて依存関係つけていくが…VCはどういうアルゴリズムで チェックするのか…今のコンパイラと差がありすぎる…遅すぎる…コンパイラのソース欲しい…
リンクするibファイル中のグローバル変数…
簡単なプログラム以外は大抵多人数でプログラムするわけだが、 スタンスの違いとかあって、 やはり問題が色々でてくる。この問題をどう減らすか… コーディング規約作ってガチガチにしてしまうか…それはそれで問題あるしなぁ。難しい。
UNIXだろうとWindowsだろうとコマンドはあるわけだが…Windowsは機能が少なすぎる気がする。 まぁ、実行ファイル作ればいいだけだが、 どうにかならないかな。無駄に複雑な書き方になるのがなぁ。
リファクタリングする時はそうせざるを得ないからするのだが、やっぱりする時は最善の注意と配慮が必要だと思う。
最近いつもチェックしてるid:Ozyさんのエントリ。これに感化されたわけなんだけど、まず、 (m+1) == (-~m);これは成り立つ。 なぜならビット反転すると絶対値が+1されるから 符号も反転するので-をつければ解決。で、ここからが本題っていうかネタというか……
回転計算に用いるクォータニオン 実際使う時って 行列→クォータニオン→行列と変換するらしい。 (使ったことが無いのでなんとも言えない。)この操作が遅い。 回転行列をセットするだけで済むものが、 変換して計算して戻してというステップを踏まなきゃいけ…
3Dで使う行列計算って何があるんだ? 内積、外積、正規化、ノルム。透視変換、射影変換。後は、行列じゃないけどクォータニオンか。他になにかあるんかな?
問題は単純に宣言のない関数呼び出しのため起こるバグだった。… 宣言がないくせにコンパイル通る時点で使えないな、 もっと良いコンパイラが欲しい。
関数名が違うだけの中身は同じ二つの関数。 パラメータも同じはずなのになぜか結果が違う。コンパイルオプションか? コンパイラのバグか?なんだろ?じっくり調べるか。
畏まった設計書とまではいかなくても 設計するときは通常、紙に書いている。ユーザーインターフェースはこうするとかあーするとか。
個人的意見になるけど、 人が使うツールを作るときは まず設計から入るべきだ。 (効率も悪いし、拡張性にも乏しいし、使い勝手も変わってくると思う。)自分で作って自分で使うだけなら問題ないが…