各言語の素晴らしい点をまとめた資料を作っていますが、これはその中の一つです。
とはいえ、C#が一番好きな言語なので、特に力を入れて書いています。
個人的にはRubyもかなり好きなんです。でも、実務で使うことを考えると、C#が一番気に入っているんですよね。それでも、こういう資料を作るのは意外と難しかったです。なぜかというと、C#の良さを一言で説明するのが本当に難しいんです。
C#にはたくさんの良いところがあるんです。でも、どうも全体として目立った特徴がないというか…
いいところを挙げるなら、他の言語の良い点をうまく取り入れていることや、後方互換性に対する配慮、時には非常に先進的な機能を持っている点、多用途に使えることなどですね。
それでも、なんとなく地味なんです。なかなか人に勧めにくい。
でも、実際に使ってみると本当に使いやすいんです。
何年も考えて、ようやくしっくりくる言葉を思いつきました。
それは「神は細部に宿る」です。
これは建築家のルートヴィヒ・ミース・ファン・デル・ローエの言葉です。「細部こそが重要だ」という意味ですね。彼の建築を見てみるとわかりやすいのですが、全体が完璧に統一されているからこそ、美しく見えるんです。例えば、柱がちょっとでも曲がっていたら全体のバランスが崩れてしまう。それくらい、細部へのこだわりが重要だということです。
この「細部へのこだわり」は、C#を作った開発者たちにも共通していると思います。彼らは、世界を驚かせるようなカリスマ的天才ではないかもしれませんが、第一級の秀才たちが集まって作った、非常に完成度の高い言語なんです。
C#の開発者として知られているのはアンダース・ヘイルスバーグです。彼はTurbo PascalやDelphi、最近ではTypeScriptも手がけています。プログラミング界ではすでに何度もその名を轟かせているので、ある意味天才とも言えます。でも、例えばSmalltalkやLispのように、業界の常識を根底から覆すような伝説的な言語ではないかもしれません。C#も、彼一人で作ったわけではなく、チームを率いて作っています。
ここまででC#の良さを一言で表現しましたので、ここからはその「神が宿る細部」について具体的に説明していきます。
まず、C#の大きな特徴の一つは、他の言語の良いところを精錬された形で取り入れていることです。
プログラミング言語の機能自体には著作権がないので、多くの言語が他の言語の良い点を取り入れていますが、C#は特にそれが洗練されています。
- 中間言語
- プロパティ
- yield
- ジェネリック
- ラムダ式
- タプル
- Null許容型
など、多くの機能が、よく考え抜かれたうえで取り入れられています。一度取り入れた機能を変更することは後方互換性を壊すリスクがあるので、変更が難しいです。そのため、長く続く言語を作るには、慎重な判断が必要ですが、C#はその点でも際立っています。
後方互換性に対する配慮も素晴らしいです。C#の開発者たちは、ある時期まで、GitHubなどの多くのプログラムを収集して、新しい機能が既存のコードにエラーを引き起こさないか確認していたそうです。つまり、既存ではコンパイルエラーになるようなケースだけに新機能を追加していたんです。
時には、プログラミング全体に影響を与えるような革新的な機能も取り入れられます。例えば、async/awaitはその一つです。この機能は、マルチスレッド処理を簡単に行う方法を提供し、C++やPython、JavaScriptにも取り入れられました。他にも、LINQも有名です。DBやWeb APIとも同じ構文でデータを扱えるようにした機能は、画期的だったと思います。
最後に、C#の広い適用範囲について触れておきます。Windowsアプリだけでなく、Webのバックエンドやフロントエンド、さらにはiOSやAndroidアプリの開発にも使えます。また、MacやLinuxにも対応しているため、PowerShellなどもその上で動作します。使える環境が非常に広く、実用性の高い言語です。
ということで、C#の魅力を紹介しました。特別な革新性はないかもしれませんが、バランスが良く、機能も充実しているので、非常に実用的な言語です。まだ使ったことがない方は、ぜひ試してみてください。
(編集協力:ChatGPT 4o様)
(当記事はZennにもマルチポストされます)
Zenn
(スライド全体はこちら)
speakerdeck