ですよねーわかります。
道具ではなく作るものの対象に向き合う必要がある。そのためには、言語はなんでもよいというのはよくわかる。空気のように使いこなせればベストである。手持ちの道具で作りたいものが作れるのか限界が知れてないといけない。限界を知るためには限界まで使い込まないといけない。道具を使い込む過程の話に、「それは道具にすぎない」と茶々を入れる人がいるので不思議だと思う。
作るものの対象というのはつまり、
- 誰と通信するのか(Web API、プロセス間、OSのAPI...)
- その通信内容はどのようなものか
- どのようなロジックを実装する必要があるか。効率はよいか
- どのようなデータを受け取るのか
- どのようなエラーの可能性があり、そのときプログラムはどのように振る舞うのか
- プログラムを呼び出すのは誰で、その呼び出し元とはどのよう約束があるのか
みたいなやつだ。要件とか仕様と言い換えてもいい。
通常はプログラムは長期的にメンテナンスされるから、ここに保守性や他者からの理解容易性、世の中の基準に照らして妥当かどうかといった視点も含まれる。
つまり、作る対象が備えるべき外形的な姿である。それをこそ考えれば、言語はなんでもいいと思う。道具にすぎない。それはそうだ。