2006-01-01から1年間の記事一覧

Joel on Software

今日は結局ほとんど勉強時間をとれず先輩から借りた「Joel on Software」を少し読んだだけ。エッセイ本は結構面白いが、今の自分の仕事にはほとんど役に立たないと思う。勉強の方向性の参考になったり、気晴らしにはなるが。年末年始休暇はほとんど勉強でき…

直感的な回転

直感的な回転を実現するにはオイラー角による回転でなく、クォータニオン(四元数, しげんすう)による回転をしなければならないことが分かった。オイラー角による回転ではジンバルロックというものが発生してしまい直感的ではなくなる。クォータニオンの解説…

関数の引数渡し

C#

Cで関数の引数は値渡しであるとよく書いてあるが、Cではそれで十分であるが、C#などの場合、それでは言葉足らずだと思った。変数には値型と参照型の2通りあり、渡し方も値渡しと参照渡しの2通りあるので2x2で4通りの渡し方(の可能性)がある。きちんと…

ワンライナーのノウハウ集

面白い記事を見つけた。 Pythonでワンライナーを作成する際のノウハウ集 http://www.nishiohirokazu.org/blog/2006/08/python_12.html 少し凝ったプログラムを作ろうとした時に実践でも結構使えそうな感じがする。時間を見て勉強するつもり。

Javaのオープンソース化

ついにJavaがオープンソース化。しかもGPLとは驚き。 http://d.hatena.ne.jp/t_yano/20061113/1163440273 Javaがオープンソース化して面白くなりそうな気もするが、でかい言語だし、色々手を出していると中途半端になるので、やはり勉強する言語は、Pythonと…

カメラの直感的回転

OpenGLでカメラの直感的回転の方法が分からない。「ゲームコーディングVol.1」にやり方が載っていたが、Direct3Dのやり方なので、OpenGLでのやり方は分からない。OpenGLでは行列をstaticな変数で管理しているため行列を取り出せない(と思う)が、直感的な回転…

マイクロソフトの技術

C#

最近少しづつC#を勉強しているが、DLLを簡単に参照できるのがかなりすばらしい。マイクロソフトの技術は難しいのでいつも勉強するか迷うが、C#はかなり良さそう。Javaも色々本を買い込んだが、自分の中で仕事で使わない場合は勉強する必要ないという結論に達…

C# graphics library

OpenGLをC#から利用する方法を色々調べたが、フリーで手に入るC# graphics library(CsGL)というのが良さそう。結局自分でゼロから作るのはかなり敷居が高そうなのでライブラリを利用することにした。http://csgl.sourceforge.net/ 付属のサンプルは知識不足…

WindowsでのGUI

OpenGLを勉強しているのは、自分の仕事に関係しているフリーのFEMのPre/Postソフトを作りたいからで、3Dの描画の部分はOpenGLをC言語で組もうと思っているのだが、GUIをどうするかが悩む。とりあえずOSはWindows限定にするつもりで、カスタマイズ言語として…

座標変換

OpenGLを少し勉強して、座標変換の基礎がやっと分かった。OpenGLでは行列の状態などのデータを自分で管理せずにOpneGLの内部の変数を利用して管理する。staticなデータ、つまり行列を保持する「スタック」で変換の行列を管理している。現在操作対象の行列は…

ソースを読む際の変数のデータ型の判別に関して

おとといの問題をもう少し考えてみる。例えば、ソースを読んだ時に、関数に引数として渡された変数のデータ型が何かを判別する方法を考えてみる。また、そもそも判別する必要があるのかも考えてみる。 まず、判別方法だが、きちんとした型を知るには、ソース…

細かいことで最近気づいたことのメモ

クラス定義の意味 クラスを定義する意味は、1つには関数が定義できるというところにあると思うが、それ自体あまり重要であると思えない。以下の2つが重要だと思う。また考え方が変わるかもしれない。 データをまとめられる(Cの構造体としての意味) 演算子…

オブジェクト指向最高再考

オブジェクト指向は流行った。だからオブジェクト指向はすばらしい!プログラミングはオブジェクトを中心に考えるべき。本当だろうか?関数型言語はブームである。だから関数型の考え方はすばらしい!処理を中心に考えるべき。どっちだろうか?私はどっちも…

TurboGears

「Rapid Web Applications With TurboGears」という洋書をamazon.co.jpの洋書のコーナーで購入した。予約時期が早かったのか、領収金額が¥5016だったのに対し、今アマゾンのページ見たら¥4591になっていた。 早く申し込んだ方が損をするなんてアマ…

珠玉(しゅぎょく)のプログラミングの第II部までの感想

第II部まで読んだ。本の中に第III部から面白くなると書いてあったが、第II部までは比較的細かい話が多いと感じた。実際の業務でのアルゴリズムの工夫の話がメインであるが、マイナーだが実践の話なので面白い。逆に体系的な話とか、すぐに使えるテクニックと…

