C#のマルチパラダイム性

よく聞く言葉だが、確かに納得するものがある。控え目に言って、C#は以下の側面を併せ持っている言語である。

  • 手続き型言語
  • オブジェクト指向言語
  • システム記述言語
  • データベース操作言語
  • Webアプリケーション記述言語
  • 静的な型付け言語
  • 動的な型付け言語
  • 関数型言語
  • 文字列処理
  • コンパイル言語
  • スクリプト言語

1.手続き型言語,システム記述言語

手続き型の代表的な言語はC言語、C#もCをルーツとする言語であるのでアレしてコレしてと処理を順に記載することができる。とはいえ他の多くの言語もこの手続き型としての側面は持っている。

 

2.オブジェクト指向言語

C#って何?と一言で言うならこの分類になるだろうと思うがC++やJava等と同じく、データとそのデータに対する処理を1つにしたクラスという単位でプログラムパーツを作り、クラス間の連携でプログラムを構成するものである。クラス内部で行われる1つ1つの処理は手続き型的な側面を持つが、クラス間が連携することで内部実装詳細に依存しないという点が利点。

とは言え、Cでもオブジェクト指向っぽい書き方は可能だし、C++もちゃんと使いこなせなければクラスという皮をかぶった手続き型言語になる。C#でも同じ。

 

3.データベース操作言語

データベース操作といえばSQLであり、C#からデータベース操作をする場合もなんらかSQLの知識は必要である。ただしADO.NETにより、C#から直接SQLを発行することもできるし、Linqを使えば厳密なSQLを知らずともデータベース操作も可能になっている。

 

4.Webアプリケーション記述言語

今の時代クライアント側だけで動作するソフトを作れても満足できないSIerは多い。ASP.NETによりサーバー側で動作するソフトもC#で作れたことで何十年か前には複数の言語を組み合わせて作成しなくてはならなかったWebアプリがC#で統一的にできるメリットは大きい。

JavaScriptがまだかもしれないがSilverlightという環境も許されるのであればそれも問題にはならないい上、RIAというありがたいおまけまでついてくる状態だ。

 

5.静的な型付け言語、動的な型付け言語

C#は基本的にタイプセーフティを重視する静的な型付け言語である。ただC#4.0からは動的なオブジェクトを構成することもできるようになっている。本物の動的言語には及ばない部分もあるということだが、静的な型付けを基本としたC#にここまで動的な型付け機能を組み込んだことは称賛すべきである。動的な型付けの一側面は前回のブログを参照頂きたい。

 

6.関数型言語

Tupleやラムダ式等C#3.0以降の特徴には関数型言語の特徴がうかがえる。賛否あるかもしれないが私はLinqも関数型言語を取りこむための言語拡張だという気がしてならない。

LINQを使っていない型はぜひ使うことをお勧めしたい。XPもサポートし続けなければならないC#2.0環境であってもLINQBridgeというライブラリを使うとLINQは使える。

 

7.文字列処理

これまた何十年も前、PerlやRubyを正規表現使えるというだけで覚えた人もいるに違いない。Awkもそのうちの1つと言える。C#(正確には.NET)ではRegexクラスがそれを解決してくれる、機能もばっちりだ。標準のライブラリについてくる有難みがある、CやC++ではそうはいかない。

 

8.コンパイル言語、スクリプト言語

C#は基本的にコンパイル言語である。ソースコードをコンパイルして実行可能形式にする、CやC++やJavaと同じ。スクリプト言語は実行時にソースを解釈する点が大きく違う。スクリプト言語は動的な型付け言語とも近い位置にいると言えそう。

C#でもスクリプト言語のように実行時にソースコードを受けて、それを実することができる。それがCSharpCodeProviderクラスだ、これは.NET1.1(?.NET2.0では間違いなく存在する)から存在する歴史あるクラス。C#erは頭の片隅に置いておくと出番が出てくるかもしれない。

 

ここでこれらの特徴を語りつくすには無理があるため、C#をあまり知らない人に調べられるキーワードを出して説明してみた。とはいえまだ特徴は他にもあると思う。学ぶ価値ある言語であることを伝えられれば幸いだ。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中