2006-07-01から1ヶ月間の記事一覧

zip関数

zip関数は、リストの横の並びを縦に見てくれる。 a = (1, 2, 3) b = (4, 5, 6) c = (7, 8, 9) print zip(a, b, c) #=> [(1, 4, 7), (2, 5, 8), (3, 6, 9)] a = (0, 1, 2, 3) print zip( a, a[1:]+(a[0],) ) #=> [(0, 1), (1, 2), (2, 3), (3, 0)]これは、1…

型なし言語の欠点

以前から動的言語の型宣言がないことの欠点は何かを疑問に思っていたが、2点ほど気がついたのでメモ。問題が発生するのは以下のケース。 既に使用されている変数を使おうとしてスペルをミスした場合 ある変数を追加するときに、同じスコープ内に同じ名前の…

Direct3D

OpenGLを少し勉強したが、資料が少なく勉強が難しい。3D CGはDirect3Dでやることにした。 お遊びなのでとりあえず動けば良いことにした。いつものごとく完成する前にやる気なくなりそうな勢いもあるので。 追記: OpenGLに比べて、Direct3Dの欠点は、Windows …

OpenGL

最近、FEMのプリポストを作りたくて、OpenGLの勉強を始めた。GUIは、wxPythonを使用するつもりだが、3D CGとGUIは共に色々選択肢はある。 とりあえず、メジャーなライブラリを使いたいので、3D CGはOpenGLでOKとして、GUIは、Tkinterが標準なので、どちらが…

XAML

最近、MSDN TVのデモでXAMLが気になっている。XAMLとは時期Windows OSで使用できるアプリケーション記述用のマークアップ言語であるが、GUIのプロトタイプを作ったり、ドキュメントの作成用としても使えるらしい。 C#やIronPythonと密に連携できるみたいなの…

OOPのメリット(再考)

OOPのメリットの「データ型の抽象化」に関してもう少し分かりやすい表現を考えてみた。結局、以下のように考えられる。 書く側(supplier側)は、複数のクラスを独立して実装できる 呼び出し側(client側)は、違った型のクラス(のオブジェクト)を同じものとして…

O(n) vs O(nlogn)

Pythonは、インタプリタ型の言語なので、インタプリタのオーバーヘッドに気をつけなければならない。以下のようなパフォーマンスのテストを行ってみた。 import time def min1(lst): min_v = lst[0] for v in lst: if min_v > v: min_v = v return min_v def…

C++はグッドか?

C++

はてなの日記経由でC++に関する面白いサイトを見つけた。 Bjarne Stroustrupインタビュー http://www.kh.rim.or.jp/~nagamura/misc/stroustrup-interview.html この記事は明らかに作り物で、C++に対する皮肉だと思うのだが、目の付け所は面白い。私はC++は勉…

変数に関して

6月20日の自分の日記でPythonの変数の概念を勘違いしていた。私は、整数型の値を持つ変数は、値型として扱われると思っていたが、そうではなかった。つまり、型によって値型と参照型を内部で自動的に分けていると思っていたが、それは間違いだった。 以下の…

データの状態遷移

OOPの構造的な側面を考えてみると、設計時に以下の2つの手順を踏むことになる。 step1) オブジェクト(の範囲)を決める step2) オブジェクト間の関係性を決める しかし、構造的な側面よりもデータの状態遷移の方が重要に思える。 結局、デバッグの作業という…

GCは偉大

プログラミングをしていると、メモリ管理がかなり面倒くさいし、バグも起きやすい。 メモリ管理は本来やりたいこととは全くの別モノで、単なる実装上の都合である。 GCのあるプログラミング言語はすばらしい。自動的にメモリ領域を拡張してくれるリストなど…

Web系の動向など

Web

最近よく聞くWeb2.0というのは明確な定義がなされてないらしい。私はWeb系は専門ではないので、AjaxやRuby on Railsが流行っているくらいにしか知らないし、JSPとかまだ使われているのかさえ知らない。PHPもかなり使われているらしいが、実際どれくらい使わ…