原著者: | Guido van Rossum |
---|---|
原文: | http://www.artima.com/weblogs/viewpost.jsp?thread=227041 |
原文公開日: | March 17, 2008 |
私がこの機会を利用して、ここを見ている方々に本当に伝えたいのは、Python3000にモジュールを移植するときにAPIを変更してはいけないということです。ここを見ている方は以下の話は聞いたことがあるでしょう。Python3.0はAPIが変更になり、後方互換性がなくなる、と。しかし、開発者の方々(特に他のユーザから使用されているライブラリの)はAPIを変更してはいけません。もし変更する予定があるならば、3.0に移植する前に行ってください。あるいは、3.0に変更なしで移植したあとに行って下さい。
なぜそうしなければならないのか?それはユーザのためです。Ima Lumberjackは彼の製作所の管理のためのweb 2.0アプリケーションを実装していました。Imaはあなたの作ったすばらしいweb 2.0フレームワークのユーザです。ImaはアプリケーションをPython3000に移植しようとしています。彼はあなたの作ったフレームワークがPython3000に対応するのを待ち作業を開始しました。彼は書籍に書いてある移植の方法をすべて正確に行いました。2to3のツールを使用し、テストを行いました。そこでテストが失敗してしまったらImaがどんなにがっかりするか、想像できますよね?失敗した原因がAPIの変更にあるのか、アプリケーションの移植が不十分だったのか判別できません。
もしあなたの作ったフレームワークにAPIの変更がなければ、Imaの仕事はもっと焦点のはっきりしたものになります。2to3ツールを実行したあとに残っているバグはImaのコード側のバグです。彼はその部分の修正方法ははっきり理解しています。
あなたのライブラリが他のライブラリから使用されていたとすると、さらにこの問題は重みを持ってきます。トラブルの広がりは加速度的に大きくなります。もし、仮に、これらのモジュールの中にPython3000への移植を諦めたものが出てきてしまうと、多くの他のライブラリやアプリケーションの移植の妨げになっていしまいます。
もういちど強く言っておきます。 Python3000への移植と同時にAPIを変更してはいけません。
P.S. 3.0finalリリースは現在2008年の9/3に予定されています。詳しくは PEP361 を見て下さい。
Pythonを使って2MBのメモリで100万の数値をソートする