C#とは?
様々な言語がある中の一つであり、Microsoftが開発したオブジェクト指向のプログラミング言語です。
よく、C言語やC++と一緒に話題に上がる(気がします)が、全くの別物といっても過言ではありません。
C言語
C言語は、コンピューターに近い「低級(低レベル)」言語です。
主に組み込みシステムやOS、ソフトウェアの開発に使用されます。
C++(シープラプラ・シープラ)
C++は、C言語にオブジェクト指向の要素を追加した言語で、C言語より効率的に開発を行うことができます。
C言語との互換性が高く、軽量かつ高速なアプリケーションの開発に適しています。
よく知られている使用例としては、Unreal Engine(ゲーム開発エンジン)などがあります。
高速な処理が必要な場面で利用されることが多いです。
C#(CSharp・シーシャープ)
C++をさらに改良し、より高級(高水準)な言語として設計されたのがC#です。
C++とは互換性がありません。
低級言語のC言語に比べて、よりスピーディーかつ効率的な開発が可能となっています。
Unity(ゲーム開発エンジン)を使ったゲーム制作や、.NETを用いたアプリケーション開発などに利用されます。
プログラミング言語でよく耳にする「低級言語(低レベル言語)」や「高級言語(高水準言語)」とは、「難しい/簡単」といった意味ではなく、
コンピューター(機械語)に近いか、人間にとって読み書きしやすいかという違いを表す表現です。
「低レベル」と言われても、決して簡単な言語というわけではありません。
C言語やC++が使えるからといってC#が使えるとは限りませんし、逆にC#ができるからといってC言語やC++が扱えるようになるわけでもありません。
メモリ管理の考え方などが大きく異なるため、C#に慣れているとC言語やC++は不便に感じることがあるかもしれませんし、
逆にC言語やC++に慣れていると、C#はとても便利な言語だと感じるでしょう。
(そもそも、使用用途が全然違うので比べることはないのですが・・・)
なぜC#を選んだのか
私自身、HSPやVBA,VBと言ったVB関連の言語を触ることが多かったのですが、
ドキュメントの多さ・言語の将来性を考えたときに、やはりC#が良いのではと感じました。
一昔前は、C#について調べると、一緒にVBのコードも載せていることが多かったのですが、最近では、C#のみのコードが記載されることも多くなってきました。
VBは、新しい機能の追加はなくなり言語としての発展はないことが宣言されています。
(参考:Visual Basic Blog)
サポートはされるものの、今後自身のキャリアや将来性を考えたとき、今のうちにC#へ乗り移ろうと考えた次第です。
また、マルチプラットフォーム・Webアプリケーション・ゲーム開発など多岐にわたって行うことができます。
…あと、会社の標準言語がC#だったというのも理由の一つです(笑)
C#を使うと何がいいのか
Microsoftが開発したということもあり、結構ドキュメントがそろっています。
公式も、個人ブログも併せて調べればたいていのことは検索に引っかかります。
また、前述でもしたように、C言語/C++のさらなる進化を遂げたのが、C#となっており、
C言語やC++と違って、メモリの管理を自動で行ってくれます。
このメモリの管理は結構大事で、これを行わないとメモリーリークを起こします。
これらに意識を向けなくても開発が行えることは最大のメリットでしょう。
そもそも、高級言語は言語レベルでメモリ管理をしてくれるため低級言語を触らない限りは
意識しなくてもよい問題です。
余談ですが、C言語にプラスされたのが C++、
C++にさらにプラスされたものが C#(C++++プラスが4つあることを表現している)と聞いたことがあります。
また、Visual Studioという統合開発ツールで開発をすることができ開発者はスピーディーに開発を行うことができます。
最近は、GitHub CopilotというAIを駆使して開発が行うことができ、よりスピーディーなコーディングが可能となっています。
環境構築はすごく楽
ほかの言語に比べて、環境構築はとても楽になっていると感じています。
Visual Studioをインストールすることで、すぐにC#のコーディング・実行が可能です。
Visual Studio Community を使用すれば無料で開発統合ツールを使用することができます。
まとめ。
多岐にわたる開発が可能で、統合開発ツールが無料で使用できる。
ドキュメントやコミュニティが多く、情報の収集には事欠かない。
これが、C#を選ぶ最大のメリットでしょうか。
最近はGitHub Copilotで開発の速度を格段に上げることができます。
次回は、コーディングの基礎などをお伝えできればと思います。
まだまだ勉強の身ですので何か間違いがあればご指摘いただければ幸いです。