プログラミング言語の「良さ」とは?
プログラミング言語の良し悪し?についてはよく考えているので少し書いてみる。
定義
type プログラング言語=(学習時コスト * 開発時コスト)
プログラミング言語の良さ=学習時コスト+開発時コスト*開発回数
※この値は小さいほうが良い。
※開発時コストとは、ある一定までマスターした場合のコスト。どこまで言語に詳しくなるのが得か、という問題には今回は触れない。
差
2つのプログラミング言語の良さの差を考える。
dプログラミング言語の良さ = d学習時コスト + d開発時コスト*開発回数
if dプログラミング言語の良さ < 0 then 前者の言語のほうが良い
else 後者の言語のほうが良い
例
言語X = (10, 3)
言語Y = (2, 5)
開発回数をkと置くと、
dプログラミング言語の良さ
= (10-2) + (3-5)k
= 8-2k
よって開発回数が4回より多いならば、言語Xが有利、4回なら互角、3回以下ならば言語Yが有利となる。
もう少し紐解く
このままでは、結局
言語X = (10,3)
がどこから出てきたのかが謎である。
学習時コスト
人によって違うし、状況によっても違う。
開発時コスト
人によっても違うし、作るものによっても違う。
例
言語Xと言語Yを比較してみる。
Sさんの場合
言語X = (2, 30)
言語Y = (100, 30)
開発回数 = 100
言語Xはすでに不自由なく使えるので、学習時コストは殆ど無い。言語Yは慣れていないので、ものすごく学習コストが掛かる。小さいプログラムを書くことのほうが多い為、高度な型システムもそんなに嬉しくなく、生産性は変わらない。
言語Xが優勢となる。
Cさんの場合
言語X = (10, 35)
言語Y = (50, 30)
開発回数 = 100
色々なプログラミング言語を勉強すること自体が好きなので、言語Yの学習コストはあまり高く無い。また、言語Xは嫌いなので使っているといらいらするため、開発コストも高め。
言語Yが優勢となる。
お粗末な結論
どの言語が良いかは人によるし状況にもよる。