“脱・C言語”を狙う開発者が「Cの代替言語を作っても失敗する」と断言するワケ:894th Lap
C言語より安全で、書きやすい新しい言語は次々と登場している。それでもC言語は、半世紀以上にわたって現役であり続ける。だが、ある開発者は「Cの代替言語ができても失敗する」と断言する。なぜ、そんなことが言いきれるのか。
世の中には、長年にわたって使われている「定番」と呼ばれる製品や技術がある。利用者が多く、周辺機器や関連サービスも充実していて、ブームに左右されずいつでも安心して選ばれる。コンピュータの世界における定番の一つが「C言語」だ。
C言語は1970年代に誕生し、現在もOSや組み込み機器などの開発に広く使われている。半世紀以上も世界のシステムを支えてきた一方、多くの開発者が「C言語より扱いやすく安全な言語」を目指し、代替言語を生み出そうとしてきた。
だが、ある開発者が「Cに代わる言語を作っても使われない」と言い切った。なぜ、代替言語に勝ち目がないというのだろうか?
C言語は半世紀以上にわたって使われ続け、今なお定番のプログラミング言語として重要な地位にある。もちろん、欠点がないわけではない。メモリ管理をプログラマーに委ねる部分が多く、文字列や配列の扱いにも注意が必要だ。わずかなミスが、プログラムの停止やセキュリティ問題につながることもある。
だからこそ、C言語に代わる新しいプログラミング言語はこれまでにも数多く開発されてきた。それでも、Cの定番としての地位を完全に奪うまでには至っていない。
この問題について、「新しいCの代替言語はなぜ普及しないのか」というちょっと面白い議論がある。
議論の発端となったのは、プログラミング言語「C3」の開発者であるクリストファー・レルノ氏が、2022年8月7日に「Handmade Network」へ投稿した「The case against a C alternative」(C言語の代替案に対する反論)という記事だ。
C3は、C言語に近い構文や考え方を維持しながら、モジュールやエラー処理、コンパイル時評価などの機能を追加したプログラミング言語だ。Cの弱点を並べて自作言語の優位性を訴えるのではなく、あえて「Cの代替言語が普及しない理由」を考察している。
レルノ氏は、C言語の強みは言語そのものだけではないと指摘する。長い歴史の中で、静的解析や不具合の発見など、C言語を支えるさまざまな開発ツールが整備されてきた。また、珍しいプロセッサや機器であっても、C言語なら利用できるケースが多い。こうした豊富なツールや対応環境を含めたエコシステムが、C言語の大きな強みになっている。
企業が既にC言語を使った開発環境を整えている場合、別の言語へ移行するには相応のコストがかかる。開発者の教育が必要になるほか、既存のコードやツールをそのまま利用できなくなる可能性もある。新しい言語によって生産性が向上したとしても、その効果が移行にかかる費用やリスクを上回らなければ、企業にとって乗り換えるメリットは小さい。
さらに、新言語には処理系のバグや仕様変更、開発そのものが停止するリスクもある。登場当初は「Cより高速」とうたわれていたとしても、機能が追加されていけば、その優位性が失われる可能性もある。
そしてレルノ氏が特に強調するのが、新言語がC言語利用者の「本当の悩み」を解決しているとは限らないという点だ。
C言語の代表的な問題として挙げられるメモリ管理も、熟練した開発者であれば、適切なライブラリーや設計によってリスクを小さくできる場合がある。逆に、新言語がCに備わっている重要な機能を省いてしまえば、熟練者にとっては使い勝手が悪くなり、かえって生産性が低下する可能性もある。
ここで問題になるのが、その言語を「誰が使えるのか」という話だ。C言語の技術者は世界中に数多く存在する一方、登場したばかりの新言語を業務で扱える人は限られる。企業が新言語を採用する場合には、経験者を採用するためのコストや、既存の開発者を教育するためのコストまで考慮しなければならない。
さらに重要なのが、C言語の資産との互換性だ。現在、多くのプログラミング言語やOSは、C言語の関数を外部から呼び出すための規約である「C ABI」に対応している。新しい言語を採用しても、既存のCコードやライブラリと簡単に連携できなければ、外部コードとの接続に新たなコストがかかる。それだけでも、新言語にとっては大きなハンディキャップになる。
こうしたデメリットを埋めるため、新言語の開発者はC言語より構文が優れていて、安全で、開発者の生産性が高い、といったメリットを掲げがちだ。だが、レルノ氏はそれだけでは企業がC言語から乗り換える決定打にはならないと主張する。
まず、構文の好みは人によって異なる。新しい構文が必ずしもC言語より優れているとは限らない。むしろ、既存の開発者にとっては、新しい書き方を覚えること自体が負担になる。多少読み書きしやすくなった程度では、企業が開発環境を一新するほどのメリットにはなりにくい。
安全性についても同様だ。安全性を高めるためのチェック機能には、場合によっては実行時のコストが伴う。そのため、C言語と同等の性能が求められる分野では受け入れられない可能性がある。かといってチェック機能を外してしまえば、今度はCと同じような危険性が残ってしまう。
「開発者の生産性が高い」という主張にも限界がある。企業のソフトウェア開発では、実際にコードを書くことだけが仕事ではない。要件の検討や仕様の調整、設計、テストなどに多くの時間がかかるため、プログラミングそのものが多少効率化されたとしても、それが企業全体の業績に直結するとは限らない。
つまりレルノ氏が言いたいのは、「C言語より○○」という程度の優位性だけでは、新言語を普及させるのは難しいということだ。では、新しい言語には何が必要なのだろうか。
同氏の答えは、C言語には簡単にまねできない「キラー機能」だ。その例として挙げられているのが「Java」だ。登場当時のJavaには、一度書いたプログラムをさまざまな環境で動かせることや、Webブラウザで実行できること、ネットワーク機能や充実した標準ライブラリーなど、競合する言語が簡単には提供できない特徴が複数あった。こうした独自の価値が、Javaの普及を後押しした。
同じような例は他にもある。「JavaScript」はWebブラウザ、「Dart」はアプリ開発環境の「Flutter」、かつての「Objective-C」は「macOS」や「iPhone」向けアプリ開発と強く結び付いて普及した。「Ruby」や「Python」も、魅力的なフレームワークや利用分野の広がりによって発展してきた。
つまり、魅力的な製品や開発環境を利用するために、特定のプログラミング言語を覚えなければならないことが、その言語の利用者を増やすきっかけになる。
後発の新言語に必要なのは、「C言語より少し優れている」という程度のメリットではない。「これを実現するなら、この言語を選ぶしかない」と思わせるほどの価値が求められるということだ。
そのためには、新言語を使うことで得られる利益が、「C言語を使い続けるメリット」と「新言語へ移行するコスト」の両方を上回ることを示さなければならない。レルノ氏は、C言語にはないキラー機能を持たない言語では、その価値を証明するのは難しいと考えている。
もっとも、この主張に対してさまざまな反論も寄せられた。「安全性を高めても、必ずしも実行速度が低下するわけではない」「RustはCの代替になり得る」「Cを全面的に置き換えなくても、一部の用途で使われるだけで十分なのではないか」といった意見だ。
確かに、全ての用途でC言語を上回らなければ、新言語の開発は失敗というわけではないだろう。特定の分野でCより適していれば、新言語には十分に存在価値がある。それでもレルノ氏の主張には、考えさせられるところがある。
「既存のものより良いものを作れば、自然に利用者が集まる」という考え方もある。だが、実際の企業や開発現場では、技術的な優劣だけで採用する言語が決まるわけではない。既存のコードや開発ツール、人材、教育コスト、互換性、そして長期的なサポートまで含めて判断される。
だからこそ、C言語を置き換える新言語には、単に「C言語より安全で書きやすい」といった改善だけでなく、C言語では実現しにくい独自の価値が求められる。新言語を開発している本人が「C言語を捨てる理由はほとんどない」と語るのは、なんとも皮肉であり、それだけに説得力もある。
果たして、C言語が「定番」ではなくなる日は来るのだろうか。それとも、これからも、その長い歴史によって築き上げたエコシステムを武器に、第一線で使われ続けるのだろうか。
上司X: C言語の代替言語を開発している本人が、「C言語より少し優れた言語を作っても、おそらく普及しない」と論じた記事が再び話題になっている、という話だよ。
ブラックピット: 本人がそんなに厳しいことを言うんですか。自分の作っているC3まで否定しているように聞こえますけど。
上司X: 否定というより、成功するための条件を逆側から考えているのではないかな?
ブラックピット: なるほど。それはなかなかいい戦法ですね。
上司X: 戦法ではないと思うが(笑)。自身で開発しているからこそ、定番であるC言語に敵わない部分があることを実感しているのだろうよ。
ブラックピット: レルノ氏が言う通り、C言語にはない「キラー機能」を実装すれば、C3にも勝機が生まれるかもしれませんね!
上司X: そう簡単でもないだろう(苦笑)。記事にもあったように、Javaが人気を博したのはその時代背景が大きく影響していた。実際に必要とされる理由があったわけだ。
ブラックピット: 機能の新しさだけでなく、「それを何に使えるか」までそろっていなければならないと。後発は大変ですねえ。
上司X: そうだな。でもさ、いずれにしても、C言語がこの先急にオワコンになることはなさそうだ。そして重要なのは、新言語の作り手が「こちらの方が良いでしょ?」と言うのではなく、ユーザーが乗り換えの負担やリスクを払ってでも欲しい価値を示すことだ。これはプログラミング言語に限らない話だ。俺たちも何か新しいことを考えるときには意識した方がいいかもな。
ブラックピット(本名非公開)
年齢:36歳(独身)
所属:某企業SE(入社6年目)
昔レーサーに憧れ、夢見ていたが断念した経歴を持つ(中学生の時にゲームセンターのレーシングゲームで全国1位を取り、なんとなく自分ならイケる気がしてしまった)。愛車は黒のスカイライン。憧れはGTR。車とF1観戦が趣味。笑いはもっぱらシュールなネタが好き。
上司X(本名なぜか非公開)
年齢:46歳
所属:某企業システム部長(かなりのITベテラン)
中学生のときに秋葉原のBit-INN(ビットイン)で見たTK-80に魅せられITの世界に入る。以来ITひと筋。もともと車が趣味だったが、ブラックピットの影響で、つい最近F1にはまる。愛車はGTR(でも中古らしい)。人懐っこく、面倒見が良い性格。
Copyright © ITmedia, Inc. All Rights Reserved.
金曜Black★ピット
こんなメディアも見られています
キーマンズネットに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
SpecialPR
アクセスランキング
-
1
Windowsを使い続けるのは正解か? 「Linux化」というモダナイズのもう一つの選択肢
-
2
ChatGPTに「おすすめの○○は?」 実は答えが決まっているらしい:893rd Lap
-
3
「情シスやめます」と言われたら――ある日突然「ゼロ情シス」になった企業のその後
-
4
「Gemini Notebook」で利用者10倍 シニア社員をAIヘビーユーザーにした首都高の考え
-
5
スクエニ開発陣が「ドラゴンクエストX」の世界観を守るのに「Gemini」が必要だったワケ
-
6
「IT人材がウチの会社を辞める理由」 “給料が安いから”は2位、1位は?
-
7
Excelの10万行データを3分でAIに処理させる、M365 Copilotの使い方
-
8
タダで使える国会図書館の文字起こしツール、汚い手書き文字で精度をガチ検証
-
9
ゼロから分かる「Claude」の教科書 ChatGPTと比べて分かった強みとは?
-
10
OSもほぼ丸ごと自作の「AMD Am29000搭載PC」、30年後に動かしてみたら……:892nd
キーマンズネット SNS
インフォメーション
注目情報をチェック
キーマンズネットをフォロー