「DSLだから読みやすい」のではない
「DSLだから読みやすい」のではなく、「『言語が決める』範囲が広いから(= 規約に委ねる範囲が狭いから)読みやすい」。読みやすさの原因は記述言語の選択ではなく、記述自由度の所在にある。
因果はこう説明できる。言語が決める範囲が広いと、「予測しにくい書き方」が文法で書けないので、結果予測性は構造的に高い。規約に委ねると、ベタ書きで予測性を保つことはできるが、抽象化を使った瞬間に予測性が落ちる。だからCDK / Pulumiの結果予測性は「高い/低い」ではなく「書き方依存」という別の性質になる — L1ベタ書きなら高く、ループ/条件/継承/高階関数を駆使すると低い。
この区別が実際に効く場面が二つある。一つは、汎用言語を選んでも記述自由度を言語側で縛る設計余地は原理的には残っている、という認識(実装例は確認されていないが、論理的に閉じてはいない)。もう一つは、外部DSLを選んだからといって自動的に読みやすくなるわけではない、という認識 — 動的なsourceと任意関数を許すDSLを作れば、外部DSLのまま「規約に委ねる」側に落ちる。
なお汎用言語でもSDKがOutput<T>のような型を提供して未知値伝播を表現するパターンはあるが、これを「言語が決める」と評価するのは過大評価になる(SDKが型を提供することは言語が制約を課すことではない)。