式と文について
プログラミングには多くの場合「式」と「文」があります。
ただし、なにが式で、なにが文かという点については、プログラミング言語によって異なります。 例えば大抵のプログラミング言語にif
というものがあるのですが、PerlとJavaScriptでは「if文」であるのに対し、Rubyでは「if式」となっています。
その意味付けは一定ではありませんが、多くの場合共通事項だとみなせることもあります。
- 式よりも文のほうが括りとしては大きい
- 式は評価した結果なんらかの値を返す (文か返すかどうかは言語による)
実際、PerlとJavaScriptではif
は値を返すことはしません。 たとえば
ということをPerlですることはできません1。 ところがRubyでは実際に
と書くことができます。
式
式は「評価する」という手順を減ることで値を得ることができるものです。 例えば
という式は、評価することで6
を得ることができます。
というのは複合式になります。 この場合まず1 + 5
が評価され、6
に置き換えられます。 その後
という式を評価して16
という値を得ます。
コンピュータはこれを1 + 5 + 10
という式として評価することはありません2。これは2つの式とみなし、2回の評価を行います。
文
文はコードとして「区切り」とみなせるものです。 たとえば
というものは、Perlにおいて「2つの式をもった1つの文」ということになります。
世界への挨拶も
これもまたRubyにおけるひとつの文です。
Perlにおいては文は必ず;
で終端するというルールになっています。 RubyやJavaScriptも;
で文を終端することができますが、必須ではなく意味的に区切ることができるところで改行すると文の区切りだとみなすようになっています。 たとえば
というコードはPerlでもRubyでも全く同じ内容が動作するのですが、Rubyでは引数のなにもないメソッドprint
と、値だけの"Hello"
という2つの文があるとみなされるのに対し、Perlでは"Hello"
はprint
の引数だとみなされます。