IT

C#とは?どういう風に動いているのか?簡易まとめ

数年間UnityC#を使っているものの、C#がコンパイル以降どういう流れを辿ってどう動くのか、ぶっちゃけ面倒くさくて目を背けていた。

「俺は雰囲気でC#を扱っている」
「ガチで危機感持った方がいいと思う」

不意に心の声にそう諭された。SNSの見過ぎかもしれない。

────────────────────────────

言ってる内容自体はまあ全うなのでC#とその周辺について調べて、小難しいことは端折って簡単にまとめました。
大体の構成とか、見覚えのある用語が何を指すものなのか、くらいが分かればいいかなという粒度です。
あまり深堀りして調べてはいませんので、もし間違いなどありましたらご容赦ください。

以下の構成で進めます
・C#とは
・.Netとは
・C#コードのコンパイル以降の流れ
・Unityの独自仕様
・参考

C#とは

C#とは、Microsoft製の汎用マルチパラダイム言語である。
C#は.Net(後述)の一部で、.Netランタイム(後述)上で動く。
C#はCやJavaの影響を強く受けているが、C/C++との互換性はない。(C++はCのコードを書いても動く)

オブジェクト指向、関数型、のようなプログラミングパラダイムの内、複数に対応している、ということ。
wiki曰く、「静的型付け、タイプセーフ、スコープ、命令型、宣言型、関数型、汎用型、オブジェクト指向(クラスベース)、コンポーネント指向のプログラミング分野を含んでいる。」

.Net(旧.Net Core)とは

Microsoftが開発を主導しているオープンソースのアプリ開発/実行フレームワーク。内容物は以下。
・ランタイム(コードの実行機能)
・ライブラリ(Json解析等のユーティリティ機能)
・コンパイラ
・SDK(要は開発キット) とその他のツール
・アプリスタック(上位レイヤーの開発キット?)

クロスプラットフォーム。Windowの他、mac、unix系OSにも対応。

.NET 5以降は、.NET Framework、Xamarin/Monoが統合された。
・.NET Framework・・・Microsoft製のアプリ開発/実行フレームワーク。WindowsアプリやWebアプリが開発できる
・Mono/Xamarin・・・.NET Framework互換の環境を実現するためのオープンソースのソフトウェア群

C#コードのコンパイル以降の流れ

.NetはC#以外にもF#、VB.Netといった言語が使える。
それらのコードはコンパイル時、まず共通中間言語(CIL)に翻訳される。
その後、共通言語基盤(CLI)によって各プラットフォームで動くネイティブコードに翻訳される。

調べると図が出てくるので、そっちを見てもらった方が分かりやすい。

Unityの独自仕様

UnityはScripting Backend(IL翻訳後に処理をするのでバックエンド?)という独自方法で中間言語を変換する。

IL2CPP
ILをC++コードに翻訳し、C++コンパイラによってネイティブコードに変換される。
C++なので基本的にはC#より軽い。

Burst
最適化されたC#コード用のコンパイラで、性能がめちゃめちゃ良くなるらしい。

参考

.NET の概要 - .NET
.NET について説明します。 .NET は、さまざまな種類のアプリをビルドするための無料のオープンソース開発プラットフォームです。
.NET?Framework?Core?色々あるから整理しよう - Qiita
概要普段なにげなくUnityでC#を使っていたけれど、.NETとか.NET Frameworkとか、.NET Coreとかの違いをよく分かってなかったな~と思ったので、簡単な歴史や名称の違いを自分…
C Sharp - Wikipedia
.NET - Wikipedia
Unity (ゲームエンジン) - Wikipedia
タイトルとURLをコピーしました