問題提起 - なでしこ3のブロック表現について
「なでしこ1」から「なでしこ3」になって、一番変わったのが、ブロック表現です。
「もし・・・ならば・・・ここまで」とか「N回・・・ここまで」のように、ブロックの末尾に「ここまで」を記述するようになりました。例えば、以下のように記述します。(なお「|」は省略できます。)
3回
| 「ワン>🐕」と表示。
ここまで。
これを実行すると、3回「ワン>🐕」と表示されます。プログラムを読んだままに実行されますね。
でも実際のところ「ここまで」って書くの面倒ですよね。
そこで、いろいろな策が練られてきました。
💧(しずく)
「💧(しずく)」「。。。」は「ここまで」と書くのと同じ意味です。
3回
| 「ワン>🐕」と表示。
💧
インデント構文
プログラムの先頭に「!インデント構文」や「💡インデント構文」と書くと、なでしこv1のようにインデントをブロックと認識します。
💡インデント構文
3回
「ワン>🐕」と表示。
インラインインデント構文
しかし、「えー、プログラムの先頭に「!インデント構文」と書くなんて面倒くさーい」という人のために作ったのが、インラインインデント構文です。Pythonのように、行末に「:」を書くと次の行をブロックと認識します。
3回:
「ワン>🐕」と表示。
個人的な好み
上記のように、なでしこ3に、いろいろなブロック表現を実装してきました。それでも、個人的には「ここまで」が好きです。やはり、これが日本語として一番読みやすいのではないでしょうか。
ただし、めちゃくちゃ焦ってプログラムを書き上げる場合や、使い捨てが必要な場合は「ここまで」の代わりに「。。。」を使っています。そして、インラインインデント構文の「:」も時々使います。
いろいろ選択肢があるって便利です。。。
まとめ
プログラミング言語における「ブロック表現」について、これだけ自由に記述方法を変えられるのは、他のプログラミング言語ではあまりないことです。ブロック表現の自由度は「なでしこ3」の特徴の一つでしょう!!
しかし、仕様について悩み、試行錯誤して、また、悩み、みんなの意見を聞いて、試行錯誤して、また悩む・・・の結果、こうなったという感じです。いやはや、プログラミング言語の設計って終わりがありませんね!!楽しい限りです。
また、ブロック表現について、「もっと良い方法があるよ」という方、ぜひ、アイデアをお寄せください!!!