python

プログラミング言語の優秀さと道具としての評価は別

ワシは、cgi.rb なんかが標準添付になっている Ruby に PHP を dis る資格はないと思ってる (cgi.rbの元ネタである CGI.pm を擁する Perl も同じじゃないかな)。cgi.rb は、標準添付モジュールのくせにコードが汚いし遅いし、cgi[] の戻り値が String だった…

すべてのPythonユーザが設定すべきたったひとつのこと

alias py=python

ひがさんからのありがたいお言葉

ひがさんから、ありがたいお言葉を頂戴しましたので紹介させていただきます。

高速なプログラミング言語が生み出す本当の価値

なんか、はてなブックマークとか見てると残念なコメントが多いよなー。『こんな比較は意味ない』とか『できることがまったく異なるテンプレートを並べて比較されても』とかいうやつ、何なの?「言語の速度 != アプリの速度」という主張を示したベンチマーク…

プログラミング言語の速度とアプリケーションの速度がいかに関係ないかがわかるグラフ

まずは次の表をご覧あれ。これはプログラミング言語のベンチマークとして有名な Computer Language Benchmarks Game のベンチマーク結果。上にいくほど高速で、下に行くほど遅い言語になる。これを見れば、最速な言語は C/C++ であり、Java や Haskell や OC…

Re: スクリプト言語の息の根を止めるのは案外 SSD かもな

まえのエントリのコメント欄より: flat8 2010/04/27 10:19 確実にIntelはそこまで考えていると思います。で、ある程度SSDが普及したらSSD自体の製造からは手を引くでしょうけど。 やはりそうでしょうか。さすがIntel。 ところでIntelが『SSD自体の製造から…

『使いやすいのは動的な言語だから』というのは間違い

いやー、おまいらがスクリプト言語大好きというのはよくわかった。よくわかったけど、信者はもっと落ち着いたほうがいい。 mikihoshi 「スクリプト言語の使いやすさ」のかなりの部分はスクリプト言語(動的言語)であることが担保してるんだから、「スクリプト…

スクリプト言語の息の根を止めるのは案外 SSD かもな

大変たいへん興味深い記事。全プログラマーにとって。 HDDの代わりにSSDを利用したら、リレーショナルデータベースの性能はどれだけ向上するのでしょうか? オラクルと富士通が共同検証を行い、その結果をホワイトペーパーとして先週発表しました ...(snip).…

国内レンタルサーバでの PHP/Ruby/Python/Perl/MySQL/PostgreSQL のバージョンを調べてみた

国内レンタルサーバで使われている PHP/Ruby/Python/Perl/MySQL/PostgreSQL のバージョンを調べてみた。レンタルサーバの選択基準は特にない。「レンタルサーバ」でぐぐって適当にピックアップした。最初にまとめとくと: PHP は 5.2.x が主力 Ruby は 1.8.2…

Python で複数のバージョンをサポートするのがしんどい

すでに Python 3.1 もリリースされ、また 2.7 のリリースも近いというのに、世の中ではいまだ Python 2.3 や 2.4 が現役で使われている。たとえば、サーバ用 OS としてよく使われる CentOS 5 では、Python のバージョンは 2.4 である。またレンタルサーバの …

Google App Engine ではプログラムから static ファイルを読みこめない

Google App Engine で、スクリプトから画像ファイルの一覧を取り出そうとしたけど、できなくてはまった。helloworld.py # -*- coding: utf-8 -*- import os, glob print "Content-Type: text/plain" print "" print "hello" imgdir = os.path.join(os.path.d…

Python で SyntaxError を自前で投げる

