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

リスト、タプル、ディクショナリ

久しぶりに「初めてのPython」を読み進めた。リスト、タプル、ディクショナリの気になった点をメモしておく。 リスト ミュータブルなオブジェクト。 配列として実装されている。 「シーケンス」のカテゴリに属する。 L.append(x)と、L + [x]は違う。前者は、…

Python Cookbook

先日、洋書の「Python Cookbook」を購入してまだ未読だが、現在かなりのところまで翻訳中らしい。 翻訳状況 http://python.is-a-geek.org/cgi-bin/sechandle.cgi 日本語で読みたかったので買って損した気分である。日本語版が出たらまた買おう…。

最近のRuby本

最近気になったRuby本を挙げておく。買わないが。 洋書 Ruby Cookbook 和書 はじめてのRuby on Rails Ruby on Rails入門 かんたんRuby on RailsでWebアプリケーション開発 はじめようRuby on Rails ライド・オン・Rails Ruby on Railsを徹底攻略 Railsによる…

上位階層で使用される言語ほど寿命が短い

例えば、Perlは、PHP、Ruby、Pythonに完全に置き換えることが可能だが、C++は、Java、C#に置き換えることはできない。上位階層で使用される言語は開発サイクルが短いが、下位階層(つまりベース)として使用されるプログラムは使用期間が長いので、新しい言語…

デバッグの方法

デバッガを使用できる環境にあるのなら積極的に使用すべきだが、一般的な方法を考えてみた。以下の手順である。 1) 問題のある処理に関連するデータを知る 2) そのデータの初期化、代入、参照している箇所を見つける 3) そのデータの値を表示してみる もちろ…

ソースコードの可読性

最近あるソースを見ていて、実は多少複雑な処理でも、動きさえすれば良いソースを書くことは非常に簡単で、読みやすいソースを書くことは非常に難しいのではないかと思っている。以前はコードを書くのもそれなりに難しいと思っていたが、保守性など何も考え…

IronPython

IronPythonは、非常に気になっているが、作者はJythonと同じというのも面白い。それにしても、IronPythonにしろ、Jythonにしろ、流行っている気配は全く感じられない。 これから流行るとしたらOSがVistaになれば、CLI上でGUIの作成やテストができるので(XPで…

ハッカーと画家

ネットでいくつか読んだが、Paul Grahamのエッセイは結構面白い。特にお気に入りは、「簡潔さは力なり」である。 http://www.shiro.dreamhost.com/scheme/trans/power-j.html これを初めて読んだとき、まさに「これだ!」と思った。しかしながら、スクリプト…

みんなのPython

http://www.amazon.co.jp/gp/product/479733665X/ref=pd_bxgy_img_a/250-8382914-9906617?ie=UTF8今さら初心者向け?のPython本が出るみたいだが、どうなのだろう…。

enumerate

シーケンスのループでインデックスを使用するには以下のようにする。 >>> seq = ('a', 'b', 'c') >>> for idx, val in enumerate(seq): ... print idx, val ... 0 a 1 b 2 cenumerate(seq)の代わりに、range(len(seq))を使用しても良いのだが、enumerate()が…

SWIG

最近、SWIGというものを知った。 http://www.swig.org/ SWIGとは、Pythonなどのスクリプト言語からC/C++を呼び出すためのコードを自動生成してくれるツールである。標準のツールに入っていてもおかしくない機能であるが、実用性に関しては使用してみないこと…

GC

例外安全とは関係ないが、Pythonは、参照カウントによりメモリ管理を自動化していると最近知ってびっくりである。またもやRubyに負けたと思ったが、参照カウントでも十分なのかもしれない。 とにかくメモリ管理は面倒であるが、参照カウント程度であれば、C+…

例外安全について

C++

「Exceptional C++」の例外安全の部分を読んだが、印象に残ったのは、 メモリ管理の部分を別のクラスに切り出す という部分だった。メモリ管理は実装詳細だと思うので、常にカプセル化すべきだが、データ構造をカプセル化した上で、さらにもう一段階カプセル…

シーケンスとインデクシングとスライシング

(0, 1, 2, 3)を(1, 2, 3, 0)にする方法は、以下が一番簡単だと思われる。 >>> a = (0, 1, 2, 3) >>> a[1:] + a[0:1] (1, 2, 3, 0)結局、2つのスライシングで取り出したタプルを単に結合している。しかし、新たなタプルを作成しているので効率はあまり良くな…

データの塊を持ち歩く方法

一般的な話だが、複数のデータをまとめる方法としてすぐに思いつくのは以下の3つである。 リスト ハッシュ クラス 特に、ハッシュは処理のロジックを非常に分かりやすくしてくれる便利なデータ構造であるので、ハッシュをうまく使えるようになるだけで、可…