LoginSignup
4
1

More than 3 years have passed since last update.

動的型付き言語と静的型付き言語の違い

Last updated at Posted at 2020-11-04

プログラミングの勉強し始めたときに動的だとか静的だとかなんかやったのぉ
でも意味わかんないから後ででいいや!
とか思ってこの辺の知識を適当に流していたんですが、最近やっとわかる様になってきたので記事にしてみます

プログラミングは2種類ある?

  • 動的型付き言語
    • Ruby
    • JavaScript
    • python
    • etc...
  • 静的型付き言語
    • Go
    • TypeScript
    • Java
    • etc...

プログラミング言語はこの動的型付き言語静的型付き言語と2種類あって、上記の通りに分類されます

で????????????

以前の私はここで学習をやめたんですが、今回はこの先へいってみましょう

動的型付きと静的型付きの違い

似た様な言語であるJavaScriptTypeScriptで違いを見ていきましょうか

JavaScript
let hoge = 1;
hoge = 2;
console.log(hoge); // '2'と出力

hoge = "こんにちは"; //'こんにちは'と出力

console.log(name);

最初のconsole.log(hoge)では2が出力され、次のconsole.log(hoge)ではこんにちはが出力されます
まあJavaScriptやったことのある人ならわかると思うのですが、問題は次

TypeScript
let hope: int; // hoge を整数型として宣言
hoge = 1;
hoge = 2; 

console.log(hoge); // '2'と出力

hoge = "こんにちは"

console.log(hoge); // エラー

最初のconsole.log(hoge)では同様に2が出力されますが、次のconsole.log(hoge)ではエラーになってしまいます、、、

これなんでかというと、変数にはというものがあって、最初のlet hope: inthogeを整数型として宣言していて、もうこのhogeには整数しか入らないよ!!と設定されているからなんですね〜〜

つまり動的型付き言語というのは言葉の通り、型が変わる(動く)ので動的
じゃあその反対は、型が変わらない(動かない)ので静的
という感じの違いがあるんですよ

これ必要あんの

正直こちらからすると、型なんて勝手にプログラム側が判断していくれて処理してくれた方が有り難いと思いませんか?私はめちゃくちゃめんどくさがりなんで思います

ただ我々が作り出すシステムにはバグあったらいけないわけですよ
動的に型を判断されてしまうと、自分の想定していないところでよくわからん動作をしてしまうことがあるんです

これはシステムとして致命的であり、こんなことは起きない様にしなければなりません
動的型付き言語は確かに初心者にとって学びやすい言語ですが、いざ現場に入ってこういうことがわからないと使い物にならないと思うんです

静的型付き言語は型の違いでエラーを出してくれるので、そのミスに気が付きやすいというメリットがあります

静的型付き言語を勉強しましょうということではなく、しっかり動的型付きと静的型付きの違いを把握しておきましょうということですね

結局何が言いたいかというと、

型の意味を理解して勉強を進めましょう

ということです!!!

これを抑えておけば今後の成長の妨げにはならないではないかと思います
まあ現場経験はまだないけどなっ!!!!!←

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1