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

GPGPU(General Purpose computing on GPU)

西尾さんが最近ブログでCUDAについて書いていてちょっと調べてみた。CUDAはNVIDIAが開発しているGPGPUをするための言語を含む統合環境らしい。ちなみにGPGPUはグラフィック描画のためのGPUを汎用的な目的で使用するための技術。NVIDIAのCg、OpenGLのGLSL、Di…

exe2py

メモ。あとで試す。 適当なブログ: py2exeで作成されたファイルの逆コンパイラ作った (http://d.hatena.ne.jp/xor0x35/20081219/p1)

動的言語とオブジェクト指向

クラスおよび継承の意義は以下のものだと思う。 ポリモーフィズム(インタフェース) カプセル化(名前空間) マルチプルインスタンス Mix-in(集約、委譲) Pythonなどの動的言語では基本的にはDuckTypingなのでインタフェースという考え方がない。Python3.0ではA…

アーカイブ

PythonでJavaのjarのようなアーカイブを作成する方法がないかと思って探して唯一zipimportというのを見つけた。しかしsys.pathにzipファイルを追加しないといけないのが面倒。他にもっと良い方法はないのだろうか?結局、まとまったライブラリを配布するには…

メソッドのself (4)

メソッドの第一引数にselfを指定する1つのメリットを見つけた。Guidoさんも言及していたかもしれないがメリットは、foo.meth(arg)を、Foo.meth(foo, arg)と書けることである。これは、高階関数として使う場合にメリットがある。 例えば、複数のsetのオブジェ…

メソッドの動的追加

Grな日々(uehajの日記): Expandoとは何か (http://d.hatena.ne.jp/uehaj/20080323/1206242516) コメントで教えてサイトでExpandoに関して多少理解できたが、相変わらず混乱する。ルールをきちんと理解する必要があると感じた。以下のようにExpandoを継承する…

クロージャのレキシカルスコープ

インスタンス変数とローカル変数の参照するときの書き方は同じなので、クロージャのレキシカルスコープは非常に混乱しやすいと思った。例えば以下の例。まずはaをローカル変数とした場合。foo内のaはローカル変数で、f.a=2のaはプロパティということだと思う…

プロパティとフィールドとメソッド

nobusueの日記: Grails Code Reading 第13回資料更新しました (http://d.hatena.ne.jp/nobusue/20081128/p1) オブジェクトインスタンスのクラス名 obj.class.name オブジェクトのプロパティ/メソッド/フィールド一覧 obj.properties obj.class.methods.name …

関数とメソッドとクロージャ

Groovyに関して少し調べた。GroovyもRubyと同様、関数という概念はどうやらないっぽい。すなわちトップレベルで定義すると関数でなくクラスのメソッドとして定義される。メソッドとクロージャだけである。また、メソッド内でメソッドを定義するのもエラーが…

メソッドとクロージャとオブジェクト

ときどきの雑記帖 i戦士篇: Rubyについて Part 33 (http://www.kt.rim.or.jp/~kbk/zakkicho/08/zakkicho0811c.html#D20081125-5) メソッドとクロージャに関して、 表層的には ・ブロックが関数と同等でない(ブロックをとれないなど) ・内部関数(Schemeのinte…

メソッドのself (3)

mopemopeのおらっちゃ富山県民やちゃあ: selfの話 (http://d.hatena.ne.jp/mopemope/20081128/p2) デコレータの問題点を挙げて頂いた。ありがとうございます。 def deco(fun): def meth(arg): #このselfって?? self.val = "decorator" return self.val ret…

メソッドのself (2)

メソッドのselfに関して再考してみる。selfをなくすためにPythonに互換性を持たせる必要があるということは、ここでは無視する。 和訳 : なぜPythonのメソッド引数に明示的にselfと書くのか (http://coreblog.org/ats/translation-of-why-explicit-self-has-…

llvm(Low Level Virtual Machine)

llvmの存在を知った。時代はここまで来ていたのか。C言語はますますマシン語に近くなると思われる。生のCで書いても最適化が必要になるので、下手をしたらllvmで動かした方がパフォーマンスが上がるかもしれない。 py2llvmというのがあるらしいが、期待でき…

メモ

『Effective Java 第2版』が11月27日に出版される模様。 ドラマ『ブラッディ・マンデイ』でハッキングにPythonが使われている模様。見れば良かったorz。Pythonもっと流行るかな。

メモ

ハッカーに憧れてたダケのオマエらに捧ぐ(序+目次)- Eloquent JavaScript (http://d.hatena.ne.jp/hamatsu1974/20081120/1227128791) 【Lesson2】 JavaScript の基本を叩き込め:値、変数、制御フロー(前半)- Eloquent JavaScript (http://d.hatena.ne.…

メモ

後で読む。 正規表現エンジンを作ろう(1) (http://codezine.jp/article/detail/3039/) 正規表現エンジンを作ろう(2) (http://codezine.jp/article/detail/3154/) 正規表現エンジンを作ろう(3) (http://codezine.jp/article/detail/3158/)

プログラミング言語の動的性

最近、言語の動的性が非常に重要ではないかと思っている。C++やJavaでも大きいアプリを組む場合は汎用性を持たせたい部分を動的な仕様にする。その意味で、DLLやCOM(など。他はあまく詳しくないので分からない)、Javaのリフレクションは非常に重要だと思う。…

seven things I hate about my favorite language Python

5個じゃ足りなかったので7個。参考: http://www.kt.rim.or.jp/~kbk/zakkicho/08/zakkicho0811b.html#D20081112-4 ブロックがファーストクラスオブジェクトではない 静的型付けがない 関数とメソッドの関係 無限の扱いが弱い 文字列フォーマットが見づらい i…

文字列結合のパフォーマンス

Efficient String Concatenation in Python (http://www.skymind.com/~ocrow/python_string/) 2.5.2でテスト。 import time def profile(func): def foo(*a, **k): t = time.time() r = func(*a, **k) print '%s: %g sec elapsed' % (func.__name__, time.ti…

シーケンスとイテレータのまとめ

Pythonのデータ並びはシーケンスとイテレータの2種類ある。どこまでの操作で関数を実装すれば、引数として受け取れるという観点から操作をまとめる。ここで考える具体的な型は、list型とstr型のみとする。バージョンは2.5.xとする。引数で受け取る値をLとす…

Cython 0.10リリース

11月8日に0.10をリリースした模様。以前のバージョンは、0.9.8.1.1。前のバージョンとの差分情報は見つからなかった。 少し前に自分のブログでCython + ctypesのコンボに関して考えていたが、よく考えたらCythonの中でC/C++の関数を呼び出せるのでctypesを使…

Groovyのオブジェクト指向

Groovy本を読んでいてGroovyのオブジェクト指向機能は変わっていて面白いと思った。例えば以下。 Groovy way to implement interfaces (http://groovy.codehaus.org/Groovy+way+to+implement+interfaces) クロージャでインタフェースを実装するらしい。まだ…

Cython + ctypes = 最強コンボ?

Cythonのファイル.pyx内では、Pythonの関数をdefで、Cの関数をcdefで定義する。Cythonで作成したものをPythonから呼びだすには、Cythonで作成した.pydファイル(Cythonから自動生成された.cファイルをPythonのDLL化したもの)をimportして使用する。test.pydな…

multiprocessingの時間計測

Intel Core2 Duo CPUマシンでmultiprocessingモジュールを使用した場合としない場合の実行時間を比較した。Pythonは3.0を使用。2.6でもOK。 from multiprocessing import Process import time def fib_n_times(cnt): for i in range(1, cnt+1): print('%d =>…

プログラミング言語Cyan

takuto_hの日記: Cyan, Yet Another New language (http://d.hatena.ne.jp/takuto_h/20081022/1224665176) プログラミング言語Cyan (http://www.geocities.jp/takt0_h/cyan/index.html) Cyan(さいあん)は私の中でLisp + Pythonというイメージで機能的には面…

Cythonのパフォーマンス

2chの「pythonがこの先生きのこるには」というスレでfibでCythonがかなり遅い結果になっていたので調べてみた。 Pythonは、2.5.2、Cythonは、0.9.8.1.1を使用。 以下は、psycoを使用した通常のPython。 1.157秒。psycoを外すと 19.844秒。 # pyfib.py def fi…

メモ

C/C++とPythonの連携 pythonとc++のインターフェイスの比較 swig boost.python ctypes http://d.hatena.ne.jp/niitsuma/20080209/1203184397 C or C++でPythonを拡張する方法 (または C or C++ でPython Extension modulesを書く) http://spamalot.dip.jp/lu…

メモ

渋日記: 「[翻訳]Pythonを使って2MBのメモリで100万の数値をソートする」 (http://sky.ap.teacup.com/shibu/69.html) やはりバイナリはstructモジュールでなくarrayモジュールなのか。3.0でもstructモジュールはなくなってない。あとはバッファリングを自前…

tkinter

Python 3.0でTkinterモジュールが標準ライブラリからドロップしたと思ったら、tkinterモジュールに名前が変更されているだけだった。Pyhon以外何もインストールしなくても使えるのでやはりwxPythonよりも手軽。 しかし、Tkinter調べていたらドラッグ&ドロッ…

UMPC

小さくて安いノートパソコンがあると聞いていたがUMPC(ウルトラモバイルPC)というのか。エイサー社のAspireone AOA150-Bwが価格comで46,200円だったけど、3万円切るくらいになったら携帯電話感覚でセカンドPCとして買おうかな。しかし解像度が1024×600しかな…