プログラミング言語の「良さ」とは?

プログラミング言語の良し悪し?についてはよく考えているので少し書いてみる。

定義

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が優勢となる。

お粗末な結論

どの言語が良いかは人によるし状況にもよる。