2008-11-01から1ヶ月間の記事一覧

メソッドの動的追加

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) クロージャでインタフェースを実装するらしい。まだ…