作者: MATSUI Fe2+ Tetsushi
日時: 2009/1/11(01:21)
Fe2+ です。

Bruce. さんのに便乗。

At Sat, 10 Jan 2009 13:52:05 +0900,
Bruce. wrote:
> 機械伯爵 さんは書きました:
[..]
> > There are more changes than in a typical release, and more that are important for all Python users.
> > ここには全てのPythonユーザにとって重要な、より多くの変更があります。
> 
> いつもあるような(typicalをこう訳すのはあれですが)リリースにあるよりも
> たくさんの変更があり、またそのような変更はすべてのPythonユーザーにとって
> 重要なものです。
> #この言い回しは改良の余地あり
> 

typical の訳は結構困ったりしますが、「通常の」「いつもの」ぐらいが妥当
な場合が多いです。

> >  
> > Nevertheless, after digesting the changes, you’ll find that Python really hasn’t changed all that much ? by and large, we’re mostly fixing well-known annoyances and warts, and removing a lot of old cruft.
> > にもかかわらず、変更を理解した後に、あなたは、Pythonが本当は概してすべてのその多くを変更しなかったと気付くでしょう。そして私達は、たいてい有名な困り事と醜いものを修正していて、たくさんの古い嫌なものを削除しています。
> 
> digesting the changes って「変更を理解」でいいんでしょうか?

# 元のメタファーを生かそうとすると「飲み込んだ」とか?

「概してすべてのその多くを」は意味が取れません。自分なら
それほど Python の何もかもが変ってしまったわけではないことに気付くでしょう
とか書きそうですが。

[..]
> > Due to time constraints this document is not as complete as it should have been.
> > 時間的制約のため、この文書は(かくあるべきとされるほど)完全ではありません。
> > 
> > As always for a new release, the Misc/NEWS file in the source distribution contains a wealth of detailed information about every small thing that was changed.
> > いつものように新しいリリースでは、ソースの配布物の中の『その他/ニュース』のファイルに、変更されたすべての小さなものに関する詳細な情報が満載されています。
> 
> Misc/NEWSってファイル名だから訳しちゃまずいのでは?

「小さなもの」しか情報が無いかのように読めてしまいませんか?

[..]
> > Note:
> > 注記:
> > 
> > * The print() function doesn’t support the “softspace” feature of the old print statement. 
> > print関数は、昔のprint文の特徴だったsoftspaceをサポートしていません。 
> 
> softspace を囲むクォートを取っちゃいけないような。
> ってソフトスペースってなんですか?
> ソフトハイフンみたいなものでしょうか?

feature を「特徴だった」と書くのは大げさな気がします。
(好みの問題ですが)

[..]
> > 
> > Views And Iterators Instead Of Lists
> > リスト(list)の代りにビュー(view)と反復子(iterator)を
> 
> 代わりに→代わりの、に代わる?
> 

イテレータは結局イテレータと書くのが大勢だと思います。

[..]
> > 
> > * Also, the dict.iterkeys() , dict.iteritems() and dict.itervalues() methods are no longer supported.
> > また、dict.iterkeysとdict.iteritemsとdict.itervaluesメソッドは、もはやサポートされていません。
> 
> 訳文の方で()が抜けているのは?

「されていません」より「されません」と言う方が無くなった感が出そうです。

> > 
> > * map() and filter() return iterators. 
> > map関数とfilter関数は、反復子(iterator)を返します。
> > 
> > If you really need a list, a quick fix is eg list(map(...)) , but a better fix is often to use a list comprehension (especially when the original code uses lambda ), or rewriting the code so it doesn’t need a list at all.
> > もしあなたが本当にリストが必要なら、一番手っ取り早い方法はlist(map(...))などと修正することですが、一般的により良い修正は、しばしばリストの内包記法を用いることです(特に元のコードでlambdaが使用されているのなら)。そのようにコードを書き直せば、リスト(list関数?)は全く必要ありません。
> 
> or rewriting 〜なので、
> 
> list(map(...))のように修正するか、あるいは
> リストを使っているコードをイテレーターを使うものに書き換える。そうすれば
> (当然ですが)リストは不要になるという意味ではないでしょうか。

リストにするには list(map(...)) が手っ取り早いけど、
(lambda を使ってたりするときは)内包リストの方がいいし、
リストが必要ないように書き換えちゃってもいいね

と読みました。つまり、二通りの better な書き換え方が or で繋がれている、と。

