15
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python や Node.js を使ったことはあるでしょうか?
これらの言語は 型チェックが緩い(動的型付け) という特徴があります。

  • 変数にどんな型でも入れられる
  • 実行時までエラーが出ない
  • とりあえず動くコードが書ける

プログラミングを Python や Node.js から始めた人 も多いと思います。

しかし、そこから Rust や Go、TypeScript(厳密設定) のような
「型を守らないといけない言語」に移行すると──

最初に待っているのは、地獄のような型エラー

今回は、その理由と実体験ベースの学びを書きます。

型チェックが緩い言語の世界

Python や JavaScript では、こんなコードが普通に書けます。

x = 10
x = "hello"
x = [1, 2, 3]

JavaScript でも同様です。

let x = 10;
x = "hello";
x = {};
  • エラーは出ない
  • 実行もできる
  • とりあえず動く

この「自由さ」は、学習初期には非常に優しいです。


なぜ初心者に人気なのか

型が緩い言語が最初に選ばれやすい理由は明確です。

  • 文法がシンプル
  • 書いたらすぐ動く
  • 型エラーで止められない
  • 学習コストが低い

つまり、「まず動かす」ことに集中できる

これは大きなメリットです。

しかし、その自由さが後で牙をむく

問題は、そのままの感覚で型が厳密な言語に移行したときです。

例えば Rust。

let x = 10;
x = "hello"; // コンパイルエラー

この時点で、「え、なんでダメなの?」となります。

最初にぶつかるのは「型エラーの壁」

Rust や厳密な TypeScript では、

  • 型が一致しない
  • Option / Result を処理しろ
  • null は存在しない
  • 暗黙変換しない

といったエラーが 次から次へと出てきます

動的型付けの癖が抜けない

特にキツいのがこの感覚です。

  • 1つの変数に何でも入れたい
  • とりあえず if で分岐すればいい
  • 実行すれば分かる

この思考が、
型が厳密な言語では 通用しません

なぜ型が厳しい言語はこうなっているのか

型エラーは「バグの予防」 です。

型が厳しい言語は、

  • 実行前にミスを潰す
  • 状態の不整合を防ぐ
  • 保守性を上げる

ために、あえて厳しくしています。

移行期が一番しんどい

正直に言うと、
Python → Rust(または厳密TS)
この移行期が一番つらい。

  • エラーが多すぎる
  • 書く量が増える
  • 頭を使うポイントが変わる

でも、慣れると逆に戻れなくなる

  • 型を意識して設計する
  • コンパイルが通れば安心できる
  • リファクタが怖くなくなる

という感覚を一度知ると、「型が無いのが怖い」 に変わります。

学んだこと

  • 型が緩い言語は入り口として最高
  • でもそれが当たり前になると後がきつい
  • 型エラーは敵ではなく味方
  • 設計力は型の厳しさで鍛えられる

まとめ

  • Python / Node.js から始める人は多い
  • そのままの感覚で型が厳密な言語に行くと詰む
  • 最初は型エラー地獄
  • 乗り越えると世界が変わる

この壁を越えると、
プログラミングの見え方は確実に変わります。

15
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
15
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?