型システムとは? わかりやすく解説

型システム [type system]


型システム

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/08/06 04:25 UTC 版)

型システム(かたシステム、: type system)は、コンピュータプログラミングの数々の構成要素およびに対して、(type)と呼ばれる特性を付与するための数々の規則群から成立している形式体系である[1]。型の付与は、型付け(typing)と言われる。例えば、変数関数モジュールオブジェクトなどが型の付与対象になり、それらの型付け要素を規則的な関係でまとめたデータ構造にも型は付与されてカテゴライズされる。


注釈

  1. ^ : nominalは公称的、名目的または記名的とも訳される。

出典

  1. ^ Pierce 2002, p. 1: "A type system is a tractable syntactic method for proving the absence of certain program behaviors by classifying phrases according to the kinds of values they compute."
  2. ^ Cardelli 2004, p. 1: "The fundamental purpose of a type system is to prevent the occurrence of execution errors during the running of a program."
  3. ^ 型システム入門』 p. 1
  4. ^ 6-1. バッファオーバーラン その1「こうして起こる」
  5. ^ 非Java言語のサポート | Oracle Help Center | Java SE 11 | Java仮想マシン・ガイド
  6. ^ a b Benjamin C. Pierce「19.3 名前的型システムと構造的型システム」 『型システム入門 −プログラミング言語と型の理論−』オーム社、2013年3月26日。ISBN 978-4274069116 
  7. ^ http://web.cecs.pdx.edu/~harry/musings/SmalltalkOverview.html
  8. ^ Duck Typing vs Structural Typing vs Nominal Typing | by Saurabh Nayar | Higher-Order Functions | Medium
  9. ^ Structural Typing: Compile Time Duck Typing
  10. ^ typing --- 型ヒントのサポート — Python 3.9.4 ドキュメント
  11. ^ C# Coding Conventions | Microsoft Docs



型システム

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2017/03/05 01:46 UTC 版)

XL (プログラミング言語)」の記事における「型システム」の解説

XL1の型システムは静的型付けだが、ジェネリックプログラミング方式がAbaやC++などの言語とは異なる。配列ポインタなどは、C++ではプリミティブ型であるが、XLではライブラリ定義される。以下に一次元配列の定義を例示するgeneric [Item : type; Size : integer] type array 有効なジェネリック型(validated generic type)とは、その型がどのように使われるかを自身表せる型であり、このような型にはジェネリック引数必要ない。例として、不等号を含むときに型をordered宣言するものを示す。 // A type is ordered if it has a less-than relationshipgeneric type ordered if A, B : ordered Test : boolean := A < B これによって、ordered自身ジェネリックとなるから、潜在的にジェネリックとなる関数定義することが可能となる。 // Generic function for the minimum of one itemfunction Min(X : ordered) return ordered is ... compute Y of type ordered ... return Y さらに、arrayのようなパラメータを持つジェネリック型にも適用できる任意の配列(array)の和を計算する関数を以下に示す。 function Sum(A : array) return array.Item is for I in 0..array.Size-1 loop result += A[I]

※この「型システム」の解説は、「XL (プログラミング言語)」の解説の一部です。
「型システム」を含む「XL (プログラミング言語)」の記事については、「XL (プログラミング言語)」の概要を参照ください。


型システム

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/05 19:25 UTC 版)

Rust (プログラミング言語)」の記事における「型システム」の解説

Rust言語備える型システムは、impl実装)、traitトレイト)、struct構造体)およびenum列挙型)を基本として構成されるimpl他の言語におけるクラスに近い役割果たし継承ポリモーフィズムtraitによって提供されるtraitにはメソッド定義することができ、trait宣言されメソッドimplによってstructミックスインされる。structにはフィールドが定義可能で、traitimplはそれ自身にはフィールドは定義できないenumには複数種類の型のカテゴリ変数が定義可能で、数値型文字列型オブジェクト型などの複数の状態を選択的に持ちうる。菱形継承問題回避するためにtraitのみが継承が可能である。 変数の型を決定する型システムは静的型付けかつ強い型付けである。静的型付けと動的型付け区分においての型付けは、コンパイル時に全ての変数に対して型を決定する静的型付けのみをサポートしている。そのため、PerlPythonのようなインタプリタ言語見られるような、実行時変数の型を動的に上書きすることはできない強い型付けと弱い型付け区分においての型付けは、実行時変数の型を型変換アップキャストダウンキャストクロスキャスト)およびボクシングをすることを許さない強い型付けのみをサポートしている。C言語Java実行時型変換をすることを許す弱い型付けサポートしているが、Rust言語ではそのような型変換認められていない。これら二点の静的型付けかつ強い型付け特性により、変数の型は宣言時のもので決定的に固定される

※この「型システム」の解説は、「Rust (プログラミング言語)」の解説の一部です。
「型システム」を含む「Rust (プログラミング言語)」の記事については、「Rust (プログラミング言語)」の概要を参照ください。


型システム

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/01/06 04:20 UTC 版)

関数型プログラミング」の記事における「型システム」の解説

詳細は「型システム」を参照 Hindley–Milner型システムの登場以降関数型プログラミングは、型付きラムダ計算背景にした静的型付け標準になっているLisp系で実践されていた型無しラムダ計算背景にした動的型付けは、その対極位置付けられている。Hindley–Milner型システム(英語版)がもたらした型推論もまた関数型プログラミング標準になっている型推論ルールでの各変数の型は、それに束縛される値を導出した各項と各評価値から演繹的に判別されるので、各変数への型説明や型注釈表記省略できる。 項の直積および項の直和形式的な組み合わせ構造である代数的データ型は、型推論ルール適したデータ構造表現方法として関数型プログラミング標準になっている代数的データ型パラメトリック多相英語版)で総称化されているのが標準であり、Hindley–Milner型システムはその型変数化された項への型推論にも対応可能である。

