一応私は現在未経験からのIT系への転職活動中で、プログラミングやら基本情報技術者などの勉強を進めています。
それで主にRubyメインで学習しているのですが、C#を今回学習し始めたのにあたり、ちゃんと動的言語と静的言語の違いとか分かってなかったな?と思うのでここでまとめておきます。
動的言語と静的言語はそれぞれどんなものがある?
動的言語
など。
静的言語
など。
じゃあそれぞれどういった特徴があるの?
そもそも動的とか静的とかというのはどういう意味があるのかというと、Webサイトなどの場合だと
動的:ユーザーによって表示する内容を変える
静的:どのユーザーにも、どんな状況でも同じ内容を表示する
こんなイメージになるかなと思います。
つまりアバウトに状況によって変わるか変わらないかってことかな!
で、これをプログラミング言語に置き換えると
動的型付け言語:変数などのデータ型の宣言がいらない言語
静的型付け言語:変数などのデータ型の宣言が必要な言語
だからRubyは変数定義する際に
name = "adpoppo" num = 1
とサクッと使えますが、C#の場合
string name = "adpoppo"; int num = 1;
こんな感じで頭に対応するデータ型をつけなきゃなんないみたい。
はえ〜めんどくさ。
そしてこのデータ型の種類が対応する値の範囲によって色々と使い分けることになるということです。
それぞれのメリット・デメリット
動的言語
メリット
- 記述量が少なくて済む!(データ型の宣言不要だから)
- つまりコードを書くのが楽!
デメリット
- プログラムを実行してみないとバグがわからん(静的言語はコンパイル時に出てくれる)
- 無駄なメモリが発生(データ型の宣言があれば事前にどのぐらいメモリを確保するか指示を出せる)
静的言語
メリット
- コンパイル時にエラー情報を教えてくれる!
- メモリ領域をデータ型宣言によりあらかじめ確保できる!
- パフォーマンス向上!(あらかじめ計算する値が整数か小数かとかがわかるので、演算処理のパフォーマンスが優れている)
デメリット
- 記述量が多くなる
- つまりコードを書くのが動的言語に比べるとちょっと大変
ちょうどそれぞれのメリットとデメリットが裏表になっている感じですね。
今私が学習している動的言語であるRubyと静的言語であるC#の違いが改めて分かった気がします。
んじゃそれぞれのメリット・デメリットに関わる「メモリ」とは?っていうところを明日は多分まとめます。
では今日はこの辺りで。
本日の参考ページ
↓