「Python 3.0」は目標を達成したか?

Python Software Foundationは、アプリケーション開発用の動的言語であるPythonの最新バージョン「Python 3.0」をリリースした。Python 3.0は新しい機能や手法を採取り入れており、従来版とは互換性がない。

» 2008年12月09日 07時05分 公開
[Darryl K. Taft,eWEEK]
eWEEK

 Python Software Foundation(PSF)は12月3日、Python言語の最新版「Python 3.0」をリリースした。

 「Python 3000」(Py3k)とも呼ばれるPython 3.0は、同言語の新バージョンであり、2.x系リリースとは互換性がないとPSFでは説明している。

 PSFによると、バージョン3.0ではPython言語そのものは従来と基本的に同じであるが、辞書や文字列といった組み込みオブジェクトの動作方法が大幅に変更されたほか、不評だった機能の多くが削除された。また、標準ライブラリの構成も重要な数カ所で変更されたという。

 Python言語の作者であるグイド・ヴァンロッサム氏はeWEEKの問い合わせに対して、「Python 3.0の最大の特徴は、Unicodeのサポートが大幅に改善されたこと、収集した“ゴミ”を処分したことだ」と語った。

 ヴァンロッサム氏は12月4日付のブログ記事で次のように述べている。

 「バージョン2.6との比較でいえば、Python 3.0は意図的に下位互換性をなくした最初のリリースとなるものだ。通常のリリースよりも多くの変更が施されており、すべてのPythonユーザーにとって重要な変更も多い。しかし、これらの変更に慣れてしまえばPythonがそれほど大きく変わっていないことが分かるだろう。基本的には、既知の不便な部分や欠点を修正し、たくさんの古いゴミを除去しただけだ」

 「Python 3.0は、Unicode文字列と8ビット文字列ではなく、テキストとバイナリデータというコンセプトを採用している」とヴァンロッサム氏は説明する。「すべてのテキストがUnicodeになったが、エンコードされたUnicodeはバイナリデータとして表現される。基本コンセプトがこのように変更された結果、Unicodeやエンコーディング、バイナリデータなどを扱うコードはほとんどすべて変更する必要がある。この変更は改善である。2.xの世界では、エンコードされたテキストとそうでないテキストの混在に関係したバグが多数あったからだ」

 ヴァンロッサム氏は3月のブログ記事で、「Py3kへの移行の際には、APIの互換性を損なうような変更を行わないように」と開発者に注意を促した。

 ヴァンロッサム氏は次のように付け加えている。

 「噂は本当だ。Python 3.0では互換性がなくなる変更が行われるが、APIに対しては互換性を損なう変更をしないようにお願いする(特に、ほかの人が利用するライブラリを維持している場合)。APIを変更する必要がある場合には、3.0に移行する前に行っていただきたい。つまり、Python 2.5、必要ならばPython 2.6向けに新しいAPIを組み込んだバージョンをまずリリースするということだ。(もしくは、新機能を追加せずに3.0に移行した後でAPIを変更しても構わない)」

 同氏はさらに説明を加えている。

 「なぜかといえば、ユーザーのことを考える必要があるからだ。例えば、アイマという名前の木材伐採人が製材所の管理用にWeb 2.0アプリケーションを導入したとする。アイマは、あなたが開発した素晴らしいWeb 2.0フレームワークを気に入って使っている。さて、アイマはPy3kにアップグレードしたいと思ったとしよう。彼はあなたがフレームワークをPy3kに移植するまで待つ。そして彼は定められた手順にきちんと従い、2to3ツールをソースコードに適用し、テストを始める。テストが失敗したときの彼の絶望を想像していただきたい。プログラムが壊れたのは、あなたがAPIを変更したせいなのか、それとも彼のコードがPy3kに対応していなかったからなのか、彼には判断しようがないのだ」

 「一方、あなたがAPIを変更せずにWeb 2.0フレームワークをPy3kに移植した場合には、アイマが原因を絞り込むのがずっと簡単になる。2to3ツールを実行した後で彼が遭遇するバグは、間違いなく彼のコードに含まれているものであり、彼は(たぶん)デバッグと修正のやり方を知っているはずだ」とヴァンロッサム氏は述べている。

 ちなみに、Pythonという言語の名前は、英語でニシキヘビを意味する「python」に由来すると思っている人が多いが、実際にはそうではない。英国のコメディ集団「モンティ・パイソン」に敬意を表して付けられた名前なのだ。

 WikipediaのPythonの項目には次のような説明がある――「Python 3.0開発者の重要な目標は、Pythonを楽しく使える言語にすることである。このことは、その名前の由来(テレビのコメディ番組『空飛ぶモンティ・パイソン』)、サンプルコードにモンティ・パイソン関連の題材が使われる習慣、そして遊び心のある入門書や参考書などに反映されている。例えば、パイソンの説明書でよく使われるメタ構文変数は、伝統的なfooとbarではなく、spamとeggである」

関連キーワード

Python | スクリプト言語


Editorial items that were originally published in the U.S. Edition of “eWEEK” are the copyrighted property of Ziff Davis Enterprise Inc. Copyright (c) 2011. All Rights Reserved.

注目のテーマ