※この「型システム」の解説は、「関数型プログラミング」の解説の一部です。
「型システム」を含む「関数型プログラミング」の記事については、「関数型プログラミング」の概要を参照ください。


型システム

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/08 01:14 UTC 版)

プログラミング言語」の記事における「型システム」の解説

詳細は「型システム」を参照 型システムは、プログラミング言語において式の値となるデータ型について、型理論もとづいて分類しどう扱うかを示すものであるまた、内部的には、ディジタルコンピュータでは全てのデータバイナリ二進法)で保持される

※この「型システム」の解説は、「プログラミング言語」の解説の一部です。
「型システム」を含む「プログラミング言語」の記事については、「プログラミング言語」の概要を参照ください。


型システム

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/11/30 03:37 UTC 版)

Cypher (問い合わせ言語)」の記事における「型システム」の解説

Cypherデータ型は、他のプログラミング言語クエリ言語使用される一般的な型多く含まれています。サポートされる型は、ブール文字列数値整数浮動小数点数などのスカラー値の型が含まれます。また、datetime、localdatetime、datetimelocaltimedurationなどの時間型もサポートしてます。

※この「型システム」の解説は、「Cypher (問い合わせ言語)」の解説の一部です。
「型システム」を含む「Cypher (問い合わせ言語)」の記事については、「Cypher (問い合わせ言語)」の概要を参照ください。


型システム

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/27 00:27 UTC 版)

Haxe」の記事における「型システム」の解説

Haxeでは細かい型宣言が可能である。 function func1(threeDimensionalArray:Array>>, string:String, bool:Bool) { ... }// オプションのInt整数値を渡し、Intを返すfunction func2(?i:Int):Int { return 0;}// 引数のない関数をパラメータとして渡すfunction func3(f:Void -> Void) { f();}// Intを渡しIntを返す関数をパラメータとして渡すfunction func4(f:Int -> Int) { var result = f(1);}// 任意型を取り、任意型を返すfunction func5(d:Dynamic):Dynamic { return d;} Haxeは静的型付き言語であるが、Dynamic型やuntypedを用いることで部分的に型チェックを無効化できる。逆にexternクラスによる型定義を行うことで、動的型のターゲットのライブラリに対して型チェックを有効にして連携できる。

※この「型システム」の解説は、「Haxe」の解説の一部です。
「型システム」を含む「Haxe」の記事については、「Haxe」の概要参照ください


型システム

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/11/24 14:08 UTC 版)

GObject」の記事における「型システム」の解説

GObjectフレームワーク基盤として、汎用の動的型システム GType がある。GTypeシステムは全オブジェクト実行時記述保持し各種言語バインディング実現するグルーコードからそれを使うことができる。型システムは任意の単一継承クラス階層扱え同時にクラスでないデータ型扱える不透明ポインタ文字列各種サイズ整数浮動小数点数など)。 GType登録されている型に属する値のコピー代入破棄方法知っている整数などの型ではこれらは自明だが、複雑なオブジェクトには参照カウントがあるものもあれば、(一部だが)参照カウントのないものもある。型システムが参照カウントのあるオブジェクトを「コピー」するとき、一般に単に参照カウントインクリメントするだけである。しかし、参照カウントのないオブジェクト例え文字列)のコピーでは、メモリ確保して実際にコピー生成する。 この基本機能使って GValue が実装されている。これは汎用コンテナ型であり、型システムが把握している任意の型の値を保持できるこのようなコンテナは、全てのネイティブ値をそのような型タグコンテナに格納する動的型付き言語やりとりする際に特に便利である。

※この「型システム」の解説は、「GObject」の解説の一部です。
「型システム」を含む「GObject」の記事については、「GObject」の概要を参照ください。


型システム

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/09/16 08:53 UTC 版)

型理論」の記事における「型システム」の解説

詳細は「型システム」を参照 型システムの定義は様々だが、プログラミング言語理論世界では Benjamin C. Pierce の定義が一般に受け入れられている。 (型システムは)プログラム計算する値の種類に従って句(phrase)を分類することで、そのプログラムがある動作をしないことを証明する扱いやすい文法的手法である。 (Pierce 2002) 換言すれば、型システムはプログラムの値を「型」と呼ばれる集合分類し(これを「型設定」あるいは「型割り当て」と呼ぶ)、特定のプログラム動作が不正であることを示す。例えば、"hello" という値を文字列型、5 という値を整数型としたとき、プログラマに "hello" と 5 を加算できないといった制限課すのであるこのような型システムでは、次のプログラム "hello" + 5 は不正である。もちろん、文字列整数加算することを許す型システムもありうる。 型システムの設計と実装は、プログラミング言語そのものと同じ程度広がり持った話題である。実際プログラミング言語最大基盤は型システムであるとも言われ、「型システムを正しく設計すれば、言語自分自身設計されると言われている[要出典]。

※この「型システム」の解説は、「型理論」の解説の一部です。
「型システム」を含む「型理論」の記事については、「型理論」の概要を参照ください。

ウィキペディア小見出し辞書の「型システム」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「型システム」の関連用語

型システムのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



型システムのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2024 Microsoft.All rights reserved.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの型システム (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのXL (プログラミング言語) (改訂履歴)、Rust (プログラミング言語) (改訂履歴)、関数型プログラミング (改訂履歴)、プログラミング言語 (改訂履歴)、Cypher (問い合わせ言語) (改訂履歴)、Haxe (改訂履歴)、GObject (改訂履歴)、型理論 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS