Python
- 2009年02月03日 19:37
買ってみました。最初はRubyにするつもりだったのですが、僕が使っているテキストエディタEditraがこの言語で書かれていること、国内では作者が日本人というRubyに押され気味なこと、世界的に見てもRuby on Railsの影響で最近は以下略、という理由でPythonを選びました。後二つについては普通Rubyを選ぶ動機になりそうなものですが、なんか逆にそれだけ追い風が吹いていると選びたくなくなってしまって。
2,3年前にPerlであっさり挫折した僕ですが、今度はちゃんと習得できるでしょうか。
Python 2.xと3.0の違い
- 2009年02月03日 22:42
そしていきなり躓く。
買ってきた本はPython 2.5以下のバージョンを対象にしているのに対して、僕がインストールしたPythonのバージョンは3.0。そこまで違いはないだろうし最新版を、と思ったのですが、実は3.0は後方互換性を捨てるほどの改革を行ったバージョンだったようです。
しかしまあ、問題は単純な話でした。2.xでは
print 'abc'
と書けば
abc
という結果が得られるところだったのですが、3.0以降ではこれに括弧をつけて
print ('abc')
と書かなければならなく、いままでの書き方だとエラーが返ってくることになります。
いきなり躓いて先行きが不安になってきましたが、早い段階でこういう違いがあることに気づけた、というように、ポジティブに考えることにします。
Python 2.xと3.0の違い(2) Unicode文字列
- 2009年02月04日 16:30
2.xでは、Unicode文字列を扱うとき、
# coding: utf-8
print u"いろは"
あるいは
# coding: utf-8
print unicode("いろは", utf-8)
というようにエンコードを指定し、Unicode文字列であることを示すコードを書かなくてはいけませんが、3.0では普通にUnicode文字列が通ります。
print ("いろは")
ただし、これは文書をUTF-8で保存した場合のみで、Shift_JISなどほかのエンコードで保存した場合はしっかり指定してやらなければいけません。
# coding: shift_jis
print ("いろは")
Python 2.xと3.0の違い(3) input()
- 2009年02月04日 16:57
なんだか当初の予想に反して次から次へと出てきます。
これまでPython 2.xでinput()と書いていたものは、Python 3.0ではeval(input())と書かなくてはいけません。また、これまでのraw_input()をinput()で表します。
この変更の意味は僕の理解度じゃちょっとわからないのですが、とりあえずメモ。
敗走
- 2009年02月04日 22:42
その後も次々と僕の理解できるレベルを超えたバージョン間の差異(例外処理の書き方とか。とりあえず文字列例外は使わないように……。)が出てきたので、Pythonのバージョンを2.6に落としました。3.0はある程度全体像をつかんでからにしよう。
そもそも、3.0というのは昨年12月にリリースされたばっかりのバージョンなので、関連する文書も少ないですし、初心者向けの移行ガイド的なものも見当たりません。まあ普通初心者は移行とか考えないだろうけど。
で、2.6というのは、HTML/XMLでいうXHTML……とはやや方向性が違いますが、2.5以前と3.0の橋渡しをするためのバージョンで、両方の書き方を受け付けてくれます。たとえばprintでいうと括弧があってもなくてもOK。(raw_input()とinput()の挙動はどうなってるんだろう?)
ということで、とりあえず理解できた部分は3.0に準拠して書くことにします。そうすれば本格的に3.0に移行するとなったときにprint式(文)の括弧を閉じ忘れてエラー、なんていうことにならないはず。(そういえばperlでは”=”(左辺の変数に右辺の値を代入)と”==”(左辺と右辺が等しい)で何度もコケました。if(x=0)とか。)
これまでのPython日記は、後からバージョンを落としてやらなきゃならない時に役に立つように、と思って書いていたのですが、どうやらバージョンを上げるときに役立ちそうです。
二冊目
- 2009年02月08日 22:15
前の本がわかりづらかったとかそういうわけでもないのですが、基本的なことについてもう少し詳しい解説が欲しかったので、評判の高い『みんパイ』こと『みんなのPython』を買ってみました。
これは『Python プログラミング入門』よりも古い本なので、バージョン2.4を対象に書かれていますが、僕が学びたいのは2.5で追加された三項式とかちょっと便利な例外処理とかでなく、もっと基本的な文法だったり概念ですから、特に問題はないハズ。
メモリ増設
- 2009年02月11日 10:15
メモリが足りなくなってきました。Firefox / iTunes / Last.fmなんかを常時起動していたのに加え、液晶モニタを買って表示領域が増えたので、画面端には常にPidginでTwitter。更にEditraとコマンドプロンプトが立ち上がると、900MBを軽く超えてきます。Firefoxでタブを増やしたときなど、突発的には1,000MBを超えることもあって、物理メモリ量に1MB弱程度まで接近したりも。(FoxAge2chからbbs2chreaderを複数起動したときなんか、「890…900…バカな!まだ上がるだと?!」感が味わえます。)
これはまずいということで、価格が物凄い勢いで下がっているDDR2メモリを購入しました。I-O DATA SDX667-1Gx2/EC(簡易包装版)。PC購入と同時に買ったI-O DATAの512MBのメモリが今まで普通に動いてくれているので、今回もI-O DATAに。標準価格では11,700円ですが、簡易包装版だとだいたい3,000円前後で買えるようです。僕はちょうどクーポンもあったので、Amazon.co.jpで買いました。3,080円-200円。二年半前に買ったときは512MBで10,000円前後だったような。いい時代ですね。単に型落ちしただけのような気もするけど。
サイトで確認してもしっかり動作対象に入っているので問題ないとは思いつつも緊張しましたが、やっぱり問題なく起動しました。
ついにメモリの容量がCPUのクロック周波数を超えた!
もしこのまま新Mac miniなりミドルレンジMacなりが発表されなかったら、次はSSDに手を出してみようかと思ってます。現時点で120GBが20,000円ちょっと。もうちょっと値下がりしてくれないかな。
CPUは……。Pentium M 780なら換装できそうな気がしないでもないですが、素人判断ですし、そもそもCPUまでアクセスできるかもわからないし、危険なのでやめときます。CPUまで買うならデスクトップを一から組んだ方がコストパフォーマンスも高い気がする。



