静的型付け言語・動的型付け言語

(会社のLT会で発表したものの転記。)

TypeScriptのメリットを紹介するつもりでしたが、型がある言語全般に言えることなので、もう少し広い意味で静的型付け言語・動的型付け言語の紹介をします。

データ型

データ型・プログラムを実行するときのデータの入れも(コンピュータのメモリの確保する量)

データ型を定義する→プロダクトの実行前に入れ物の大きさが分かる→データに対して最適なメモリ使用量で済む

データ型を定義しない→プログラム実行前に入れ物の大きさが分からない→実行するまでにどんなデータが来るか分からないため、余分にメモリを確保する必要がある

※メモリ=一時的にデータを記憶する場所、作業机のイメージ

机のスペースが広い=メモリの使用量が少ない→実行速度が速い
机のスペースが狭い=メモリの使用量が多い→実行速度が遅い

特徴

静的型付け言語

変数・関数にデータ型の宣言が必要な言語

  • メリット
    • データ型に関するエラーが事前に分かる
    • 実行速度が速い
  • メリット
    • コードの記述量が多い
    • 開発スピードが遅い

言語

動的型付け言語

変数・関数にデータ型の宣言が不要な言語

  • メリット
    • コードの記述量が多い
    • 開発スピードが遅い
  • メリット
    • データ型に関するエラーはプログラムを実行しないと分からない
    • 実行速度が遅い

言語

利用ケース(個人的な意見)

静的型付け言語が向いているケース

  • 大規模・大人数
  • スケールする可能性が高いサービス(自社サービス)
  • 安全性・パフォーマンス重視(金融・ゲーム)

動的型付け言語が向いているケース

  • 小規模・小人数
  • スケールする可能性が低いサービス(受託など)
  • 開発スピード重視(スタートアップ)

所感

最初に開発した言語がJavaだったり、今はC#を使っていることもあり静的型付け言語の方が贔屓目な書き方になってしまった。

ただ世間的にも最近JavaScript→TypeScript、Ruby→Goに移行している事例を割と見るので、型があるほうが安心して開発できると感じる。

参考