全く同じ処理をするプログラムで、動的型付け言語と静的型付け言語の差がものすごく出るようなコーディング例を示し、それぞれのメリットを語ってください |
|
|
「同じ処理なのに差が大きく出やすい例」として一番わかりやすいのは、**数値計算(ループ+大量データ)**です。
だからです。 ここでは **Python(動的型付け) vs Go(静的型付け)**で例を出します。 例:1億回の数値合計処理内容 処理自体は極めて単純です。 動的型付けの例(Python)このコードの実行では、ループのたびに
という 型解決が毎回行われます。 実際の内部処理はかなり複雑で などが起きています。 そのため C系言語より数十倍遅くなることも普通にあります。 静的型付けの例(Go)ここでは
が コンパイル時に確定します。 つまり実行時には だけです。 結果として などの差が出ます。 なぜ差が出るのか(重要)動的型付けの実行 静的型付け つまり 「型の解決コスト」 が全く違います。 では動的型付けはダメなのか?全く逆です。 動的型付けのメリット1 開発速度が速い例えば これで 全部動きます。 静的型付けなら それぞれ対応が必要になります。 2 プロトタイプに強い例えば では
なので 動的型付けの方が圧倒的に楽です。 3 記述量が少ない例えば JSON。 Python で済みます。 静的型付けだと などが必要になります。 静的型付けのメリット1 実行速度今回の例の通りです。 特に では差が出ます。 2 バグの早期発見例えば などは コンパイル時にエラー になります。 動的型付けは 実行して初めてエラーです。 3 大規模開発に強い例えば などになると
が重要になります。 実は一番差が出るケース実は「ループ」より差が出るのは オブジェクト生成が多い処理 です。 例えば など。 動的型付けは が多くなるので 数十倍の差になることもあります。 面白い事実実は は 理由は 内部がC実装だからです。 つまり という構造になっています。 |
|
|

この記事へのコメント