メッセージ。 - Haskell勉強メモ(&脱線して言語機能とシンタックスについて)
# Haskell勉強メモ(&脱線して言語機能とシンタックスについて)
Haskell勉強メモ。現在『Haskell入門』のP.43を読み中。静的型付けについて説明されているのだけど、なんとなく納得。Schemeでプログラミングしていても、一番気になるのはある関数が何を引数に受け取って何を返すかだもんね。リファレンスマニュアルを見るときも、真っ先に見るのはそこだ。だからHaskellのように、引数の型が(文法として)明示できるようになっているのは合理的な気がしてきた。(しかも、型付けを省略したときは勝手に型を推論してくれるのも素敵。)
意味は全然違うのだけど、Emacs Lispでは関数を定義するときに「この関数は○○を実行するものだよ」みたいなのを記述することになっている。それに近いような気がした。「プログラミングの習慣として、どうせそのようにしたほうが良いのだから、それを言語の機能に取り込んでしまおう」という感じ?(ref. 文芸的プログラミング) ただ、Emacs Lispのそれは、人間に読ませるためのコメントに過ぎないので、人間と機械の両方に読ませる静的型付けとは少し違う。
人間と機械の両方に読ませるというのは、最近のユーザーインタフェースでは結構主流になってきてるんだよね。たとえばPythonはインデントで関数のブロックを表現しているけど、これなんかは人間と機械の両方に読ませる最たる例だ。「インデントして見やすくしたほうが可読性が高くて良い」→「どうせインデントはするべきなのだし、インデントによってブロックの開始と終端を機械が検出できる」→「それを言語の機能に取り込んでしまえ」ということだろう。
Ruby on Railsで、「Convention Over Configuration」(「設定より規約重要」原則。意訳すると、「アレコレ設定できるソフトウェアは不要。変な運用を行うから細かい設定が必要なわけで、運用規約の筋が通っていてほとんど設定しなくてよいのが理想」という考え方)もその流れだ。総じて最近のユーザーインタフェース(とくにプログラミング言語におけるそれ)は、「視覚的な見やすさ」、「見た目の自然さ」、「書きやすさ」という感覚的な要素を、言語機能に取り込んでいるような気がする。
プログラミングとドキュメントを一緒にしようという考え方は「文芸的プログラミング」と呼ばれるわけだけど、上記のように人間にとってのプログラミングしやすさを言語機能に取り込むような考え方にも名前があるんだろうか。
意味は全然違うのだけど、Emacs Lispでは関数を定義するときに「この関数は○○を実行するものだよ」みたいなのを記述することになっている。それに近いような気がした。「プログラミングの習慣として、どうせそのようにしたほうが良いのだから、それを言語の機能に取り込んでしまおう」という感じ?(ref. 文芸的プログラミング) ただ、Emacs Lispのそれは、人間に読ませるためのコメントに過ぎないので、人間と機械の両方に読ませる静的型付けとは少し違う。
人間と機械の両方に読ませるというのは、最近のユーザーインタフェースでは結構主流になってきてるんだよね。たとえばPythonはインデントで関数のブロックを表現しているけど、これなんかは人間と機械の両方に読ませる最たる例だ。「インデントして見やすくしたほうが可読性が高くて良い」→「どうせインデントはするべきなのだし、インデントによってブロックの開始と終端を機械が検出できる」→「それを言語の機能に取り込んでしまえ」ということだろう。
Ruby on Railsで、「Convention Over Configuration」(「設定より規約重要」原則。意訳すると、「アレコレ設定できるソフトウェアは不要。変な運用を行うから細かい設定が必要なわけで、運用規約の筋が通っていてほとんど設定しなくてよいのが理想」という考え方)もその流れだ。総じて最近のユーザーインタフェース(とくにプログラミング言語におけるそれ)は、「視覚的な見やすさ」、「見た目の自然さ」、「書きやすさ」という感覚的な要素を、言語機能に取り込んでいるような気がする。
プログラミングとドキュメントを一緒にしようという考え方は「文芸的プログラミング」と呼ばれるわけだけど、上記のように人間にとってのプログラミングしやすさを言語機能に取り込むような考え方にも名前があるんだろうか。
Comment
Trackback