Skip to content

Instantly share code, notes, and snippets.

@yvt
Created May 6, 2017 21:42
Show Gist options
  • Save yvt/e142342cbc1fbcaab01faa6f84822dc3 to your computer and use it in GitHub Desktop.
Save yvt/e142342cbc1fbcaab01faa6f84822dc3 to your computer and use it in GitHub Desktop.

TypeScriptをブラウザで直接実行できるようにするの、全くもって利点が無いんだよね。理由は数え切れないほどあって、その一つが実行効率。TypeScriptは静的型付け言語の一つではあるけど、他の同種の言語と大きく異なるのは、実行効率ではなく動的型付けの世界で書かれたものをうまくキャプチャするように設計されているから、一般的な静的型付け言語と同様の方法でコンパイルすると一部の特別なケースでしか効率良く実行できない (実際、HaxeのC++バックエンドもインタフェース呼び出しが低速だよね)。

もう一つは読み込み速度。まずそもそも何故静的型付け言語が(一般に)高速に実行できるかと考えると、事前に型に関する情報があるからそれに基づいて最適化が行えるから。例えば a + b のオペランドが両方とも int だと分かっていれば + に関して動的ディスパッチを行う必要はない。他の例を挙げると、ジェネリック関数は型引数ごとに特殊化 (Rustのコンテクストではmonomorphizationと呼ばれる) すればそこから新たな最適化の可能性が導き出せる。こうした最適化を行うことを前提とした場合、誤った型のデータが入力された場合に備え、型チェックを行うことは必須になる。

(todo)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment