プログラミングの勉強し始めたときに動的だとか静的だとかなんかやったのぉ
でも意味わかんないから後ででいいや!
とか思ってこの辺の知識を適当に流していたんですが、最近やっとわかる様になってきたので記事にしてみます
#プログラミングは2種類ある?
- 動的型付き言語
- Ruby
- JavaScript
- python
- etc...
- 静的型付き言語
- Go
- TypeScript
- Java
- etc...
プログラミング言語はこの動的型付き言語
と静的型付き言語
と2種類あって、上記の通りに分類されます
で????????????
以前の私はここで学習をやめたんですが、今回はこの先へいってみましょう
#動的型付きと静的型付きの違い
似た様な言語であるJavaScript
とTypeScript
で違いを見ていきましょうか
let hoge = 1;
hoge = 2;
console.log(hoge); // '2'と出力
hoge = "こんにちは"; //'こんにちは'と出力
console.log(name);
最初のconsole.log(hoge)
では2
が出力され、次のconsole.log(hoge)
ではこんにちは
が出力されます
まあJavaScriptやったことのある人ならわかると思うのですが、問題は次
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: int
でhoge
を整数型として宣言していて、もうこのhoge
には整数しか入らないよ!!と設定されているからなんですね〜〜
つまり動的型付き言語というのは言葉の通り、型が変わる(動く)ので動的
じゃあその反対は、型が変わらない(動かない)ので静的
という感じの違いがあるんですよ
#これ必要あんの
正直こちらからすると、型なんて勝手にプログラム側が判断していくれて処理してくれた方が有り難いと思いませんか?私はめちゃくちゃめんどくさがりなんで思います
ただ我々が作り出すシステムにはバグあったらいけないわけですよ
動的に型を判断されてしまうと、自分の想定していないところでよくわからん動作をしてしまうことがあるんです
これはシステムとして致命的であり、こんなことは起きない様にしなければなりません
動的型付き言語は確かに初心者にとって学びやすい言語ですが、いざ現場に入ってこういうことがわからないと使い物にならないと思うんです
静的型付き言語は型の違いでエラーを出してくれるので、そのミスに気が付きやすいというメリットがあります
静的型付き言語を勉強しましょうということではなく、しっかり動的型付きと静的型付きの違いを把握しておきましょうということですね
結局何が言いたいかというと、
型の意味を理解して勉強を進めましょう
ということです!!!
これを抑えておけば今後の成長の妨げにはならないではないかと思います
まあ現場経験はまだないけどなっ!!!!!←