読者です 読者をやめる 読者になる 読者になる

まっしーの貯蔵庫

思考のゴミ箱

【Python】イミフな言葉を自分なりに整理

僕はプログラミングが苦手である。これを言うのは4回目くらいだろうか。

なぜ苦手かというと原因はいろいろあるが、一番最初に苦手意識を持ってしまったときに感じたのは「用語がいちいち抽象的でわかりにくい」ということだと思っている。
例えば、pythonを習い始めたときに最初の方でぶち当たった壁。

"モジュール"

英語で"module"と訳す。訳せてねえじゃねえか。

ということで、公式?のヘルプページを見る。

(以下引用)
モジュールは Python の定義や文が入ったファイルです。ファイル名はモジュール名に接尾語 .py がついたものになります。モジュールの中では、(文字列の) モジュール名をグローバル変数 __name__ で取得できます。例えば、お気に入りのテキストエディタを使って、現在のディレクトリに以下の内容のファイル fibo.py を作成してみましょう:
(ここまで)

6. モジュール (module) — Python 3.5.2 ドキュメントより)

今読めば「ああー…」というくらいに理解できるけど、プログラミングを触り始めた頃にこんなもの読んだ時は「意味わかんねえーよ死ねバーカ!」ってなるしかなかったものである。
すまないが、マジでわからんのよ。
他にも例はたくさんあるけど、後で喋る。

で、"モジュール"の具体例を見ても"numpy"、"matplotplib"のどこがモジュールなのかわからなかったのである。

ということで、1年前の僕のようなプログラミング用語わからん難民をこれ以上生み出さないよう、以下にプログラミング特有の言葉をできるだけ身近な例によって説明する。
なお、pythonの用語に絞ってるので、そこはご勘弁ください。


【モジュール】
潜在能力。普段はその能力を使えないが、人間に宣言(あるいは、命令)されると突然使えるようになる。
"matplotlib.pyplot"というモジュールで説明する。

普段、pythonはグラフを描くことができない。だから

X = [1,2,3,4,5]
Y = [2,4,6,8,10]
plt.plot(X,Y)
plt.show()

なんてコードを書いても

NameError: name 'plt' is not defined

と、「なんだよpltって。知らねえよ」と怒られる。

ところが、pythonはグラフを描く能力を奥底に秘めている。普段はそれを発揮しないのだが、人間から「それ、使え」と言われると使えるようになるのだ。
つまり、

import matplotlib.pyplot as plt

という一文を最初につけるだけで、グラフを描いてくれる。
as plt の部分は、"matplotlib.pyplot"っていちいち書くのめんどいからpltって略させて。の意味である。

だから、もし君が西木野真姫ちゃん推しならば

import matplotlib.pyplot as maki

と書けば真姫ちゃんの名前を呼びながらコードを書くことができる。もしかして、これ、真姫ちゃんに「グラフ書いて〜」などと命令している感じになるんだろうか。
悪くないかも。

少し話がずれたが、要するに、pythonはグラフを描くという"matplotlib.pyplot"という名前の潜在能力を持っている。モジュールとはこういった潜在能力の総称である。

【会話モード】
Macの場合、ターミナルで
python
とタイプしてエンターキーをパチーンと叩くと会話モードに移行する。
どういうことかというと、普通は何らかのエディタを用いて

import matplotlib.pyplot as plt
X = [1,2,3,4,5]
Y = [2,4,6,8,10]
plt.plot(X,Y)
plt.show()

と書いたファイル"makichandaisuki.py"を用意して、ターミナルで実行するとスクリプトを全て実行しようとする。
したがって、スクリプト内に一箇所でもエラーがあると、多くても、エラーのあった行の直前までしか実行されない。

一方、会話モードは一行ずつ実行する。ので、

>>>import matplotlib.pyplot as plt
>>>X = [1,2,3,4,5]
>>>Y = [2,4,6,8,10]
>>>plt.plot(x,y)

まできてエラーを起こしても、Y=の行まではパソコンが覚えていてくれる。

この様子が会話しているように見られる。だから「会話モード」という名前がついている。

【配列】
そのうち、扱い方を含めてちゃんと書く。僕はリストの処理は比較的慣れているが、配列の処理は不慣れなのである。
pythonにおいてリストと配列の違いって分かりにくいと思う。だって、グラフ書くとき、どっちでもいけるし、似てるじゃん。
(そう思うのは僕だけなんだろうか)

単純に言うと、リストは「数字または文字を一列に並べただけ」のもの。
一方、配列は「行列」である。線形代数で散々扱う、あの行列だ。
線形代数の教科書の初っ端の方で、行列の定義を見て欲しい。おそらく、”〜このような配列をm×n行列と定義する”という表現があると思われる。配列という言い回しは、ここからきているのだ。
したがって、配列はどんな形でも構わない。1×10でも、3×3でも、5×2678でもいい。たまたま1行の配列に関してはリストと形が一緒に見えるだけなのである。

なんで配列と訳したのか…行列の方がわかりやすいだろう…
日本にpythonを導入した人が英語が苦手だった、ということにでもしておこう。


二日連続で更新。珍しい。