First-class citizen (original) (raw)
Ein First-Class-Objekt (englisch first-class object, deutsch etwa „Objekt erster Klasse“) bezeichnet in der Programmierung von Computersystemen ein Objekt, das als Übergabeparameter oder Rückgabewert einer Funktion oder Prozedur auftritt bzw. einer Variablen zugewiesen werden kann. Der Begriff wurde von Christopher Strachey im Kontext functions as first-class citizens Mitte der 1960er Jahre geprägt.
Property | Value |
---|---|
dbo:abstract | First-Class Objekt (FCO) je perzistentní objekt, který má vlastní identitu, tedy lze se na něj odkazovat. Díky tomu lze takové objekty předávat jako parametry, používat jako návratové hodnoty funkcí nebo přiřazovat do proměnných. Typicky jsou to všechny objekty uložené aplikací. Objektu určitého datového typu v nějakém programovacím jazyce náleží označení first class objekt („objekt první kategorie“), když platí, že může být použit jako: * hodnota proměnné * vstup procedury * hodnota vracená procedurou * člen datového agregátu * anonymní (nepojmenovaný) Například má-li datový typ seznam být seznamem první kategorie, musí být možné uložit seznam do proměnné, zadat ho jako vstupní parametr do procedury, sestrojit proceduru, která bude vracet seznam, zadat seznam jako prvek jiného seznamu a také pracovat v programu s konkrétním seznamem, který nemá žádné jméno. V jazyce, který toto splňuje, je seznam seznamem první kategorie. Ideálně by všechna data měla být first class, tj. být první kategorie. Je přitom důležité si uvědomovat, že označení first class náleží k datovému typu, nikoli ke konkrétní hodnotě. (cs) Ein First-Class-Objekt (englisch first-class object, deutsch etwa „Objekt erster Klasse“) bezeichnet in der Programmierung von Computersystemen ein Objekt, das als Übergabeparameter oder Rückgabewert einer Funktion oder Prozedur auftritt bzw. einer Variablen zugewiesen werden kann. Der Begriff wurde von Christopher Strachey im Kontext functions as first-class citizens Mitte der 1960er Jahre geprägt. (de) In programming language design, a first-class citizen (also type, object, entity, or value) in a given programming language is an entity which supports all the operations generally available to other entities. These operations typically include being passed as an argument, returned from a function, and assigned to a variable. (en) En informatique, un objet de première classe (ou valeur de première classe, ou entité de première classe) dans le contexte d'un langage de programmation particulierest une entité qui peut être utilisée sans restriction[réf. nécessaire].Selon le langage, cela peut impliquer : * être expressible comme une valeur anonyme littérale ; * être affecté à des variables ou des structures de données ; * avoir une identité intrinsèque ; * être comparable pour l'égalité ou l'identité avec d'autres entités ; * pouvoir être passé comme paramètre à une procédure ou une fonction ; * pouvoir être renvoyé par une procédure ou une fonction ; * pouvoir être constructible lors de l'exécution. Par exemple, en C, il n'est pas possible de créer de nouvelles fonctions à l'exécution alors que d'autres sortes d'entités peuvent l'être. Donc, en C, les fonctions ne sont pas des objets de première classe[réf. nécessaire]. Elles sont donc quelquefois appelées objets de seconde classe car elles peuvent être manipulées de la plupart des manières décrites ci-dessus. Elles peuvent l'être grâce à des pointeurs de fonctions[réf. nécessaire]. De manière similaire, les chaînes de caractères ne sontpas des entités de première classe en FORTRAN 66 car elles ne peuvent pas être assignées à des variables alors que les nombres peuvent l'être[réf. nécessaire]. (fr) 컴퓨터 프로그래밍 언어 디자인에서, 일급 객체(영어: first-class object)란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다. 보통 함수에 인자로 넘기기, 수정하기, 변수에 대입하기와 같은 연산을 지원할 때 일급 객체라고 한다. (ko) W językach programowania typ pierwszoklasowy (ang. first-class type), jak również obiekt pierwszoklasowy (ang. first-class object) czy ogólniej jednostka pierwszej kategorii (ang. first-class citizen) jest konstruktem służącym do przechowywania danych, na którym możemy wykonywać takie same operacje, jak na danych innych, wbudowanych typów, takich jak np. liczby czy ciągi znaków. Obiekt typu pierwszoklasowego ma więc następujące właściwości: * może być przechowywany w zmiennych (bądź wiązany z nazwą, gdy język nie obsługuje typowych zmiennych) i stanowić element złożonych struktur danych; * może być przekazywany jako wartość argumentu podczas wywoływania procedury/funkcji; * może być zwracany przez procedury/funkcje; * może być tworzony podczas działania programu; * ma ekstensjonalną tożsamość (zależną od wartości, niezależną od nazwy). Wobec powyższych musi mieć takie same właściwości, jak dane typów wbudowanych. W językach silnie obiektowo zorientowanych, takich jak Python, każda klasa wartości jest typem pierwszoklasowym (liczby, klasy, łańcuchy znaków, listy, funkcje) implementowanym na bazie obiektowego systemu typów. Ciekawym przykładem są również dialekty języka Lisp, a także inne języki homoikoniczne (np. Prolog, SNOBOL czy Rebol), gdzie jednostkami pierwszej kategorii są nawet wyrażenia kodu źródłowego. Otwiera to drogę do rozszerzania języków o nowe konstrukcje i budowania zagnieżdżonych interpreterów języków dziedzinowych. Jeżeli w danym języku funkcje są jednostkami pierwszej kategorii (występuje tzw. typ funkcyjny), można w nim definiować funkcje wyższego rzędu (operujące na innych funkcjach). Jest to cecha języków funkcyjnych. (pl) 第一級オブジェクト(ファーストクラスオブジェクト、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) No design das linguagens de programação, a tradução literal de First-class Citizen: Cidadão de Primeira Classe (também tipo, objeto, entidade ou valor de primeira classe) em uma determinada linguagem de programação é uma entidade que suporta todas as operações geralmente disponíveis para outras entidades. Estas operações incluem, normalmente, ser passado como um argumento, retornado por uma função, modificado, e atribuído à variáveis. (pt) Объектами первого класса (англ. first-class object, first-class entity, first-class citizen) в контексте конкретного языка программирования называются элементы, которые могут быть переданы как параметр, возвращены из функции, присвоены переменной. Понятие объектов первого и второго классов было предложено в 1967 г. Кристофером Стрэчи в статье «Understanding Programming Languages», где процедуры языка Алгол, в противоположность действительным числам, он сравнил с подвергающимися социальной дискриминации «людьми второго сорта» (англ. second-class citizens). (ru) 頭等物件(英語:First-class object),在電腦科學中,指称支持其他实体通常能获得的所有运算的实体。这些运算典型的包括:在執行期創造,作為參數傳遞給其他函數,或存入一個變數等。將一個實體變為頭等物件的過程叫做「物件化」(Reification)。 「頭等物件」這一名稱最早由克里斯托弗·斯特雷奇在1960年代發明,原稱「頭等公民」(First-class citizen),意指函數可作為電腦語言中的頭等公民。英文中也稱「First-class entity」或「First-class value」。 (zh) Об'єкт першого класу (також англ. First-class citizen, громадянин першого класу) — сутність, яка може бути побудована в рантаймі (під час виконання програми), передаватись як параметр, повертатись з підпрограми, або присвоюватись змінній. Цей термін був придуманий Крістофером Стречі в контексті «функції як громадяни першого сорту» в середині 1960-х років. (uk) |
dbo:wikiPageID | 662844 (xsd:integer) |
dbo:wikiPageLength | 10286 (xsd:nonNegativeInteger) |
dbo:wikiPageRevisionID | 1116281241 (xsd:integer) |
dbo:wikiPageWikiLink | dbr:Python_(programming_language) dbr:Robin_Popplestone dbr:Ruby_(programming_language) dbr:Scala_(programming_language) dbr:Scheme_(programming_language) dbr:Message_(object-oriented_programming) dbr:Metaobject dbr:Delphi_(programming_language) dbr:Perl dbr:Common_Lisp dbr:Coq dbr:Rust_(programming_language) dbr:Generic_function dbr:Object-oriented_programming dbr:Christopher_Strachey dbr:Class_(computer_programming) dbr:Closure_(computer_science) dbr:GOTO dbr:Continuation dbr:Anonymous_function dbr:Lisp_(programming_language) dbr:ML_(programming_language) dbc:Object_(computer_science) dbr:Smalltalk dbr:Data_types dbr:Dependent_types dbr:Function_pointer dbr:C_(programming_language) dbr:ALGOL dbr:Agda_(programming_language) dbr:Dart_(programming_language) dbr:F_Sharp_(programming_language) dbr:Fexpr dbr:First-class_data_type dbr:PHP dbr:Raphael_Finkel dbr:Reification_(computer_science) dbr:Haskell_(programming_language) dbr:JavaScript dbr:Java_programming_language dbr:Array_data_type dbc:Programming_constructs dbc:Programming_language_design dbr:Swift_(programming_language) dbr:Idris_(programming_language) dbr:Kotlin_(programming_language) dbr:Metaclass dbr:Metalanguage dbr:Objective-C dbr:Raku_(programming_language) dbr:Reflection_(computer_programming) dbr:Macro_(computer_science) dbr:Meta-circular_evaluator dbr:Scalar_(computing) dbr:Impredicative_polymorphism dbr:Programming_language dbr:Eval dbr:First-class_function dbr:First-class_message dbr:First-class_polymorphism dbr:Pointer_(computing) dbr:Fortran_IV dbr:First-class_control dbr:First-class_type dbr:Function_(programming) dbr:First-class_class dbr:Generic_Haskell dbr:Proof_object |
dbp:wikiPageUsesTemplate | dbt:Better_source_needed dbt:Citation_needed dbt:For dbt:Main_article dbt:Reflist dbt:Short_description |
dcterms:subject | dbc:Object_(computer_science) dbc:Programming_constructs dbc:Programming_language_design |
gold:hypernym | dbr:Entity |
rdf:type | yago:Abstraction100002137 yago:Cognition100023271 yago:Concept105835747 yago:Content105809192 yago:Idea105833840 yago:PsychologicalFeature100023100 dbo:Organisation yago:WikicatProgrammingConstructs |
rdfs:comment | Ein First-Class-Objekt (englisch first-class object, deutsch etwa „Objekt erster Klasse“) bezeichnet in der Programmierung von Computersystemen ein Objekt, das als Übergabeparameter oder Rückgabewert einer Funktion oder Prozedur auftritt bzw. einer Variablen zugewiesen werden kann. Der Begriff wurde von Christopher Strachey im Kontext functions as first-class citizens Mitte der 1960er Jahre geprägt. (de) In programming language design, a first-class citizen (also type, object, entity, or value) in a given programming language is an entity which supports all the operations generally available to other entities. These operations typically include being passed as an argument, returned from a function, and assigned to a variable. (en) 컴퓨터 프로그래밍 언어 디자인에서, 일급 객체(영어: first-class object)란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다. 보통 함수에 인자로 넘기기, 수정하기, 변수에 대입하기와 같은 연산을 지원할 때 일급 객체라고 한다. (ko) No design das linguagens de programação, a tradução literal de First-class Citizen: Cidadão de Primeira Classe (também tipo, objeto, entidade ou valor de primeira classe) em uma determinada linguagem de programação é uma entidade que suporta todas as operações geralmente disponíveis para outras entidades. Estas operações incluem, normalmente, ser passado como um argumento, retornado por uma função, modificado, e atribuído à variáveis. (pt) Объектами первого класса (англ. first-class object, first-class entity, first-class citizen) в контексте конкретного языка программирования называются элементы, которые могут быть переданы как параметр, возвращены из функции, присвоены переменной. Понятие объектов первого и второго классов было предложено в 1967 г. Кристофером Стрэчи в статье «Understanding Programming Languages», где процедуры языка Алгол, в противоположность действительным числам, он сравнил с подвергающимися социальной дискриминации «людьми второго сорта» (англ. second-class citizens). (ru) 頭等物件(英語:First-class object),在電腦科學中,指称支持其他实体通常能获得的所有运算的实体。这些运算典型的包括:在執行期創造,作為參數傳遞給其他函數,或存入一個變數等。將一個實體變為頭等物件的過程叫做「物件化」(Reification)。 「頭等物件」這一名稱最早由克里斯托弗·斯特雷奇在1960年代發明,原稱「頭等公民」(First-class citizen),意指函數可作為電腦語言中的頭等公民。英文中也稱「First-class entity」或「First-class value」。 (zh) Об'єкт першого класу (також англ. First-class citizen, громадянин першого класу) — сутність, яка може бути побудована в рантаймі (під час виконання програми), передаватись як параметр, повертатись з підпрограми, або присвоюватись змінній. Цей термін був придуманий Крістофером Стречі в контексті «функції як громадяни першого сорту» в середині 1960-х років. (uk) First-Class Objekt (FCO) je perzistentní objekt, který má vlastní identitu, tedy lze se na něj odkazovat. Díky tomu lze takové objekty předávat jako parametry, používat jako návratové hodnoty funkcí nebo přiřazovat do proměnných. Typicky jsou to všechny objekty uložené aplikací. Objektu určitého datového typu v nějakém programovacím jazyce náleží označení first class objekt („objekt první kategorie“), když platí, že může být použit jako: * hodnota proměnné * vstup procedury * hodnota vracená procedurou * člen datového agregátu * anonymní (nepojmenovaný) (cs) En informatique, un objet de première classe (ou valeur de première classe, ou entité de première classe) dans le contexte d'un langage de programmation particulierest une entité qui peut être utilisée sans restriction[réf. nécessaire].Selon le langage, cela peut impliquer : (fr) 第一級オブジェクト(ファーストクラスオブジェクト、first-class object)は、あるプログラミング言語において、たとえば生成、代入、演算、(引数・戻り値としての)受け渡しといったその言語における基本的な操作を制限なしに使用できる対象のことである。ここで「オブジェクト」とは広く対象物・客体を意味し、必ずしもオブジェクト指向プログラミングにおけるオブジェクトを意味しない。第一級オブジェクトは「第一級データ型に属す」という。 この言葉は1960年代にクリストファー・ストレイチーによって「functions as first-class citizens」という文脈で初めて使われた。 言語によって異なるが、第一級オブジェクトは概ね次のような性質をもつ。 * 無名のリテラルとして表現可能である。 * 変数に格納可能である。 * データ構造に格納可能である。 * それ自体が独自に存在できる(名前とは独立している)。 * 他のものとの等値性の比較が可能である。 * プロシージャや関数のパラメータとして渡すことができる。 * プロシージャや関数の戻り値として返すことができる。 * 実行時に構築可能である。 * 表示可能である。 * 読み込むことができる。 * 分散したプロセス間で転送することができる。 * 実行中のプロセスの外に保存することができる。 (ja) W językach programowania typ pierwszoklasowy (ang. first-class type), jak również obiekt pierwszoklasowy (ang. first-class object) czy ogólniej jednostka pierwszej kategorii (ang. first-class citizen) jest konstruktem służącym do przechowywania danych, na którym możemy wykonywać takie same operacje, jak na danych innych, wbudowanych typów, takich jak np. liczby czy ciągi znaków. Obiekt typu pierwszoklasowego ma więc następujące właściwości: Wobec powyższych musi mieć takie same właściwości, jak dane typów wbudowanych. (pl) |
rdfs:label | First-class objekt (cs) First-Class-Objekt (de) First-class citizen (en) Objet de première classe (fr) 일급 객체 (ko) 第一級オブジェクト (ja) Typ pierwszoklasowy (pl) Cidadão de primeira classe (pt) Объект первого класса (ru) 頭等物件 (zh) Об'єкт першого класу (uk) |
owl:sameAs | freebase:First-class citizen yago-res:First-class citizen wikidata:First-class citizen dbpedia-cs:First-class citizen dbpedia-de:First-class citizen dbpedia-fr:First-class citizen dbpedia-ja:First-class citizen dbpedia-ko:First-class citizen dbpedia-pl:First-class citizen dbpedia-pt:First-class citizen dbpedia-ru:First-class citizen dbpedia-sr:First-class citizen dbpedia-uk:First-class citizen dbpedia-zh:First-class citizen https://global.dbpedia.org/id/2pEFh |
prov:wasDerivedFrom | wikipedia-en:First-class_citizen?oldid=1116281241&ns=0 |
foaf:isPrimaryTopicOf | wikipedia-en:First-class_citizen |
is dbo:wikiPageRedirects of | dbr:First-class_(object) dbr:First-class_data_type dbr:First-class_citizen_(computing) dbr:First-class_datatype dbr:First-class_entity dbr:First-class_entity_(computing) dbr:First-class_object dbr:First-class_type dbr:First-class_value dbr:First-class_values dbr:First_class_citizen dbr:First_class_object dbr:Second-class_object dbr:Second-class_value dbr:Third-class_object |
is dbo:wikiPageWikiLink of | dbr:Declarative_programming dbr:ECL_programming_language dbr:Common_Lisp dbr:Concurrent_ML dbr:S-algol dbr:SMPTE_2071 dbr:Class_(computer_programming) dbr:Mach_(kernel) dbr:Callback_(computer_programming) dbr:Functional_programming dbr:Business_Process_Execution_Language dbr:C++11 dbr:Darcs dbr:First-class_(object) dbr:First-class_data_type dbr:Flix_(programming_language) dbr:History_of_the_Scheme_programming_language dbr:Reification_(computer_science) dbr:Third_class dbr:CDuce dbr:PicoLisp dbr:Metaclass dbr:Metafont dbr:NewLISP dbr:First-class_function dbr:XLDB dbr:First-class_citizen_(computing) dbr:First-class_datatype dbr:First-class_entity dbr:First-class_entity_(computing) dbr:First-class_object dbr:First-class_type dbr:First-class_value dbr:First-class_values dbr:First_class_citizen dbr:First_class_object dbr:Second-class_object dbr:Second-class_value dbr:Third-class_object |
is foaf:primaryTopic of | wikipedia-en:First-class_citizen |