プログラミングの勉強をしていると、関数や引数など普段生活する上で馴染みの薄いワードがよく出てきます。
そもそも関数や引数とはなんぞや?
今回は、専門用語をなるべく使わずに説明します!
定義ってなに?
定義とは、言葉の意味を決めることです!
例えば、
「ファシってすごいよね」という文がある。
この文だけだと、ファシってなに?ってなりますよね。
そこで、
ファシ = 芸能人
という定義を与えればこの文を解釈する事ができます。
このように=(イコール)で意味を与えることを定義するといいます。
そして、定義は共通していないと意味のやりとりをできません。
例えば、
ファシ = 果物
と思っている人と
ファシ = 芸能人
と思っている人がいたら話が噛み合いませんよね。
このように言葉には、定義が共通していないと解釈が異なってしまうのです。
ではなぜ関数の話をする前に定義の話をしたのでしょうか。
- まず日本語は自然言語の一種です。
- 自然言語は言語の一種です。
- 言語は記号列(文字の集まり)の一種です。
プログラミング言語も、言語なので定義という考え方が使えます。
この定義という道具がなければ関数というワザが使えないのです!
変数ってなに?
変数とは、式に名前をつけることです。
ファシ = 芸能人
芸能人という式に、ファシという名前をつけました。
定義の項目で書いた式と全く同じですよね?
「定義する」ということは、プログラミングにおいては変数を作ることなのです。
じゃあ関数ってなに?
関数とは変数を変換するものです。
どのように変換するかを「関数の定義」といいます。
「関数の定義」があれば「関数の適用」という行為ができるようになります。
「関数の適用」とは次のような記号列の置き換えルールのことです。
置き換えルール
f a = aを使った式
と関数の定義をしたとき、
f 式 を aを使った式
に置き換える。
この置き換えルールをつかえば、()
を使うことで複数回、式を置き換えれます。
たとえば、g (f 式A)
は次のように置き換えられます。
fとgの定義を次のようにしたとき
f a = 変数aを使った式F
g a = 変数aを使った式G
- g (f 式A)
- g 変数aを使った式F
- 変数aを使った式G
と置き換えることが可能です。
問題
f ○ = □
と定義したとき、
f ○
を置き換えるとどうなりますか?
答えは、□ですね!
単純ですが、これが「関数を定義」ということなのです。
まとめ
今回の記事をメタ的にいえば、
いま私は、関数という意味を定義したことによってプログラミングによって関数を使えるようになった。
この記事自体が関数の定義なんです。
ってなにいってるか意味不明になってきました^^;
専門用語を使わずに用語を説明するというのは難しいことなのです(たぶん)