読者です 読者をやめる 読者になる 読者になる

無気力生活 (ノ ´ω`)ノ ~゜

脱力系エンジニア。てきとーに生きてます。

Cは死なんさ。何度でも蘇る。

イマイチ、乗り遅れの気が否めないんですが、
なかなか刺激的なタイトルで取り上げられています。

どうも周知徹底が不足しているようなので再度のお願いとなりますが、C死ね。

  • 確かにCでしか書けない類のプログラムは存在する(例を挙げるならKernel)が、それはCの存在を赦す理由にはならない。
  • 確かにCに輪をかけてさらにダメな類のプログラミング言語は存在する(例を挙げるならC++)が、それはCの存在を赦す理由にはならない。
  • 確かにCでしか書けないダメプログラマは存在する(例を挙げてほしければここにおまえの名前を入れろ)が、それはCの存在を赦す理由にはならない。
結論:C死ね。

でも代替できるものがない

この方も、言及されているんですが、
Lixux Kernelだったり、プログラミング言語の処理系は未だにCで書かれています。
間に仮想環境挟むJavaC#では、Cの代替となり得る実行速度やリソースの有効活用が実現できないからでしょう。そんなCをいか様にして殺せば駆逐できるかは、正直自分には分かりません

バグが顕在化しないのが一番の問題

翻ってCでのプログラムはどうかといえば、これは不幸でしかない。Cの不幸はあげればキリがないから、構文がいかれてるとか、型システムが狂ってるとか、静的・動的セーフティー機構をほとんど全く欠如するとか、あるいは「Cしか書けないプログラマ」が一定数いてこれが老害になっているとか、まあその程度を列挙しておくに留めるが、ともかく様々な原因により、Cで書くことを選ぶとバグが出た際メンテナンスがとても困難になる。

この辺についてはほぼ同意。
実際、自分もCの案件をやったことがあるのですが、型チェックが厳密に行われていないためバグが非常に見えにくい。使う人の根本的知識が不足していると簡単にメモリぶっ壊す処理が書けてしまいます。
後は、生産性の問題ですかねー。標準できないことが多く(文字列を操作する方法とか)、最近の言語には基本的に備わっている部分を自力で実装する必要が出るため生産率が他の言語より格段に落ちます。後々のためにポリモフィズムはしっかりね!って言われた時はどうしようかとorz

生産性、安全性を考慮すると、そこを犠牲にしてまでCで書くメリットは確かに見えないです。

で、この方の主張って結局なんなの?

すでにCで書いてある既存のプログラムを今すぐ根絶やしにするのは難しかろう。過去にそれらが果たしてきた歴史的役割まで否定するつもりもない。しかし今、この瞬間にも意味もなくCで書かれ続けているプログラム。なぜCで書く必要がある?ないはずだ。ないはずなんだよ。ちゃんと調査すればJavaとかC#とか、ひょっとしたらOcamlScalaででも用は足りる場合がほとんどなんだ。

至極当たり前のことを言われてます。
C使わなくてもいいところはC以外でやろうよ

あえてCを使わなければならない状況は、

  1. 非常に高いスループットが要求される
  2. 使用できるリソースが極端に低く制限されている
の両方を満たすケースしかありません。

だったら、苦労して書いて更にに保守で地獄をみる可能性のあるCより、もっと楽に、安全に、分かりやすく書けるC#とかJavaを選びますよ自分は(´ω`)

代替があるのならCは駆逐するべき

結論からすると、私も卜部昌平の意見と同様の意見です。(死ねとまでは思いませんが)
Cが誕生してから40年、今まで色々な方面で活躍してくれました。そろそろ休ませてあげたいのです(´・ω・`)
Cが誕生した時と比較して、今はさまざまな言語があります。wikipediaみたら200以上あるんですね・・・。
この中のいずれか、またはこれから出る新しい言語に、これまでCが担ってきた役割を果たしてくれるものがあるかもしれません。
いずれCの代替が生まれたその時に、Cははじめて駆逐できるのだと思います。