型付け 単語

1件

カタヅケ

2.3千文字の記事
  • twitter
  • facebook
  • はてな
  • LINE

型付けとは、

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

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

概要

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

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

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

静的型付けと動的型付け

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

最近では、動的型付け言語の代表格であるPythonexit, Rubyexitでも静的型付けの導入が検討されたり、JavaScriptに静的型付け等を導入したTypeScript開発されるなど、静的型付けのメリットを認める流れが優勢なようである。[1]

ここでは例として 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つの値の配列(配列の要素のもまた不定なので、ばらばらのを要素にする配列が可な言語が多い)を返せば済む。

強い型付けと弱い型付け

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

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

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

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

関連動画

関連商品

関連項目

脚注

  1. *一方で静的型付け言語のJavaでは、仮想マシンレベルで動的型付けが可な仕組みが導入された(もっともこれについてはJava仮想マシンで別の動的型付け言語を動かすことが的で、Javaの言語仕様に動的型付けを導入するためではないらしい)。最終的にはどの言語も静的型付けをとりつつ必要なところに動的型付けを使用できるといった形に落ち着くのかもしれない。
この記事を編集する

掲示板

おすすめトレンド

ニコニ広告で宣伝された記事

記事と一緒に動画もおすすめ!
東方[単語]

提供: 勇太郎

もっと見る

急上昇ワード改

最終更新:2025/03/21(金) 15:00

ほめられた記事

最終更新:2025/03/21(金) 14:00

ウォッチリストに追加しました!

すでにウォッチリストに
入っています。

OK

追加に失敗しました。

OK

追加にはログインが必要です。

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

ほめるの取消しに失敗しました。

OK

ほめるにはログインが必要です。

タグ編集にはログインが必要です。

タグ編集には利用規約の同意が必要です。