ブログの下書きを眺めてたら書きかけで飽きたっぽいのがみつかったので供養しておきます。
もう二年前になりますが、「コードをどまんなかに(該当スライド)」でこんな風に人とコンピュータとコードの関係を話しました。(なんかこれのブログ書いてないな……)
ここから少し掘り下げて、コードをソースコードとバイトコードに、コンピュータをコンパイラとランタイムに分わけてみます。 「わけるとわかる」とか言いますが、わけるとこんな図が描けます。
ソースコードは人とコンパイラに関係します。 バイトコードはコンパイラとランタイムに関係します。 関係に依存方向を入れてみたのがこの図です。
ちなみに言語仕様とかは意図的に省いています。主眼じゃないものを取り除いて強調したいものを強調するのがモデリングだと思ってる。
言語仕様入れるとこんな感じ?言語仕様とコンパイラは相互依存になるかもだけど。どちらにしても今回の話には関係ないです。
元の図に戻って、ソースコードから人に依存させているのは、人の読み書きのしやすさに依存して欲しいから。(読み書きのしやすさと文脈だとIDEとかが間に入ったりするんだけど、それも別の話。) ソースコードはコンパイラには依存せず、コンパイラがソースコードをなんとかしてバイトコードにする感じです。
せっかくこんな構造になってるんだから、ソースコードは全力で人に依存していいはずなんです。 にもかかわらず、ソースコードにはコンパイラ都合が入り過ぎていたり、なんならランタイムの都合も入っていたりします。 それらが入ってしまうと可読性や記述性が損なわれるのは当然。人の方向を向いていないわけですから。
で、一つの解にDSLがあったりするわけで、外部DSLだと言語仕様への依存を外せる。
2024-05-13T19:17追記
ここから話広がりそうなんだけど、なんか終わってんだよねぇ。ブログのタイムスタンプによると最終更新が 2020-06-26 23:25:56
らしい。
なるほど。捨てたつもりが捨てきれてなかっただけっぽい。下書きに残してるなんて未練がましいので晒してやる。
いつか気が向いたら書き直すよ。いつか。