英語って位置引数だし、日本語ってキーワード引数だ。という気付き
英語の文法構造と日本語の文法構造の違いを、プログラミングにおける関数の引数の指定方法に当てはめて捉えられるということに気づいたので、そのことをまとめます。
はじめに
- オチないです。 見方・捉え方を提供するだけなので、特に何かに役に立つ話ではないです。
- もしかしたら英語学習で文法を理解するときの参考になるかもしれないとか、もしかしたらプログラミングにおいて関数の設計の参考になるかもしれない、くらい。
位置引数とキーワード引数
まずはプログラミング言語の関数における違いについてです。
Pythonでは、関数の引数の指定方法が2種類あります。
「キーワード引数」と「位置引数」という2種類です。
(他の言語においても同様の機能があることも多いですが、ドキュメントで明確に用語が定義されていたので、Pythonを例に出します)
位置引数
「位置引数」が他の多くの言語でも一般的な指定方法かと思います。
並べる順番によって、引数の指定が決定します。
def func(x, y, z):
print(x, y, z)
# 位置引数での渡し方
func(1, 2, 3)
キーワード引数
一方、「キーワード引数」は、どの値をどの位置の引数に割り当てるかを指定することができ、順番を自由に変更することが可能です。
# キーワード引数での渡し方。以下はどちらも同じ結果になる
func(x=1, y=2, z=3)
func(z=3, y=2, x=1)
他の言語の例として、例えば JavaScript, TypeScriptでは、キーワード引数そのものの仕様はありませんが、第1引数をオブジェクトにする指定方法によって、同様の機能を実現できます(Options Objectパターンと呼ばれるようです)。
// オブジェクトひとつだけを引数に持つ関数
function func(options) {
console.log(options.x, options.y, options.z);
}
func({ x: 1, y: 2, z: 3 });
https://typescriptbook.jp/reference/functions/keyword-arguments-and-options-object-pattern
なお、言語によっては、キーワード引数は「名前付き引数」と呼ばれることもあります。[1]
英語と日本語の文法構造の違い
ここからは自然言語の文法についてです。
こちらの動画を見て気付きを得られました。
英語
英文法を習う際によく「5文型」を習うように、英語は文中の単語の並び方が決まっている言語です。
例えば、 "I love you." を伝えたいときに、順番を変えてしまうと意味が通らなくなります。
- ✅ I love you.
- ❌ I you love.
- ❌ You love I.
どの文型になるかは、動詞によって決定します。[2]
つまり、
[誰が] love [何を]. とか、
[誰が] teach [誰に] [何を]. とか、
動詞に対して枠が決まっている形です。
この特徴から、英語を「場所言語」「位置言語」と表現することもできます。[3]
日本語
一方で、日本語では以下のいずれの文章でも意味が通ります。
- ✅ 私はあなたを好きです。
- ✅ 私は好きです、あなたを。
- ✅ 好きです、私はあなたを。
「は」や「を」のような助詞によって、単語がどのような役割を持っているかを表しています。
日本語以外には、韓国語でも同様の文法とのこと。
自然言語とプログラミング言語の対応付け
さあ、ここまでの説明で伝わったのではないかと思いますが、
「動詞=関数」 と捉えると、
「英語=位置引数」
「日本語=キーワード引数」 と捉えることができます。
英語と日本語の文法をPythonの関数で表してみたイメージ
def love(subject, object):
print(subject, "love", object)
# 英語は位置引数。順番を変えられない
love("I", "you")
def 好きです(は, を):
print(は, "は", を, "を", "好きです")
# 日本語はキーワード引数。助詞によって、順番を変えても伝わる
好きです(は="私", を="あなた")
好きです(を="あなた", は="私")
というわけでこの記事の話は以上です。
英語学習の際に「英語は位置引数だから…」と思ってみたり、
逆にプログラミングの際に「位置引数は英文法と同じだ~」と思ってみたりしてください。
-
VBE 用語集 https://docs.microsoft.com/ja-jp/office/vba/language/glossary/vbe-glossary#named-argument ↩︎
-
好きなYouTubeチャンネル、ゆる言語学ラジオの英文法回にて「文として決まっているのではなく動詞がどんな項を取るかである」という話をしているのでこちらもぜひ https://youtu.be/FeSir-QJmUs?t=137 ↩︎
Discussion