#5 式と文

式と文について

プログラミングには多くの場合「式」と「文」があります。

ただし、なにが式で、なにが文かという点については、プログラミング言語によって異なります。 例えば大抵のプログラミング言語に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の引数だとみなされます。


  1. この例ではxよりyが大きいかどうかについて、yが0より小さい(つまり負数)場合は-1を掛けて正数にしようとしています。

  2. もっともこれは現在使われている普通のコンピュータでは、というべきかもしれません。一次方程式を解くということが非常に重要になるスーパーコンピュータの場合は複合演算が可能なプロセッサを持っていても不思議はありませんから…