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

属性に関して

属性は以下で扱いが異なる。 クラス 関数、モジュール クラスは属性の扱いが特殊であるが、関数およびモジュールの属性は何も特殊化されない。クラスの属性は以下の特性を持つ。 関数を定義して参照するとメソッドに自動昇格する アンダースコアを先頭に2つ…

メタクラス

メタクラスに関してよくまとまっているのでメモ。後できちんと勉強するつもり。 時間城年代記 メタクラスで遊ぶ(1) (http://blog.livedoor.jp/kikwai/archives/51274308.html) メタクラスで遊ぶ(2) (http://blog.livedoor.jp/kikwai/archives/51280093.html)…

たくさん型を作ることが推奨

yukobaの日記: Scala, JavaScript, Java の違い (http://d.hatena.ne.jp/yukoba/20080211) Scala はたくさん型(クラス)を作ることが推奨されている言語です。...(snip)...ちょっとでも何か違う時は型を作り、複雑な問題は型を変えることで、より小さな簡単…

メモ

今鋭意勉強中なのでまだ良く分かっていないが、とりあえずメモ。面白そう。 yukobaの日記: ナップサック問題をHaskellとScalaで (http://d.hatena.ne.jp/yukoba/20080202/p1)

後継者

Matzにっき: Google TechTalk (http://www.rubyist.net/~matz/20080220.html#p01) 「Python 3.0のリリースが完了したら、次はどうするの」と聞いたら、「引退する」とのこと。すぐに「冗談だよ」と言ってたけど、後継者については考えはじめているようだ。「…

式と文

k.inabaさんの「一時変数のために使用している謎のforループを取り除く」というネタに反応した自分の2/19の日記のネタをさらに研究してみる。 Pythonでは式と文が明確に分かれている。Rubyは、「a = b」は式だが、Pythonでは文である。 Pythonの文には以下の…

次世代言語Scala

今まではC言語から新しい言語を作るのが主流だったが、今の時代VM上で動く言語から新しい言語を作るのが主流になりつつある。その中でもScalaは抜きん出ていると思う。yieldを使うと外部イテレータでなく内部イテレータになることや"1 + 2"が"1.+(2)"の意味…

Pythonでmixin

昨日のまとめ。 まずモジュールを利用する場合はモジュールに関して以下を知っておく必要がある。 sys.modules[module_name] = module_objで、モジュールを追加することができる。ここで、module_objには「属性を持ったオブジェクト」なら何でもOK。つまり、…

キャストのタイミング

odz buffer: Genericsとcast (http://d.hatena.ne.jp/odz/20080221/1203611137) cast が入るのはメソッドを呼ぶ側であって、実装側ではないです。 やっと理解できました。odzさんありがとうございます。 それにしてもJavaのGenericsは貧弱すぎる。呼び出し側…

キャストの仕組み

昨日のつづき。 odz buffer: Generics と template (http://d.hatena.ne.jp/odz/20080220/1203513392) 昨日の日記に対してodzさんがコメントしてくれたみたいで、TがObjectになってしまう理由は分かった。以下、自分の理解。 仮にTがDuck型しか受け取らない…

モジュールによるmixinの実現

Pythonでも実はRubyのmixinのようなことが可能である。 def mixin(template, mod_name): import new, sys m = new.module(mod_name) m.__dict__.update(**template()) sys.modules[mod_name] = m def template(): def foo(self): return 'foo' def bar(self,…

Scala

色々ブログを見ていたらScalaすごいということに気がついた。単なる関数型言語など勉強している場合ではないと思った。Cleanの記事をさらっと勉強して早急にScalaに取り組まなくては。以下Wikipediaを見てすごいと思った点。 オブジェクト指向、関数型言語、…

メタプログラミング

わなDの"Template in D"項の最後の締めで、 つまり、「文字列処理する関数を普通のD言語で書く」「コンパイル時にはガンガン文字列処理」「最後にmixinでコード生成」というスタイルのメタプログラミング。 とあったがD言語が活躍できる開発ってどういうのが…

Java GenericsによるDuck Typing

3-c1. Template in D: Duck Typingみたいなもの (http://www.kmonos.net/alang/wnd/topics/template.ja.html#duck) JavaのGenericsで同様なことをやろうとした。 class Duck { public void quack() { System.out.println("gaaa"); } } class Foo { public vo…

"汎用配列を作成します"エラーと戯れる

どう書く?org: アレイのuniq (http://ja.doukaku.org/comment/1029/) import java.util.Arrays; import java.util.LinkedHashSet; public class Unique { public static Object[] toUniqueArray(Object[] array) { return new LinkedHashSet(Arrays.asList(a…

メモ

__setattr__ 定義内で、self.n = v 文は禁止。object.__setattr__(self, 'n', v) を使用。 sys.modules[__name__] = _const()。モジュールをクラスのインスタンスに置き換えて、ある機能を実現。

PyBuilder

図書館断想: デフォルトエンコーディング、py2exe (http://d.hatena.ne.jp/katz3/20080214/1203007014) py2exeのGUI版PyBuilderは使用したことないがpy2exe単体で何の不満もないのでとりあえず試してみたことない。何やらうまくいかない場合もあるようでとり…

リスト内包表記

d.y.d: 内包表記 (http://www.kmonos.net/wlog/82.html#_1753080218) リスト内包表記で一時変数を使用したいがために無駄なforループを1つ増やしているということだが、問題点は以下の3つ。 式しか書けないので代入文が書けない sys.stdinから読み取ってspli…

プログラミング言語の難しさ

最近ふと気がついた。Pythonは言語仕様がシンプルである。しかし決して複雑なことができない訳ではない。Pythonは1つの言語仕様で複数の機能を実現している。だから言語仕様がシンプルなのに色々なことができる。逆に、新しい機能を増やすときに、その機能の…

スコープの決定方法

とりあえず: [Python][お勉強] Python入門(33) - 変数がローカルスコープに属するかどうかの内部的判断 (http://atkonn.blogspot.com/2008/02/python-python33.html) ここまではローカルスコープに属するかどうかは「代入」した時点で決定するとのことだった…

CPython Extensions for IronPython

Matzにっき経由でメモ。 CPython用拡張モジュールをIronPythonから呼び出す (http://journal.mycom.co.jp/articles/2008/02/08/ironpython_cext/index.html) これでIronPythonも結構使えるようになりそう。やはりJythonよりIronPythonブームが来るのだろうか…

旧スタイルクラスと新スタイルクラス

『Pythonクックブック 第2版』の6章 オブジェクト指向プログラミングのイントロダクションを読んでいて重要な部分があったのでメモ。 従来のクラスではsuperは使えないので、多重継承を重要な用途で使うことは実質一切してはならない。..(snip).. たとえば…

2Dグラフィックライブラリ

id:Megumi221さんの日記で初めて知ったが、matplotlibという2Dグラフィック用のライブラリはかなりすごい。少し勉強してみようと思った。cairoを使用して簡単なツールは作成したことがあるが、matplotlilbの方が良さそう。最新版は0.91.2みたいだが、完成度…

Haskell Hackathon

巷ではHaskell Hackathonが開催されるようなのでSchemeもどきを勉強しようと思った。Haskellもどきも時間の関係上後で勉強するつもり。 どう書く?: Schemeもどきの実装 (http://ja.doukaku.org/129/)

Javaのニーズ

最近『Java Generics And Collections』でJavaを少しずつ勉強している。自分の知識は1.4で止まっていたが、1.5でGenerics周辺が言語仕様に入ったことによりコードが格段にすっきり書けるようになった。グラフィック関係を勉強したいが、書籍もたくさん出てき…

設定ファイル

Vim

Windows版のVim 7.1をインストールした。以下調査したまとめ。 $HOMEはユーザのホームディレクトリ。$VIMはインストールフォルダ(デフォルトだとC:\Program Files\Vim)。 Windows版では、設定ファイルとして_vimrcファイルなどのファイル名を使用することが…