はじめに
この記事はC#言語仕様を翻訳してみたシリーズの第1項である。
他の項の翻訳も見たい場合は以下のリンクから確認できる。
経緯
公式ドキュメントを読むことが苦手なため、克服するためにC#の言語仕様を読み始めた。
しかし、機械翻訳があまり読みやすいものでなかったため、英語で読みながら翻訳して読むことにした。
翻訳の方針
もともと書かれている機械翻訳より分かりやすくなるように翻訳することを目標とする。
ただし、機械翻訳でも読めそうな部分はそのまま使用する。
また、Google翻訳などの翻訳アプリもフルに活用することとする。
間違いやもっと良い翻訳など指摘があれば、コメントを頂ければ幸いだ。
この記事の翻訳対象
セクションごとに記事を分けて書くこととする。
この記事ではIntroductionを翻訳する。
翻訳文
はじめに
C#(読み方は"シーシャープ")はシンプル、モダン、オブジェクト指向かつタイプセーフなプログラミング言語です。
C#はC言語系がルーツであり、C、C++、Javaのプログラマーにすぐ馴染みます。
C#はECMA InternationでECMA-334として、ISO/IECでISO/IEC 23270として標準化されています。
.NET Framework用のMicrosoftのC#コンパイラはこれら両方の標準に準拠した実装です。
C#はオブジェクト指向言語ですが、さらにコンポーネント指向のプログラミングのサポートも含まれています。
最近のソフトウェア設計では、機能を自己完結型および自己記述型パッケージの形式にしたソフトウェアコンポーネントにますます依存するようになっています。
そのようなコンポーネントの鍵となるのは、プロパティ、メソッド、イベントを使用してプログラミングモデルを表すこと、コンポーネントについての宣言的な情報を提供する属性があること、独自のドキュメントが組み込まれていることです。
C# はこれらの概念を直接サポートする言語構造を提供しているので、非常に自然にソフトウェアコンポーネントを作成して使用することができます。
いくつかのC#の機能は堅牢で耐久性のあるアプリケーションの構築を支援します。
ガベージコレクションは使用していないオブジェクトによって占領されたメモリを自動的に再利用します。
例外処理は、エラーの検出と回復に構造化された拡張可能なアプローチを提供します。
タイプセーフな設計により、初期化されていない変数の読み込み、配列の境界を超えたアクセスまたは型チェックされていない型へのキャストはできません。
C#は統一された型システムを持っています。
C#の型はint
やdouble
のようなプリミティブな型を含め、すべてobject
型から派生しています。
そのため、すべての型は共通の操作を共有し、任意の型の値を一貫した方法で保存、転送、および操作できます。
さらに、C#はユーザ定義の参照型、値型の両方をサポートしており、オブジェクトを動的に割り当てることも、軽量の構造体をインラインで格納することもできます。
C#のプログラムとライブラリが互換性を保ちながら進化できることを保証するために、バージョン管理に重点が置かれています。
多くのプログラミング言語がこの問題を軽視しており、その結果、それらの言語で書かれたプログラムは依存しているライブラリの最新バージョンが導入されると必要以上に壊れます。
バージョン管理の考慮に影響を受けたC#の設計の側面として、virtual
とoverride
修飾子が分かれている、メソッドのオーバーロードの解決ルール、明示的なインターフェースメンバの宣言のサポートがあります。
この章の残りの部分では、C#の重要な機能を説明します。
後の章はルールと例外を詳細に、ときどき数学的な方法で説明しますが、この章では完璧さを犠牲にして、明確さと簡潔さを追求しています。
目的は最初のプログラムの作成方法と後の章の読みを促進するための言語の導入部を読み手に提供することです。
次回
Hello Worldを翻訳予定。
[2019/09/03]
Hello Worldの翻訳はこちら。
それではまた。
TomoProg