タイパー的 Python と Perl の比較

お久しぶりです。特にブログをやめたくなったわけでもなく、いつものようになんとなく半年間何も書かなかっただけです。今日もなんとなく書きたくなった話を一つ。

結論:タイピング好きが typing.ioPerlPython 打ち比べたらこうなりました。

Perl (Mooseのコード) Lesson7 を打った結果


※これまで書いたことのあるPerlのコードは約200行

Python (Mercurialのコード) Lesson5 を打った結果


※これまで書いたことのあるPythonのコードは2万行〜


typing.io は実際のコードを20〜30行の単位に分割して、それぞれを一つの Lesson という形にして打っていくタイピングソフトです。当然、Lesson によって打ちやすさが異なりますが、初見で順に Lesson を打っていってスコアがこなれてきたあたりの結果が上記になります。WPM (Word Per Minute) というのは打鍵速度で、Perl が380打鍵/分、Python が475打鍵/分という結果になります*1

なんでこんなことをしているかというと、最近ちょっとした作業の自動化に Perl を使おうと思い立ったのがきっかけです。僕としては普段から使っている Python を使いたいところだったのですが、いかんせん商用システムに Python が「意味もなく入っている」ことってそんなにないので Perl という選択肢になりました。シェルスクリプトでも十分実現可能な作業なのですが、ちょっとした文字列操作のために sed など別の体系を覚える必要が出てくるのも面倒くさい、ということで(もう少し汎用性の高そうな)Perl を選びました*2

それで、クリスマスイブの日曜日に Perl のドキュメントとにらめっこしていたわけです。本当にクソみたいな仕様だと思いました。【「やり方は一つじゃない」が Perl のモットーです】だ?後方互換*3を保とう保とうとした結果、しょうもないやり方がたくさん残ってしまっただけじゃないのか?という印象を受けました。
例:Perlにおけるファイルハンドルの概念を理解する - サンプルコードによるPerl入門

まあ、それでも短く書けることは良いことです。Python正規表現を使った処理を書こうとすると面倒くさいですが、Perl ならたいていのことが1行で完結します。ただ、そういう短さって読みやすさを犠牲にしてるよね、というのは以前から感じていました。Perl には特殊変数が多く、他の手続き型言語をどれだけ使ったことがあったとしても、パッと見理解不能です。

じゃあ、その短さってなんのためにあるの?速く書けるの?という疑問に対する回答が今日の結果です。

もちろん、てきとーにやった結果ですので、信頼性とかありません。創作タイピング*4とコピータイピング*5を比較しても意味はないかもしれません。が、少なくともコピータイピングにおいては、これまでの経験を除いたとしても Python の方が格段に速く、打ちやすいと感じました。

この記事を読んだあなたもプログラマーならぜひお試しください。Perl マスターかつ Python 初心者の人だったら、逆の結果になるかもしれません。あるいは、(タイプウェルの)すべキーマスターがやったら、Perl の方が速く打てるかもしれません。

*1:1 Word を5打鍵と換算します

*2:実際は Python が入っていたかもしれませんが、単に Perl に興味があったというのもあります

*3:Perl4 で動くコードが Perl5 でも動く、といった互換性

*4:タイピングする内容を思考しながら行なうタイピング、ブログを書くとかプログラムを書くとかにおけるタイピングのこと

*5:すでに存在する内容をそのまま入力していくタイピングのこと