Python で SyntaxError を自前で raise するには次のようにする。 raise SyntaxError("エラーメッセージ", (ファイル名, 行番号, カラム桁数, ソース行)) やってみる。 >>> raise SyntaxError("ERROR MESSAGE", ('foo.py', 123, 2, 'x = 999')) Traceback (m…

import 文を使わずにモジュールを作成する

import 文を使わずに、任意の Python スクリプトをモジュールとして読み込む方法。こうすると、拡張子が「.py」じゃなくても読み込み可能。 import os file = 'foo.py' name = 'foo' module = type(os)(name) # (*1) module.__file__ = file execfile(file, …

はじめての Kay Framework 体験記

Google App Engine 専用フレームワークというふれこみの『Kay』を試してみる。 なお環境は Mac OS X 10.6、Python 2.6.2 (自前コンパイル)、GAE SDK 1.3.2。

Python で現在のファイル名と行番号を調べる。

Python では、現在のファイル名を表す __file__ はあるけど、行番号を表す __line__ がない。現在の行番号を調べたかったら、スタックフレームオブジェクトを触る必要があるみたい。以下がサンプルコード。__LINE__ and __FILE__ functionality in Python? -…

developerWorks の記事にある Python コードを修正してみた

IBM が運営している技術サイト developerWorks には Python の記事がちょくちょく載っているんだけど、Python コードのインデントが崩れていて大変悲しい (最初は日本語版だけかなと思ったら、もとの原文からしてインデントが崩れまくってた)。 そこで、勝手…

__builtins__ はモジュール? 辞書?

__builtins__ って必ずモジュールだと思ってたけど、そうでもないらしい。foo.py: import sys print "(foo.py): __builtins__: ", type(__builtins__) print "(foo.py): sys : ", type(sys) bar.py: import foo import sys print "(bar.py): __builtins__: "…

そのコードがわかりにくいのはクロージャのせいではない

せっかくPythonの話がホットエントリに入っているのに、あまりいいサンプルとは思えなかったので、書き直してみたい。 クロージャと無名関数を使うと、こんな風に実装することができる。 import yaml def _get_from_disk(): data = open('config.yaml').read…

続: Python での組み込み型をより自然な名前にする

なんかしらんけど、前のエントリはPythonistaをたいへん刺激してしまったようだ。べつにもとの名前を使えなくするわけじゃなく、単にエイリアスを追加するだけなのに!そこで、Pythonistaのお怒りを沈静化するべく、__builtins__を汚染しないように改造してみ…

Pythonistaはtypedefすら拒絶する? (Re: Python での組み込み型をより自然な名前にする)

反論のためにこんな極端な例を出すほうがおかしい。 以下、エキスパート C プログラミングより引用。ちょっと極端過ぎる例だけど、言語独自の慣習・標準などを無視することの一つの到達点がこれだ。 「CはAlgolではない」1970年台の後半、ベル研でUNIX Versi…

ローカル変数で「L」や「D」を使うのはダメプログラマ

pashango_pさん曰く: 本当にローカル変数でlistやdictを表すために「L」とか「D」を使っていたとしたら、相当なダメプログラマですよ。 わたしはそこまでは思いませんが、pashango_pさんによると、ローカル変数名として「L」や「D」を使うのはダメプログラマ…

Re: "sep".join(list) が気持ち悪い理由

みんなー、トラックバックって知ってるよねー!? 他人のとこに長いコメント書くくらいなら自分のブログに書こうぜ! #隠れてコソコソ陰口叩かれるぐらいなら超長いコメントのほうがいいけどな!!methaneさんのコメント: えぇ、そうですね。だからスレッドのjoi…

変数名として「lst」や「dct」や「L」や「D」がどのくらい使われているか

せっかくなので、変数名として「lst」や「dct」がどのくらい使われているかを調べてみる。ターゲットは Python 標準添付ライブラリ。 ### Python 2.5.4 $ cd /usr/local/lib/python2.5/ $ egrep '\blst\b' **/*.py | lv # けっこうある $ egrep '\blst\b' **…

Re: Python での組み込み型をより自然な名前にする

ネタなのかツリなのかマジなのかさっぱり判断が付かないんだが、マジだとしたらそんなの勘弁してと思うし、ネタだとしてもはっきりそうだとわからない書き方のせいで影響される人がいたらイヤなので、あえてマジレスしとく。 jijixi's diary - Re: Python で…

Python での組み込み型をより自然な名前にする

あと10枚ぐらいスライドを減らさないとまずいことになりそうなのに、なぜかPythonネタを投下してみる。Ruby での String, Array, Hash に相当するのは、Python では str, list, dict になる (小文字であることに注意)。 困ったことに、これらは変数名として…

Python での join() は StringBuffer の代替と考えると、str.join(list) が自然なのかも

ここまで書いて思ったんだけど、StringBuffer 相当の機能がない Python にとっては、join がその代替なのかもしれない。つまりだな、Python の str.join(list) は Ruby の Array#join(str) 相当ではなくて、String#<< 相当なんじゃないか、という新しい仮説…

"sep".join(list) が気持ち悪い理由

list が必須で separator はオプションなんだから、list が receiver になるほうがどう考えても自然だろう。省略可能な separator が receiver にくるほうが不自然だ。

Python の unittest では assertRaises が Exception を返してくれない

ちなみに Python 付属の unittest では assertRaises の定義は以下の通り。見ればわかるけど、exception を返してくれない。 ## assertRails は failUnlessRaises の alias def failUnlessRaises(self, excClass, callableObj, *args, **kwargs): try: calla…

Web アプリのボトルネックはテンプレートシステムにあり

Ruby のネタがないので Python でお茶をにごす。Python の速度を 5 倍速くするという目標を掲げている unladen-swallow というプロジェクトがあるんだけど (日本語はこちら)、その中に次のような一節があった。 Unladen Swallow's benchmark suite is focuse…

Python 2.6 をインストールすると Mercurial で警告が出るのを回避する

Python2.6 をインストールすると、Mercurial で警告が出るようになった。 $ hg push /usr/local/lib/python2.6/site-packages/mercurial/sshrepo.py:64: DeprecationWarning: os.popen3 is deprecated. Use the subprocess module. self.pipeo, self.pipei, …