初めまして、NUTMEGの五十嵐です。 プログラミング2年目にして、はじめて触った静的型付けについてお話しします。
まず、プログラミング言語は大きく「動的型付け言語」と「静的型付け言語」の2つに分かれます。この違いは、変数や関数の引数、返り値に対して型が自動的に判定されるか自ら宣言するかにあります。
動的型付け
型宣言が必要ないためコードがシンプルで書きやすいです。 私が今までに触ってきたRuby, Python, JavaScriptがこれにあたります。
// JavaScript 型付けなし
const add = (x, y) => {
return x + y;
};
console.log(add(1,2)); //3
静的型付け
予め明示的に型を定義することで、その変数が扱うデータを制限できます。 プログラムの実行前に型検査(演算とデータの型が適合しているかを確かめる型の検査)が行われます。 私が触り始めたTypeScriptがこれにあたります。
// TypeScript 引数、返り値、関数自体にそれぞれ型付け
const add: (baseValue: number, increment: number) => number = (
x: number,
y: number
): number => {
return x + y;
};
console.log(add(1,2)); //3
動的型付け
動的型付けを触っている時は、型を意識することはほとんどありませんでした。エラーが出てから気にすることが多く仕方なく付けるイメージでした。(実行するまでエラーに気づかないし、分かりにくい) 暗黙的に型が変換されて、意図しない挙動が起きることもあります。 一方で、簡単で書きやすく言語ごとの理解は早かったと思います。
静的型付け
今まで意識していなかった分大変でした。その分動的型付けにはない利点を感じられました。
型を意識し直すのは大変ですが、コードの安全性や意図を共有できるのは大きなメリットに感じました。適材適所で使い分けられるようにマスターしていきたいです!