こんにちは!nanaです。 PyQにチャレンジしている方から、こんなお話を聞きました。
for vegitable in vegitables
…in
どっちにどっちを入れるのか分からない!」- 「日本語と英語は順序が逆だから混乱する」
- 「forって『〜のために』じゃないの?」
これについて、現在第一線で活躍しているプログラマーの方からも、 「僕も中一からプログラミングしていたから気持ちわかる」というコメントがありました。
Pythonは「可読性の高い言語」と言われていますが、その成り立ちが英語なので 英語の文法と同じ書き方の場合、説明が省かれてしまっていたりします。 (そういえば、わたしも初めてfor文に触れた時はどっちがどっち?と混乱した記憶があります)
特に前置詞は、英語が苦手な人がつまづいたきっかけだったりすることも多い内容です。 一歩戻って、プログラムに使われている英語を解説しつつ、日本語と図で説明しよう!というのがこの記事の企画です。
この記事の概要
対象者
- Python初学者で、for文を学んだことがある人(前半でおさらいもしています)
- 英語が苦手!という人
記事を読むのにかかる時間
- 約6分
日本語で書いたfor文見せて!という方は、目次からまとめをお読みください。
for文の解説
まずはfor文についてプログラムらしい説明をしましょう。おさらいですね。 PyQ(https://pyq.jp)では、for文についての解説は以下のようになっています。
for文は同じ処理を繰り返し行う場合に利用します。
for文 = 繰り返し はプログラムを学習し始めた時にまず聞くことになる説明だと思います。
for文の例
以下は、for文を利用した、リストを表示するプログラムです。 for文を利用して、リストの要素を前から順に1つずつ表示しています。
入力内容
# 一週間の曜日が入ったリストweekを定義します。 week = ['月', '火', '水', '木', '金'] # リストweekの内容を1つずつ表示します。 for day in week: print(day)
実行結果
月 火 水 木 金
ここで、英語の前置詞がわからない問題が出てくる
ここまで、なるほどなるほど…と読み進めるのですが、いざ自分で書こうとすると 「あれ、inの前後ってどっちがどっちだっけ?」と感じる人も出てくるのではないでしょうか。
すこしだけ英語の勉強をしましょう
前置詞は色々な和訳がつくことがあり、英語が苦手な人が特に苦手意識を感じやすいです。 まずは前置詞をイメージで捉えられようになると、前置詞(の名前がついている演算子)を使った処理を思い描きやすくなります。
A in B
「Bの中にAがすっぽりと含まれている」 というイメージが、A in Bの意味あいです。
Bは、範囲だったり、箱や部屋のようなものだったり、時間だったりしますが、「囲まれているもの」というイメージです。 プログラムでfor文を考える時の日本語は「AがBの中にある」とすると、語順の混乱がなくていいと思います。
なんでAが先にくるの?
「A in B」の代表的な日本語訳は「Bの中にあるA」となり、日本語とは語順が逆になってしまいます。 これが混乱の元になるのですが、どう考えればよいのでしょうか。
このような語順になる場合がほとんどなので、英語は日本語と語順が逆だよ! とパターンで覚えてしまってもいいかとおもいます。
ただ、英語がなぜそういう語順になりやすいかというのは、「言いたいことを、なるべく言いたい順でならべたがる」=「大事なこと(結論、主題など)を先に言いたがる」という性質があるためです。
for文の例でいうと、
となります。仕組みを理解して覚えるのもいいかもしれませんね。
for x
forは、「〜の為に」や「〜の間」という、全然意味が違う(ように思える)訳がつく前置詞です。
これは、矢印をイメージするとわかりやすいです。
for は、 before(前方)が由来の前置詞で、「あるところから前に向かった矢印」というイメージを表します。
forの後にくる語句の位置はそんなに厳密ではなく、「なんとなくその矢印方向にあるもの」ぐらいで捉えておくとよいです。
例題のfor文の場合、「AがBの中にある」という状態のはじまりからおわりまでの矢印の中に含まれているイメージでしょうか。
このような場合、日本語は「〜の間」と考えるとわかりやすそうです。
プログラム for day in week:
に戻りましょう
例題のプログラム for day in week:
は、ここまでの説明から、日本語にすると
「 dayがweekの中にある間 」となりました。だいぶわかりやすくなりましたね。
Pythonのfor A in B:
は、AがBの中にある間、以下の処理を行ってねという意味の命令文だとわかります。
値を取ってきたあとの動きは、その下の行で指示をしてあげます。
for day in week: #ここより下にdayの値を取ってきたあとの動きを書きます。 #今回はprintで1つずつ表示させています。 print(day)
まとめ
今日の内容を日本語で書いてみましょう
この図を作っていて、英語圏の人にとっては、こういうメモをそのまま書けば動いてくれるのがPythonなんだなー、と改めて感心してしまいました。 そのような意味で、とてもPythonは可読性が高いのです。
とはいえそれぞれの動きを理解していればPythonは英語圏の人にとってだけ使いやすい言語というわけではありません。
プログラムのコマンドとして、「こういう動きのものだ」と覚えたあとは、やっぱりとても見やすいのがPythonだと思います。
英語が苦手でも、初心者の時に丁寧に理解していくことで、複雑な処理になってきた時にも活かしていけるのではないでしょうか。