Python 3 エンジニア認定基礎試験 無料問題 1 / 10 ・ 分野1: 1章 食欲をそそってみようか
C で書いた自社のアプリケーションで、利用者が処理を Python で書き足せるようにしたい。言語一式を新しく設計して実装することは避けたい。1章が、アプリケーションに対する拡張言語として Python を使う方法として述べているものはどれか。
- アプリケーションから、Python インタプリタを別のプロセスとして起動する
- アプリケーションを、Python から呼ぶ C の拡張モジュールに作り替える
- 利用者の Python のソースを、C に変換してアプリケーションと一緒にコンパイルする
- Python インタプリタそのものを、アプリケーションの中にリンクする
正解と解説を見る
正解: D
正解の理由
1章の「拡張性」の段落は、その気になれば Python インタプリタを C で書かれたアプリケーションにリンクして、アプリケーションに対する拡張言語や命令言語としても使えると述べている。1章の冒頭も、拡張言語を持つアプリケーションを書いていて、そのために新しい言語一式を設計・実装したくない人に向けて Python を勧めている。インタプリタをアプリケーションの中に抱えるので、利用者は Python で処理を書き足せる。
違う選択肢
「アプリケーションを、Python から呼ぶ C の拡張モジュールに作り替える」… 同じ段落の前半にある、C で新たな組み込み関数やモジュールを書いてインタプリタに追加する使い方である。主になるのは Python のプログラムで、C のアプリケーションが拡張言語を持つ形とは向きが逆になる。
「アプリケーションから、Python インタプリタを別のプロセスとして起動する」… 1章が述べているのは、インタプリタをアプリケーションに「リンク」して中に入れる形である。アプリケーションの外で別のプロセスとして動かす使い方は、拡張言語としての使い方として書かれていない。
「利用者の Python のソースを、C に変換してアプリケーションと一緒にコンパイルする」… アプリケーションに入れるのはインタプリタそのもので、利用者の Python のソースはそのインタプリタが動かす。Python のソースを C に変換してコンパイルする使い方は、1章のどこにも書かれていない。
押さえどころ
1章の「拡張性」の段落には2つの向きが書かれている。C で書いた関数やモジュールをインタプリタに追加する向き(Python が主)と、インタプリタを C のアプリケーションにリンクする向き(アプリケーションが主)である。どちらが相手を抱えるかで読み分ける。