[..]
> > * builtin.sorted() and list.sort() no longer accept the cmp argument providing a comparison function.
> > sorted組み込み関数とlist.sortメソッドは、もはや『比較関数』を引数に取ることはできません。

ここの cmp も下の key 同様引数の名前なので訳さない方が親切。

> 
> > 
> > Use the key argument instead.
> > 代わりに『key』という名称のキーワード引数に(比較関数を)渡します。
> > 
> > NB the key and reverse arguments are now “keyword-only”.
> > 注意:キーと逆ソート引数は、今や『キーワード引数のみ』です。
> > 
> > (訳注:sorted(list, reverse=True)とすると、逆順にソートできます(reverse=1でも可))
> > 

キーワードでしか指定できないという引数のタイプが増えた、そのタイプの名
前じゃないでしょうか "keyword-only" は。あとここも key と reverse はキー
ワード引数として使う名前なのでそのままの方が親切。

[..]
> > 
> > Integers
> > 整数
> > 
> > * PEP 0237 : Essentially, long renamed to int . That is, there is only one built-in integral type, named int ; but it behaves mostly like the old long type. 
> > * PEP 0237: 基本的にlongがintへ改称されました。それは、『int』という名の唯一の組み込み整数型です。しかし、殆どの『long』型と同様に動作します。
> 
> longという名称だったものが int に改称され、
> Pythonにある整数型は int ただ一つになりました。
> intとは言っても旧来のlongとほぼ同様に動作します。
> 

「intとは言っても」より「名前こそintですが」とか。

> > 
> > * PEP 0238 : An expression like 1/2 returns a float. 
> > * PEP 0238 : 『1 / 2』のような式は、浮動小数点数(float)を返します。
> > 
> > Use 1//2 to get the truncating behavior.
> > 切捨ての(動作を行った)結果を得るには、『1 // 2』を使用します。
> > 
> > (The latter syntax has existed for years, at least since Python 2.2.) 
> > (後者の構文は、 Python 2.2以降の年から存在しています)
> > 

has existed for years = 何年も前から存在しています
その後ろは「何年も」の補足(少なくとも Python 2.2 から)

> > * The sys.maxint constant was removed, since there is no longer a limit to the value of integers. 
> > sys.maxint定数は削除され、もはや整数値に上限はありません。
> > 
> > However, sys.maxsize can be used as an integer larger than any practical list or string index.
> > しかしながらsys.maxsize定数は、現実的なリストや文字列の(最大)インデックスよりも大きい数値です。
> 
> (整数値に上限がなくなったので)sys.maxintはなくなったけれども
> sys.maxsizeはまだ残っていて、リストや文字列のインデックスの最大値として
> 使えますよということでは。
> 整数に上限がないので「添え字の最大」の値というのは現実的な制約を除けば
> 存在しないのでその代わりということでしょうか。

<余談>最近自作クラスの __len__ でもこの制限以上の値を返せないことを知
りました</余談>

> > 
> > It conforms to the implementation’s “natural” integer size and is typically the same as sys.maxint in previous releases on the same platform (assuming the same build options).
> > これは、実装の『自然な』整数のサイズに適合する。そしてこれは、一般的に以前のリリースの同じプラットフォームのsys.maxintと同じである(なお、同一オプションでビルドされたものとする)

括弧内はニュアンスとして、当然だとは思うけど一応言っておく、ぐらいで、
上の訳は少し強すぎる感じがします。

> > * Python 3.0 uses the concepts of text and (binary) data instead of Unicode strings and 8-bit strings.
> > Python 3.0では、『テキストと(バイナリ)データ』の概念を、『Unicode文字列と8ビット』の代わりに採用しています。

『Unicode文字列と8ビット』は後者も「文字列」を補った方が。

[..]
> > This value-specific behavior has caused numerous sad faces over the years.
> > この値固有の現象は、年間で数多くの悲劇に直面しています。
> 
> この場合の「固有」は変換対象に非ASCIIのものが存在しているかどうかに「依
> 存」するとかでよいような。
> 

ここも over the years は「長年」とかそんな意味でしょう。
「悲劇」を残せば
長年数多くの悲劇を生んできました

> > 
> > * As a consequence of this change in philosophy, pretty much all code that uses Unicode, encodings or binary data most likely has to change.
> > この哲学的な変更の結果、ほぼ全てのUnicode、エンコーディング、またはバイナリデータを扱うコードが変更されなければならないでしょう。
> 
> 「哲学的な変更」はうーーーん
> 背中がむずがゆくなるような。

