C# を捨てて Python を使うようになった理由

、エンタープライズ向けのプログラミング言語として C#が、優れていることは認めています。エンタープライズ向けの仕事をしている方は以下の記事は無視してください。

C# は、Microsoft のものです。個人や小さなチームで使うプログラミング言語としては C# は適していないと思います。

a. 科学技術計算について

Python は、遅い遅いと

// * Summary *

BenchmarkDotNet=v0.11.4, OS=ubuntu 18.04
Intel Core i7-7700 CPU 3.60GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cores
.NET Core SDK=2.2.203
  [Host]   : .NET Core 2.2.4 (CoreCLR 4.6.27521.02, CoreFX 4.6.27521.01), 64bit RyuJIT
  ShortRun : .NET Core 2.2.4 (CoreCLR 4.6.27521.02, CoreFX 4.6.27521.01), 64bit RyuJIT

Job=ShortRun  IterationCount=3  LaunchCount=1  
WarmupCount=3  

|       Method |     Mean |     Error |    StdDev |
|------------- |---------:|----------:|----------:|
|         Mean | 432.3 us | 15.350 us | 0.8414 us |

// * Legends *
  Mean   : Arithmetic mean of all measurements
  Error  : Half of 99.9% confidence interval
  StdDev : Standard deviation of all measurements
  1 us   : 1 Microsecond (0.000001 sec)

Python の sum()を使うと6.4msとC#よりも10倍以上遅いですが、numpyを使うと0.03msと200倍以上速くなって10倍以上速くなります。

当然のことですがC#で最適化したプログラムを書けばnumpyと同じような速度になるし本当に優秀なエンジニアを抱えている大企業ではそういうことをしていると思います。しかし、それだったらなぜそれをライブラリーとして普通のプラグラマーが使えるように公開しないのでしょうか。それこそが、C#を使うべきでないという最大の理由なのです。

という印象が強いと思いますが、ゲーム開発プラットフォームとして有名な Unity も言語には C# を使っています。Microsoft 自ら .NET Core を開発し、Windows だけでなく Linux や Mac でも動作するようになりました。また 、Microsoft が 2016年に買収した Xamarin を使えば、C# で iPhone 及び Android のアプリケーションを作成することができます。C#を使えば Web アプリケーションも作れるし、iPhpne/Android/Windows Store のネイティブアプリも作ることができます。PHP の場合は Web の世界では有力ですが、それ以外の分野では非力です。

C/C++、C#、Java、PHP は言語的にはかなり近い言語で、言語の基本だけでいいのならば全部覚えることはそれほど難しいことではありません。しかし、実際に効率よくプログラミングするためには、ライブラリにも慣れる必要があるので、使えるようになるにはそれなりに時間が掛かります。自分のように、アプリケーションを作りたいためという場合には、C#、Java、PHP、Ruby、Go、Python、JavaScript のうちからどれか一つに慣れることが必要です。その中で JavaScript は特異な存在で、Web ブラウザーで動作する唯一のプログラム言語です。そういう点では Web をするならば JavaScript(Node.js) を習得するのが必須なので、JavaScript を習得するのが一番の早道だと思います。C# には、そういう強い学習動機がないのが弱いところですが、幅広く使えるというのはいいところだと思います。

プログラミング言語の人気調査をしている TIOBE Programming Community Index というサイトがあります。人気言語の順では、Java、C、C++、C#、Python の順になっています。

C#の学習参考資料

C#の学習用の Web サイトととしては、++C++; //未確認飛行 CC# プログラミング入門があります。これは、とても参考にになるサイトで、普通に販売している C# の本よりも、わかりやすく、内容も豊富なので、最初はこれだけで学習しても十分です。
図書については、ハーバード・シルト著「独習C#第3版」(翔泳社)がおすすめです。

C# は、開発ツールのコストが高いのでは

昔、遠隔操作ウイルス事件の時には、「Visual Studio は高価な専門ツールであることから、素人が購入するとは考えにくいという」コメントがだされたように、Windiows 関係の開発ツールは高いと思っている人がまだ多いと思います。

しかし、Visual Studio Community が個人に対しては無償で提供されており、機能的には Professional 相当です。自分もそれを使っています。エンタープライズ向けのソフトウェアを開発するのでなければ、十分な機能を持っています。

Linux サーバーでも動くよ

もう一つの懸念は、Windows でしか動作しないという懸念があるのではないかと思いますが、.NET Core を使えば Linux でも動作します。このサイトも Ubuntu で動いています。.NET Core は、OSS になっているので、今後、Windows オンリーに後戻りすることはないと思います。Microsoft の収入を考えても、収入の中心が Windows の収入から Azure や Office 365 のようなクラウドからの収入に移ってきているので、マルチプラットフォームを捨てて Windows に閉じこもるようなことは考えられないです。