対話型インタプリタとは?メリットを解説!【Python】
大学の講義中に計算量の多い課題が出た時がありました。
電卓と紙を使って、手書きでやるのもいいのですが、せっかくなのでプログラミングをして計算してみようと思いました。
C++でずらずらコードを書いて、計算結果はちゃんと出てくれたのですが、意外に大変。
そのときに思ったのが、「対話型インタプリタを使いたい」でした。
今回はそんな大学の講義中に出た電磁気学の課題を使って、対話型インタプリタのメリットについて解説していこうと思います。
この記事ではこのようなことについて解説しています。
- 対話型インタプリタとは?
- Python対話型インタプリタのメリット
それでは解説していきます。
対話型インタプリタとは?
対話型インタプリタとは、
インタプリタ型言語の特徴である「※逐次翻訳」を利用した、
一問一答のようにプログラミングできる機能です。
※一行一行ソースコードを機械語に翻訳していくこと
インタプリタ型やコンパイラ型というのがわからない方はこちらをご覧ください。
そもそも「対話」って、相手と向かい合って話し合うイメージですよね。
一つ質問したら一つ回答が返ってくる。
対話型インタプリタのイメージはそれに近いです。
逆に対話型でないというのは、何個も質問を用意して一気に問いかける。
そして全部一気に回答が返ってくる。
そんな感じです。
VisualStudioのPython対話型インタプリタの画面はこんな感じ。
実際にVisualStudioを使っている方でPythonをインストールしている人なら、Alt+Iで対話型インタプリタを起動できます。
試してみてください。
特徴がわかるように少しコードを打ってみます。
Hello, world!!と表示されました。
このように、打ちこんだコードを一回一回実行してくれるのが特徴です。
まるでパソコンと対話しているようですね。
そして、値を代入した変数aやbはそのコードを実行した後でもメモリに残ります。
機能が増えた電卓みたいです。
対話型インタプリタのメリット
対話型インタプリタにはいろんなメリットがあると思いますが、今回は電卓のように使える点を紹介しようと思います。
電卓のように使えるとは、結果を再利用できる点と思いついたらすぐ実行できる点を指します。
- 結果を再利用: 1+2 = 3 → 3×3 = 9 → 9-4 = 5
- すぐ実行できる: コードを打ってEnterを押せば結果がすぐ返ってくる
しかも、プログラミングでできること(例えばグラフを描くなど)が電卓の機能に入った感じです。
それでは本題に入っていきます。
電磁気学の課題を対話型インタプリタで解く
問題は以下のようなものでした。
問題自体はわからなくて大丈夫です。
ただ何個か条件があって、それを計算する問題なんだなあ程度に見てください。
通常は人間の体の全陽子と全電子は等しい。 体重50kgの人間において、全体の0.1%電子が少ない人同士が、2m離れて立っていた場合の二人に働く力[N]を求めよ。 ただし、人の体重は陽子と中性子で構成されているとし、陽子と中性子の質量、個数は等しい。また、人の体の大きさは無視(点と考える)する。 陽子1個の素電荷 e = 1.6 × 10^(-19) [C] 陽子1個の質量 m = 1.67 × 10^(-27) [kg] 真空の誘電率 ε0 = 8.85 × 10^(-12) [F/m]
これを計算するのはめんどくさかったです。
主に計算が。
なので、電卓を使う感じでC++を開いてみました。
コンパイラ型言語(C++)で解いた場合
#include <iostream>
#define PI 3.14
using namespace std;
int main() {
//初期条件
const double m = 1.67 * pow(10, -27);
const double e = 1.6 * pow(10, -19);
const double DC = 8.85 * pow(10, -12);
double weight = 50;
double r = 2;
//計算
double x = weight / (m * 2);
double q = e * x * 0.1 / 100;
double F = q * q / (4 * PI * DC * r * r);
//結果
cout << "陽子の数x = " << x << "[個]" << endl;
cout << "電荷q = " << q << "[C]" << endl;
cout << "質量" << weight << "kg距離" << r << "mの間に働くクーロン力" << endl;
cout << "F = " << F << "[N]" << endl;
}
計算結果はこちらです。
陽子の数x = 1.49701e+28[個]
電荷q = 2.39521e+06[C]
質量50kg距離2mの間に働くクーロン力
F = 1.29031e+22[N]
計算結果はあり得ない力になっていますが、仮定がおかしかっただけです。
解答としてはあっていました。
正直書いてて大変でした。
これだったら、ふつうに手書きでやるほうが簡単です。
これは得策ではなかったということですね。
次に対話型インタプリタで解いた場合です。
対話型インタプリタ(Python)で解いた場合
Python 3.7 (64-bit) 対話型ウィンドウ [PTVS 16.0.19074.1-16.0]
「$help」を入力すると、コマンドの一覧が表示されます。
>>> PI = 3.14
>>> m = 1.67 * 10**(-27)
>>> e = 1.6 * 10**(-19)
>>> DC= 8.85 * 10**(-12)
>>> weight = 50
>>> r = 2
>>> x = weight / m
>>> x /= 2
>>> q = e * x * 0.1/100
>>> F = (q**2) / (4*PI*DC*r**2)
>>> x
1.497005988023952e+28
>>> q
2395209.580838324
>>> F
1.2903102253004113e+22
>>>
めっちゃ簡単!!しかもわかりやすい!
メモリ機能の豊富な電卓といった感じです。
問題が長くなればなるほど、電卓では難しいし、何より変数名があるからわかりやすい。
この結果を使う問題や、条件が少し変わる問題にも即座に対応できると思います。
このことからわかるように対話型インタプリタは計算量の多い問題を解くのに適しています。
ほかにも機械学習にも使ってますし、いろんなものに応用が利くと思います。
みなさんもこんな風に使える場面があったらバンバン使っていきましょう。