ニコニコ大百科モバイル

7/2(月)よりスマホまたはPCでアクセスした場合、各デバイス向けのサイトへ自動で転送致します


型付け


ヨミ: カタヅケ
掲示板をミル!
2カキコ!

型付けとは、

  1. プログラミング言語を、の取り扱い流儀によって分類するための用である。
  2. 新品のグローブなどを使いやすく曲がるように変させ、くせをつけることである。

本記事では1.について解説する。


概要


大半の高級プログラミング言語では、文字と数を別のと位置づけており(数はさらに整数小数に分かれる)、さらに変数(オブジェクト)ごとにも(クラス)が設定されている。

これは偶然ではなく型理論[外部]という数学理論に裏付けられているらしいがここでは深入りしない。

や個々の言の分類については「」の記事を参照のこと。


静的型付けと動的型付け


型付けの分類で最もよく用いられるのが静的型付けと動的型付けによる分類である。プログラム実行開始前にすべての変数が予め決まっている静的型付け言であり、決まっていないのが動的型付け言である。静的型付けはコンパイルに多く、動的型付けはスクリプト言語に多いが、傾向に過ぎず絶対的なものではない。また、必要に応じてを規定したり、しなかったりできる言もある。

最近では、動的型付け言の代表格であるPython[外部], Ruby[外部]でも静的型付けの導入が検討されたり、JavaScriptに静的型付け等を導入したTypeScriptが開発されるなど、静的型付けのメリットを認める流れが優勢なようである。一方で静的型付け言Javaでは、仮想マシンレベルで動的型付けが可な仕組みが導入された(もっともこれについてはJava仮想マシンで別の動的型付け言を動かすことが的で、Javaの言仕様に動的型付けを導入するためではないらしい)。最終的にはどの言も静的型付けをとりつつ必要なところに動的型付けを使用できるといった形に落ち着くのかもしれない。

ここでは例として x, y を引数に取り x * y を返す f(x, y) を題材に、静的型付けと動的型付けを較しながら、それぞれの長所と短所について述べる(整数小数文字は別のであるとする)。

静的型付け 動的型付け
定義 静的型付けプログラミング言語では、実行前(多くはコンパイル時)にはすべての変数が決まっている。 動的型付けとはプログラム実行中にその変数が呼び出されるときまで、変数が変わりうるプログラミング言語に対する表現である。
特徴 を定義する手間があるが、IDE(統合開発環境)がを知ることができるので、チェックや入などのIDEによる支援を受けやすい。 の制約が少ないので書き始めは書きやすいが、変数を自で管理する負担がプログラムサイズにあわせて増大する。従って小さな処理を簡便に記述するのに向いているとされる。
安全 IDE事前チェックしてくれるので、f(x,y) = x * yのx,yに数字の1や0.5以外に文字の「三」などが入ってしまう可性は、ほぼ排除されている。
このように、静的型付けプログラミング言語には、定する煩雑さと引き替えにプログラマーの人為的ミスを防ごうという考え方が根底にある(安全という)。
f(x,y)のx,yに数字の1や0.5以外に文字の「三」などが入ってしまう可性があり、プログラムの作成者と使用者が異なる場合、作成者の手を離れて使用者の手に渡ってしまってから初めて問題が判明することになる危険性が大きい。
引数 による縛りによりできないことがあったり、できたとしてもプログラムの記述量が増えてしまったりする。たとえばf(x,y) = x * yの例では、引数が異なれば、異なる関数(もしくはメソッド)ということになるので、x,yが整数小数かで少なくとも2×2=4通りのf(x,y)を別々に定義しなければならない。 x,yが整数小数事前に知ることはできないのでx,yので場合分けする必要がく、f(x,y) = x * yと定義するだけで済む。
戻り値の f(x,y)の戻り値のも実行前に定義されている必要があるので、(x,yが小数の時に)x * yが整数になる時だけf(x,y)が整数となり、それ以外の場合はf(x,y)が小数となるような定義は、不可能か、可であったとしてもかなり複雑 な処理を伴うことが多い。 戻り値のに制約がないので、整数でも小数でも返すことができる。しかし、どちらが返ってくるかわからないということでもあり、ミスなどにより、文字など予想の斜め上のものが返ってくる可性も否定できない。
戻り値 f(x,y)の結果として x * y(整数), x / y(小数)という異なるをもつ2つの値を同時に戻したい場合には、手軽に配列で返すことはできず、「の組み合わせを表す」をその都度別途定義しなければならない言が多い。 f(x,y)の結果として x * y(整数), x / y(小数)という異なるをもつ2つの値を同時に戻したい場合でも、2つの値の配列(配列の要素のもまた不定なので、ばらばらのを要素にする配列が可な言が多い)を返せば済む。


強い型付けと弱い型付け


静的型付けと動的型付け以外の分類としては強い型付けと弱い型付けという分類がある。静的型付けについて言われることが多く、強い静的型付け、弱い静的型付けのようにして使う。

この分類方法についてはあまり詳しく述べられないことが多い。定義が多数あって厳密な議論に向かない[外部]という事情があるようだ。


明示的な型付けと暗示的な型付け


の宣言が必要かどうかで、明示的な型付けと暗示的な型付けに分類するのだが、型推論の有という形で論じられることが多く、用としての出番はさらに少なめである。


関連動画



■sm15432355[ニコ動]


関連商品


■az4274069117


関連項目



最終更新日: 19/07/10 04:29
タグ検索 パソコン版を見る


[0]TOP
ニコニコ動画モバイル
運営元:ドワンゴ