第一級オブジェクト(ファーストクラスオブジェクト、first-class object)は、あるプログラミング言語において、たとえば生成、代入、演算、(引数・戻り値としての)受け渡しといったその言語における基本的な操作を制限なしに使用できる対象のことである。ここで「オブジェクト」とは広く対象物・客体を意味し、必ずしもオブジェクト指向プログラミングにおけるオブジェクトを意味しない。第一級オブジェクトは「第一級データ型に属す」という。 この言葉は1960年代にクリストファー・ストレイチーによって「functions as first-class citizens」という文脈で初めて使われた。 言語によって異なるが、第一級オブジェクトは概ね次のような性質をもつ。 * 無名のリテラルとして表現可能である。 * 変数に格納可能である。 * データ構造に格納可能である。 * それ自体が独自に存在できる(名前とは独立している)。 * 他のものとの等値性の比較が可能である。 * プロシージャや関数のパラメータとして渡すことができる。 * プロシージャや関数の戻り値として返すことができる。 * 実行時に構築可能である。 * 表示可能である。 * 読み込むことができる。 * 分散したプロセス間で転送することができる。 * 実行中のプロセスの外に保存することができる。

Property Value
dbo:abstract
  • 第一級オブジェクト(ファーストクラスオブジェクト、first-class object)は、あるプログラミング言語において、たとえば生成、代入、演算、(引数・戻り値としての)受け渡しといったその言語における基本的な操作を制限なしに使用できる対象のことである。ここで「オブジェクト」とは広く対象物・客体を意味し、必ずしもオブジェクト指向プログラミングにおけるオブジェクトを意味しない。第一級オブジェクトは「第一級データ型に属す」という。 この言葉は1960年代にクリストファー・ストレイチーによって「functions as first-class citizens」という文脈で初めて使われた。 言語によって異なるが、第一級オブジェクトは概ね次のような性質をもつ。 * 無名のリテラルとして表現可能である。 * 変数に格納可能である。 * データ構造に格納可能である。 * それ自体が独自に存在できる(名前とは独立している)。 * 他のものとの等値性の比較が可能である。 * プロシージャや関数のパラメータとして渡すことができる。 * プロシージャや関数の戻り値として返すことができる。 * 実行時に構築可能である。 * 表示可能である。 * 読み込むことができる。 * 分散したプロセス間で転送することができる。 * 実行中のプロセスの外に保存することができる。 例えば、C言語やC++では、数値データや構造体は代入で使用でき、関数に渡すこともできる。しかし同じC/C++でも、配列(言語組み込みの固定長配列)は、代入することも関数に渡すこともできない。また、関数から返すこともできない。配列そのものではなく、ポインタもしくは参照を使って関数の引数や戻り値とすることしかできない。配列の各要素についてはできるが、配列全体をひとつとして扱うことはできない。そのため、C/C++の配列は、第一級オブジェクトではない。また、C/C++での関数は実行時に作成することができない。したがってC/C++では関数も第一級オブジェクトではない。ただし、関数ポインタを使用することで上の性質の多くを満たすことができるため、C/C++の関数を第二級オブジェクトという場合がある。FORTRAN 66における文字列は変数に格納することができないため、第一級オブジェクトではない。 Smalltalkでは、無名関数(ブロック)については他言語同様として、関数(メソッド)もクラスと同じように第一級オブジェクトである(CompiledMethodクラスのインスタンス。実体はバイトコード列でクラスのメソッド辞書に値として格納されている)。演算子(+、-)もSmalltalkではメソッドで実現されているため、他の通常のメソッド同様やはり第一級オブジェクトである。 ほぼすべての言語において、整数や浮動小数点数などの最も単純なデータ型は第一級オブジェクトである。古い言語(例えば上述のC/C++)においては配列は第一級オブジェクトではなかった。それらはオブジェクトとして例えば直接代入することはできず、その要素のみを個別に扱うことしかできなかった。 (ja)
  • 第一級オブジェクト(ファーストクラスオブジェクト、first-class object)は、あるプログラミング言語において、たとえば生成、代入、演算、(引数・戻り値としての)受け渡しといったその言語における基本的な操作を制限なしに使用できる対象のことである。ここで「オブジェクト」とは広く対象物・客体を意味し、必ずしもオブジェクト指向プログラミングにおけるオブジェクトを意味しない。第一級オブジェクトは「第一級データ型に属す」という。 この言葉は1960年代にクリストファー・ストレイチーによって「functions as first-class citizens」という文脈で初めて使われた。 言語によって異なるが、第一級オブジェクトは概ね次のような性質をもつ。 * 無名のリテラルとして表現可能である。 * 変数に格納可能である。 * データ構造に格納可能である。 * それ自体が独自に存在できる(名前とは独立している)。 * 他のものとの等値性の比較が可能である。 * プロシージャや関数のパラメータとして渡すことができる。 * プロシージャや関数の戻り値として返すことができる。 * 実行時に構築可能である。 * 表示可能である。 * 読み込むことができる。 * 分散したプロセス間で転送することができる。 * 実行中のプロセスの外に保存することができる。 例えば、C言語やC++では、数値データや構造体は代入で使用でき、関数に渡すこともできる。しかし同じC/C++でも、配列(言語組み込みの固定長配列)は、代入することも関数に渡すこともできない。また、関数から返すこともできない。配列そのものではなく、ポインタもしくは参照を使って関数の引数や戻り値とすることしかできない。配列の各要素についてはできるが、配列全体をひとつとして扱うことはできない。そのため、C/C++の配列は、第一級オブジェクトではない。また、C/C++での関数は実行時に作成することができない。したがってC/C++では関数も第一級オブジェクトではない。ただし、関数ポインタを使用することで上の性質の多くを満たすことができるため、C/C++の関数を第二級オブジェクトという場合がある。FORTRAN 66における文字列は変数に格納することができないため、第一級オブジェクトではない。 Smalltalkでは、無名関数(ブロック)については他言語同様として、関数(メソッド)もクラスと同じように第一級オブジェクトである(CompiledMethodクラスのインスタンス。実体はバイトコード列でクラスのメソッド辞書に値として格納されている)。演算子(+、-)もSmalltalkではメソッドで実現されているため、他の通常のメソッド同様やはり第一級オブジェクトである。 ほぼすべての言語において、整数や浮動小数点数などの最も単純なデータ型は第一級オブジェクトである。古い言語(例えば上述のC/C++)においては配列は第一級オブジェクトではなかった。それらはオブジェクトとして例えば直接代入することはできず、その要素のみを個別に扱うことしかできなかった。 (ja)
