Harumaxy's blog

Table of contents

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

2022-05-28T08:15:54.489Z

自分が思うソフトウェアエンジニアリングに使う技術の優劣とかニッチとか、選ぶべき優先順位について語りたい。

よくある議論ですが...今回は静的型付けvs動的型付け

大学で専攻してたとかじゃない(社会人からプログラマ)なので学術的な根拠というより、ネットでの観測範囲の情報・感情論・仕事や趣味で使った経験則によるものです。

忌憚のない意見ってやつっス

TL;DR

選べる環境にあるなら、圧倒的に静的型付けの言語を選ぶべき!と思う。
(とくにTypeScript, Go, Rust以降の世代の言語)

理由がないなら動的言語でWeb開発するのヤメレ(ruby, python)

巷のイメージとは異なり、初心者向けなのが静的型付け言語、上級者向けなのが動的型付け言語

巷に言われる動的型付け言語のメリット

Qiitaとか読むと、色々と比較記事あるけどさ(これとか)、動的型付けのメリットっていうほどメリットでもない気がする。

記述が少なく素早く作れる?

動的型付けだと型の記述が少ないので、短く書けると言われているが...

最近は型推論する静的型付け言語が多いので、型の記述省略できる事が多い
記述量はいうほど変わらない。

簡単に書ける?

(これは人により簡単の定義が異なるのかなぁ。動的型付け言語は記述が少ないとかコンパイラに怒られずとりあえず実行できることが簡単ってことなんだろうケド...)

動的型付け言語はバグが紛れる可能性のあるコードなら簡単に書ける
バグを作りたくないなら、人力型チェックしなければならないのでむしろ難しい

静的型付け言語使うべき理由

以上のことから、巷で言われる動的型付け言語のメリットはいうほど的を得ているか微妙なところでしょう。

て考えると、

初心者ほど静的型付けを使ったほうが良い

動的型付け言語を初心者の入門用として進めている場合が多いが、どうなんだろう?

どっちかというと、エディターによるコーディング支援機能が優秀なのはどう見ても静的型付け言語。

巷で言われているイメージとは裏腹に初心者に優しいのが静的型付け言語、上級者向けなのが動的型付け言語なのでは?

コンパイラに怒られるのは良いこと

殴られもせずに一人前になった奴がどこにいるものか

コンパイラに怒られもせずに一人前になった奴がどこにいるものか

歴史的な流行り廃り

プログラミング言語年表

プログラミング言語の比較

有名所の動的型付け言語(python, ruby, js, php)はどれもこれも1990年代からある。

しかし、2000年代以降に生まれる新たなプログラミング言語はほとんどが静的型付け言語である(動的言語はElixir, Juliaぐらい?)

新しい言語を作るモチベーションは、better {既存の言語} として既存の言語を置き換える目的が多いように思える。

動的言語をbetter {既存の言語} として改良する場合、文法は真似しつつ型推論や静的型付けを取り入れ、動的言語の性質を排除する傾向にあるように思える。

これって静的型付けは動的型付けの上位互換といえるのでは?

まとめ

特別な例を除けば、プロダクトの開発言語選定は静的型付け言語を採用するのがオススメです。

オレのオススメは断然TypeScript
JavaScriptから入るのも可(JSはTSのサブセットだから、移るのが楽)