編集部イチオシ

(ユーザ受けする)プログラミング言語の構文について考えてみた

多くのユーザに受け入れられる構文にはどのような要素が必要なのかを、だらだらと考えてみたものです(残しておくためにセルフまとめにしました)。根拠が極度に私個人の経験依存で、データの裏打ちもないのでツッコミ歓迎です。あと、駄文22から33に番号飛んでいますが、眠いせいでミスしただけです…。
25
kmizu @kmizu

(駄文34)理由は色々考えられるけど、おそらく、多くのプログラマーが、(抽象)構文木の変換という形でシンタックスシュガーを把握できていないのだと思う。なので、構文の単純さを犠牲にしても、追加的なアドホックな構文を用意する価値はしばしばありそう。 (続)

2019-01-20 07:55:57
kmizu @kmizu

(駄文35)言語設計者の一部は、しばしば、一つの構文に対して異なる型のなにかを与えるとかで、一つの構文で色々な問題を処理できるようにしたいと考える傾向がありますが、これはむしろ初学者を混乱させることが多いので、その部分は(最初は)あまり見せない方が良いと感じています。 (続)

2019-01-20 08:01:35
zehnpaard @zehnpaard

@kmizu すみません、大変興味深いのですが、数字が22から飛んでいませんか?

2019-01-20 08:02:10
kmizu @kmizu

(駄文36)Scalaとかで顕著ですが、同じ記号を別の箇所で流用するのは嫌われることが多いようです。たとえ、わかっている人にとって「どう考えても別の文脈なので区別できるだろ」と思っていても。なので、ほんとに同じ場合を除き記号の流用は避けるのが良さそうです。 (続)

2019-01-20 08:05:16
kmizu @kmizu

(駄文37) 所詮具象構文の些細な記号の違いに過ぎないと思っても、あえてこれまでの慣習に逆らうのは良くないと最近思います。たとえば、リスト(や配列)のセパレータはほとんどの言語はカンマなので、あえてセミコロンを選ぶ(OCaml)のは混乱しか招かないと思います。 (続)

2019-01-20 08:08:01
kmizu @kmizu

(駄文38)どうも、人間はプログラムを左から右へ読むことが多いようです。なので、そう読んだときにプログラムの構造がしっくり理解できる構文にするのが肝要ではないかと思います。OOPLにおけるメソッドチェイン、一部のFPLにおけるパイプライン演算子など。 (続)

2019-01-20 08:10:16
kmizu @kmizu

(駄文まとめ)さて、眠い頭で、つらつらと言語の構文(具象構文)について考えてみました。これは「良い」構文の性質というより、ユーザ受けする構文ってなんだろうということを考えてみた結果です。また、そもそもデータに裏付けられていないので、参考程度に読んでもらえればと思います。 (完)

2019-01-20 08:13:14