アカウント名:
パスワード:
タレコミ: NumbaはPythonのバイトコードで動作しており正しい訳: NumbaはPythonのバイトコードを操作するため
今のPythonはスクリプトを一旦バイトコードに変換してから実行しているのか。知らなかった。だったら「Python自身がJITコンパイラで、NumbaはJITオプティマイザ/アクセラレータ」と説明した方がいいんじゃないかと思った。
> 今のPythonはスクリプトを一旦バイトコードに変換してから実行しているのか。知らなかった。
pythonはかなり昔から スクリプトをバイトコード(仮想マシンコード)に変換して実行していました。# 私が初めて触った 1.5.2 でも中間コードを使っていた。
numba はこのバイトコードを llvm を使ってネイティブコードに JIT コンパイルするモジュールです。
だから、> 「Python自身がJITコンパイラで、NumbaはJITオプティマイザ/アクセラレータ」は明白な間違い。Python は「バイトコードコンパイラ、兼バイトコードインタプリタ」、Numbaが「JITコンパイラ」です。
だとしたら元コメの「NumbaはPythonのバイトコードを操作するため」も間違いってことですね。Numbaはバイトコードを読み込むだけで操作(書き換え)はしないってことだから。
Numba operates on Python bytecode and this is essentially a moving target.
「バイトコードを手術している」だが、意訳して「バイトコードを扱う」あたりが誤解が少ない。実際のところ、バイトコードレベルでトレースを取ったりしてるだろうから、「操作している」も間違いではないだろう。
うーん、バイトコードに対してはトレースなどのリードオンリーなのに「操作してる」はちょっと納得できないです。
それにしてもjavaなどのバイトコードと違って作成するのもそれを解釈して実行するのも同じプログラムで外部から参照されることを考慮する必要はないからバージョンごとに固有の定義でいい、ところがNumbaはそれを取り出してネイティブコードに変換してると。けっこう強引なことをしてるんですね。
バイトコード列であるトレースをNumbaが作成するのだから、「バイトコードを操作する」であっているでしょう。operates on Python bytecodeとあるのだから、一般的な英文の解釈としては、別にPythonがコンパイルしたものには限りません。
あなたが何が何でもPythonの処理系が作ったバイトコードそのものを変更しないと「バイトコードを操作する」とは認めないというのなら知りませんが、そりゃもう言葉が通じませんね。
Pythonが作ったかどうかはどうでもいいです。トレースしてもその結果をバイトコードに反映するわけでないのならソースとして利用しているだけなので「バイトコード"を"操作」とはいえないです。この場合の operates on Python bytecode は「バイトコードによって操作(処理)を行う」でしょう。
どんなJITコンパイラであれ、元のバイトコードの一部を「JITコンパイルしたネイティブコードの呼び出し」で置き換える必要があります。バイトコードのフェッチの度にテーブルを引くとオーバーヘッドが大きすぎるからです。これは操作とは言いませんかそうですか。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
Stableって古いって意味だっけ? -- Debian初級
タレコミ訳がおかしいから、わけが分からないのか... (スコア:3, 参考になる)
タレコミ: NumbaはPythonのバイトコードで動作しており
正しい訳: NumbaはPythonのバイトコードを操作するため
Re: (スコア:1)
今のPythonはスクリプトを一旦バイトコードに変換してから実行しているのか。知らなかった。
だったら「Python自身がJITコンパイラで、NumbaはJITオプティマイザ/アクセラレータ」と説明した方がいいんじゃないかと思った。
うじゃうじゃ
Re: (スコア:0)
> 今のPythonはスクリプトを一旦バイトコードに変換してから実行しているのか。知らなかった。
pythonはかなり昔から スクリプトをバイトコード(仮想マシンコード)に変換して実行していました。
# 私が初めて触った 1.5.2 でも中間コードを使っていた。
numba はこのバイトコードを llvm を使ってネイティブコードに JIT コンパイルするモジュールです。
だから、
> 「Python自身がJITコンパイラで、NumbaはJITオプティマイザ/アクセラレータ」
は明白な間違い。
Python は「バイトコードコンパイラ、兼バイトコードインタプリタ」、Numbaが「JITコンパイラ」です。
Re: (スコア:1)
だとしたら元コメの「NumbaはPythonのバイトコードを操作するため」も間違いってことですね。
Numbaはバイトコードを読み込むだけで操作(書き換え)はしないってことだから。
うじゃうじゃ
Re: (スコア:0)
Numba operates on Python bytecode and this is essentially a moving target.
「バイトコードを手術している」だが、意訳して「バイトコードを扱う」あたりが誤解が少ない。
実際のところ、バイトコードレベルでトレースを取ったりしてるだろうから、「操作している」も間違いではないだろう。
Re: (スコア:1)
うーん、バイトコードに対してはトレースなどのリードオンリーなのに「操作してる」はちょっと納得できないです。
それにしてもjavaなどのバイトコードと違って作成するのもそれを解釈して実行するのも同じプログラムで外部から参照されることを考慮する必要はないからバージョンごとに固有の定義でいい、ところがNumbaはそれを取り出してネイティブコードに変換してると。
けっこう強引なことをしてるんですね。
うじゃうじゃ
Re: (スコア:0)
バイトコード列であるトレースをNumbaが作成するのだから、「バイトコードを操作する」であっているでしょう。operates on Python bytecodeとあるのだから、一般的な英文の解釈としては、別にPythonがコンパイルしたものには限りません。
あなたが何が何でもPythonの処理系が作ったバイトコードそのものを変更しないと「バイトコードを操作する」とは認めないというのなら知りませんが、そりゃもう言葉が通じませんね。
Re: (スコア:1)
Pythonが作ったかどうかはどうでもいいです。
トレースしてもその結果をバイトコードに反映するわけでないのならソースとして利用しているだけなので「バイトコード"を"操作」とはいえないです。
この場合の operates on Python bytecode は「バイトコードによって操作(処理)を行う」でしょう。
うじゃうじゃ
Re:タレコミ訳がおかしいから、わけが分からないのか... (スコア:0)
どんなJITコンパイラであれ、元のバイトコードの一部を「JITコンパイルしたネイティブコードの呼び出し」で置き換える必要があります。バイトコードのフェッチの度にテーブルを引くとオーバーヘッドが大きすぎるからです。これは操作とは言いませんかそうですか。