楽しく学ぼう!!エンジニャリング!アルファ版!
typescript
javascript

③型について説明するよ 1-1

ゴホン・・・言いにくいんだがな。 私がTypeScriptでお前ががJavaScriptらしいぞ

えぇ?!私、JavaScriptだったの?!?

プログラミング言語には型を付ける言語と型を付けない言語の2種類の分類があるよ。 型を付ける「静的の型付け」と、型を付けない「動的の型付け」について説明するよ。

静的の型付けの言語(英名statically-typed language)はプログラマーが付けた「型(Type)」を「コンパイル時」に検証してコードが実行される前にエラーを検出してくれるんだ。

一方で動的型付けの言語は「コード実行時」に型の安全性を検証するの。つまりコンパイラを通さないからエラーが出るタイミングはコード実行時になってしまうしそもそも基本的には型をつける習慣がないの。

それぞれのメリットは型を付けると見やすいコードになるし値の動きがわかりやすい、コンパイル時に型整合性をチェックするから実行速度が速いのね。一方で型を付けないメリットは自由度が高くてシンプルな記述でコードを実行まで持っていけること。ただし型整合性のチェックが実行時に行われるので静的型付けよりは速度は遅くなる

それぞれいいところとデメリット両方併せ持つから代表的な静的型付け言語は

  • C (1972)
  • C++ (1985)
  • Haskell (1990)
  • Java (1995)
  • C# (2000)
  • Scala (2004)
  • Rust (2010)

こんな感じでシステムプログラミングに使われていた傾向があったんだ。
一方で動的型付け言語はサーバーサイドでよく使われてる傾向があった。

  • Python (1972)
  • Ruby (1995-2月)
  • JavaScript (1995-4月)
  • PHP (1995-8月)

もちろんJavaScriptを除いてはだ。
そしてブラウザで使われる

  • HTML (1993)
  • CSS (1996)
  • Node.js (2009)
  • (ECMAScript 2015)
  • TypeScript (2012-10月)

以降Node.jsによりいろんなフレームワークでアプリケーションが簡単に作れる様になって行った。 Node.jsはJavaScriptでサーバーサイドも構築できるからJavaScriptでサーバーもクライアントも構築するメタも流行り出している。 そして複雑なJavaScriptを書く必要がある背景に型を付けるためのスーパーセットとしてTypeScriptが生まれたんだ。 TypeScript自体は拡張言語で仕様自体はJavaScriptが基盤になっている。

話を戻しましょう静的型付けと動的型付けの話でしたわよね?

「プログラミング言語」は全て動的型付けか静的型付けに設計思想、システム仕様が分かれてるんだ。
ここまで長かったけどやっと「型」について説明していくよ

基本的に型の強さの具合は各言語によって違うけどここでは簡単な概念だけ説明する

文字列型(String) 数値型(Int float number) 真偽値型(Boolean)この三つの方が代表的だ。
基本的に方が揃ってない計算はエラーだと思った方がいい。JavaScriptなんかは実行まで黙認したあげく「暗黙の型変換」を行って無理やり実行時も通そうとする。 例えば 数値型を文字列で割るなんてことしたら静的型付けならコンパイルエラーを吐いてくれるけど、動的型付けの場合実行されてかつ勝手に変換されたりしてエラーにすら気付けない可能性があるんだ。

げっ・・・そ〜いえばあったようななかったような・・・

もし大袈裟な例だけど乗り物なんかにプログラムが組まれていたとして、エラーで数値が狂ったりしたら大変なことになるよな。だからエラーに気づけることっていうのはめちゃんこ偉いことなんだ。私が言うのもなんだけどな。

私もTypeScript使ってみよーっと