dbo:wikiPageID
  • 1028154 (xsd:integer)
dbo:wikiPageLength
  • 1725 (xsd:nonNegativeInteger)
dbo:wikiPageRevisionID
  • 78547303 (xsd:integer)
dbo:wikiPageWikiLink
dct:subject
rdfs:comment
  • 第一級オブジェクト(ファーストクラスオブジェクト、first-class object)は、あるプログラミング言語において、たとえば生成、代入、演算、(引数・戻り値としての)受け渡しといったその言語における基本的な操作を制限なしに使用できる対象のことである。ここで「オブジェクト」とは広く対象物・客体を意味し、必ずしもオブジェクト指向プログラミングにおけるオブジェクトを意味しない。第一級オブジェクトは「第一級データ型に属す」という。 この言葉は1960年代にクリストファー・ストレイチーによって「functions as first-class citizens」という文脈で初めて使われた。 言語によって異なるが、第一級オブジェクトは概ね次のような性質をもつ。 * 無名のリテラルとして表現可能である。 * 変数に格納可能である。 * データ構造に格納可能である。 * それ自体が独自に存在できる(名前とは独立している)。 * 他のものとの等値性の比較が可能である。 * プロシージャや関数のパラメータとして渡すことができる。 * プロシージャや関数の戻り値として返すことができる。 * 実行時に構築可能である。 * 表示可能である。 * 読み込むことができる。 * 分散したプロセス間で転送することができる。 * 実行中のプロセスの外に保存することができる。 (ja)
  • 第一級オブジェクト(ファーストクラスオブジェクト、first-class object)は、あるプログラミング言語において、たとえば生成、代入、演算、(引数・戻り値としての)受け渡しといったその言語における基本的な操作を制限なしに使用できる対象のことである。ここで「オブジェクト」とは広く対象物・客体を意味し、必ずしもオブジェクト指向プログラミングにおけるオブジェクトを意味しない。第一級オブジェクトは「第一級データ型に属す」という。 この言葉は1960年代にクリストファー・ストレイチーによって「functions as first-class citizens」という文脈で初めて使われた。 言語によって異なるが、第一級オブジェクトは概ね次のような性質をもつ。 * 無名のリテラルとして表現可能である。 * 変数に格納可能である。 * データ構造に格納可能である。 * それ自体が独自に存在できる(名前とは独立している)。 * 他のものとの等値性の比較が可能である。 * プロシージャや関数のパラメータとして渡すことができる。 * プロシージャや関数の戻り値として返すことができる。 * 実行時に構築可能である。 * 表示可能である。 * 読み込むことができる。 * 分散したプロセス間で転送することができる。 * 実行中のプロセスの外に保存することができる。 (ja)
rdfs:label
  • 第一級オブジェクト (ja)
  • 第一級オブジェクト (ja)
owl:sameAs
prov:wasDerivedFrom
foaf:isPrimaryTopicOf
is dbo:wikiPageRedirects of
is dbo:wikiPageWikiLink of
is owl:sameAs of
is foaf:primaryTopic of