設計思想の変化、とか

[..]
> > 
> > To be prepared in Python 2.x, start using unicode for all unencoded text, and str for binary or encoded data only.
> > Python 2.xで用意すべきことは、エンコードされていない全てのテキストでUnicodeを使い始めることと、『str』はバイナリデータか、エンコードされたデータのみで使うことでしょう。

str だけでなく unicode も型の名です。

あと「用意すべきこと」というよりは「(3.0 に)備えて」「準備として」?

> > 
> > Then the 2to3 tool will do most of the work for you.
> > 次に、 2to3ツールがあなたのために作業をほとんどやってくれます。
> 
> 前段のテキストとバイナリを使い分けろを受けて、そうしておけば(Then)
> 2と3がよろしくやってくれますということかと。
> 
> > 
> > * You can no longer use u"..." literals for Unicode text. However, you must use b"..." literals for binary data.
> > あなたはもはや、 Unicodeテキストでu"..."リテラルを使用することはできません。しかしながら、バイナリデータにはb"..."リテラルを使わなければなりません。
> 

Unicodeテキスト「には」
(後ろの文と同じように)

> 
> > 
> > * As the str and bytes types cannot be mixed, you must always explicitly convert between them.
> > str型とbytes型が混同不可能なため、いつでも明示的に相互に変換する必要があります。 
> > 
> > Use str.encode() to go from str to bytes , and bytes.decode() to go from bytes to str .
> > str.encodeメソッドを使えば、str型からbytes型に変換します。そしてbytes.decodeメソッドは、bytes型からstr型に変換します。
> > 
> > You can also use bytes(s, encoding=...) and str(b, encoding=...) , respectively.
> > また、それぞれ
> > 	bytes(s, encoding=...)
> > や
> > 	str(b, encoding=...)
> > を使うこともできます。
> > 
> > * Like str , the bytes type is immutable. 
> > str型と同様に、bytes型も不変型です。
> > 
> > There is a separate mutable type to hold buffered binary data, bytearray .
> > 分割した可変型のバイナリデータバッファを保持するためには、bytearray型があります。

新しく型を分けた、ということだと思いますが、「分割した」が「バッファ」
に掛かるように読めてしまいます。
# 「バッファされたバイナリデータ」=「バイナリデータバッファ」?

> > Nearly all APIs that accept bytes also accept bytearray .
> > bytes型オブジェクトを受け入れるAPIは、ほぼ全てbytearray型オブジェクトを受け入れます。
> > 
> > The mutable API is based on collections.MutableSequence . 
> > 可変型に対応するAPIは、collections.MutableSequenceに基づいています。
> > 
> > * All backslashes in raw string literals are interpreted literally. This means that '\U' and '\u' escapes in raw strings are not treated specially.
> > raw文字列リテラル内のすべてのバックスラッシュ(日本語コードでは\)は、文字通りに解釈されます。つまり'\U'と'\u'も、raw文字列の中では特別扱いされません。

「日本語コードでは」という言い方はどうなんでしょう。
たとえばこのメールは ISO-2022-JP で、エスケープから抜けると(正確な表現
でないのはご容赦) us-ascii になってバックスラッシュで表示されているの
が正しいと思います。…とか私は言いたくなってしまいますが。

[..]
> > 
> > The 2to3 tool (see below) replaces every occurrence of basestring with str .
> > 2to3ツール(下記参照)は、basestring型の全ての事項をstr型に置き換えます。

全ての「出現」ではないかと。
# 出てきたら片っ端からやっつけるぜ、みたいな

[..]
> > 
> > There is a platform-dependent default encoding, which on Unixy platforms can be set with the LANG environment variable (and sometimes also with some other platform-specific locale-related environment variables).
> > UNIX型プラットフォームに於いては、LANG環境変数をセットすることができるため、プラットフォーム依存のデフォルトのエンコーディングがあります(そして時には、いくつかの他のプラットフォーム固有のロケールに関連する環境変数によっても……)
> 
> カッコ内の注記はLANG環境変数の直後の方が良いような。
> LC_ALLとかLC_COLLATEなどのことを指しているのでしょう?

プラットフォームごとにデフォルトエンコーディングがありますが、
Unix風のOSではそれをLANG(とかいろいろな)環境変数で変えられます。
(いわゆるカンマ which という修飾構文なので、そういう解釈のはず)


とりあえず。
-- 
MATSUI "Fe2+" Tetsushi