実践Python

実践Python http://www.cbook24.com/bm_detail.asp?sku=4886484602 http://www.amazon.co.jp/gp/product/4886487602/ref=pd_ecc_rvi_3/250-8382914-9906617 またPython本が出るらしい。目次からするとかなり基本的な内容なので買うつもりはないが、何で基本…

マイクロソフト展開早すぎ

Windows Vistaには搭載されないらしいが、PowerShellという次世代のコマンドプロンプトみたいなのがあるらしい。言語も付いていてWSHの後継というイメージかもしれない。私が気に入ったのは、ファイル表示がdirでもできるし、lsでもできるという点である。エ…

コーディングのポイント

言語に依存しないコーディングのポイントを以下に示す。 データ構造、アルゴリズムを単純化する 依存関係を単純化する 汎用的な処理を切り分け、汎用的な処理の割合を増やす 汎用的な処理と汎用的でない処理の切り分けは、高階関数、Rubyのブロック構文、カ…

昨日の感想の再考

Domain Specificな(開発対象の分野に特有の)ベースのライブラリをクライアントに安全で使いやすいように設計・実装するのは難しい。それによりアプリ側に近い部分(上位階層の部分)の処理のロジックも良い意味で自由度が減って(つまり誰が作成しても似たよう…

シーケンスの一部の扱い

私が疑問だった「シーケンスの一部を使いまわしできないか?」に関して自分なりに結論が出た。とりあえず、id:perezvonさんが補足してくれたのでそれも参考にする。 http://d.hatena.ne.jp/perezvon/20061103 http://d.hatena.ne.jp/perezvon/20061106 http:…

昨日メモした記事に関して

気になったところがいくつかあった。 経験の浅いプログラマにとって,適切なアルゴリズムで繰り返したり,適切なリソース管理を実装したりすることは容易ではありません 後半部分はともかく、前半部分は重要だろうか?確かに例で挙げていた木構造のデータを…

記事のメモ

まだ読んでないが、面白そうだったのでメモ。読んだら感想書くつもり。 Rubyを仕事に使うべし! Part1なぜ仕事で使うとうれしいのか http://itpro.nikkeibp.co.jp/article/COLUMN/20060919/248312/

Haskell覚えること多すぎ

Haskellを久しぶりに勉強したが、覚えることが多すぎる。例えば、Listに関して先頭に要素の追加が、3:[2,1,0]だったり、n番目の要素の取り出しが、list !! nだったり、objがlistの要素かの判定が、elem obj listだったり…。また型チェックが厳密過ぎて整数型…

S氏へのインタビュー

C++

Bjarne Stroustrupインタビュー: http://www.kh.rim.or.jp/~nagamura/misc/stroustrup-interview.html http://hp.vector.co.jp/authors/VA000092/jokes/strup.html 久しぶりに読み直した。真実が見え隠れしているようで面白い。 C++ が時間の無駄だというこ…

リスト処理に関して

作るものの種類にもよるがプログラミングはリスト処理がかなり多い。自分でクラスを作れば、そのオブジェクトのリストを処理したりする必要がある。関数型言語はリスト処理に特化しているように思える。だからこそ、C#やPythonなど最近の言語には積極的に関…

方向性に関して

方向性に関してはいつも悩む。悩んでも結論は出ないのでいつも自分の勘やその時に興味で方向を決定する。ここで言う方向とは何を勉強すべきかの方向である。 先輩にはいつも「業務知識を勉強しろ」と言われ続けている。しかし私は未だに業務知識を勉強する意…

タグ付けという考え方

以前はハッシュの本質は「分割して検索範囲を減らす」ことにあると思っていた。これはその通りであると思うが、別の見方をしてみると、「タグ付け」がハッシュ(というデータ構造)のアルゴリズムの本質であると思う。 タグ付けとは、すなわち、ある複数のオブ…

シーケンスの一部をシーケンスのコピーを作らずにビルトイン関数に渡す方法(続き)

# -*- coding: utf-8 -*- class Slicer(): def __init__(self, seq, st, ed): self.seq = seq self.st = st self.ed = ed def __getitem__(self, idx): return self.seq[self.st + idx] def __setslice__(self, start, end, sub): self.seq[self.st:self.ed]…

シーケンスの一部をシーケンスのコピーを作らずにビルトイン関数に渡す方法

まだ自己解決していないが、問題提起だけ再度まとめておく。リストや文字列などのシーケンスの一部をビルトイン関数(やビルトインクラスのメソッド)、例えば、reversed()やcmp()などの引数やオブジェクトとして使用する場合、新たなインスタンスを作らないと…

reverse()メソッドの問題点

list.reverse()は破壊的メソッドなので、新しいインスタンスを作らずにリストの一部を反転したい場合はどうすれば良いのだろう? やっと「みんPy」を読み終わり、「珠玉のプログラミング」を読み始めたのだが、かなりの良書。その中で、文字列やリストの初め…