Kazuma Labolatory's

Nothing is Impossible. ✿

Menu

プログラミングにおける、「ファーストクラス」の意味

先ずは、通常での "first class" の定義を見てみます。

Definition

「first class」 -Merriam Webster-

meaning of "First-class" in Programming

WikiWikiWeb/FirstClass

First Class

A language construct is said to be a FirstClass value in that language when there are no restrictions on how it can be created and used: when the construct can be treated as a value without restrictions.

FirstClass features can be stored in variables, passed as arguments to functions, created within functions and returned from functions. In dynamically typed languages, a FirstClass feature can also have its type examined at run-time.

Languages vary as to what is FirstClass. Some, such as the CeeLanguage have only basic types (ints, pointers; in particular, arrays are not truly FirstClass though the array/pointer equivalence lets you fake it in most situations). In ObjectOriented languages such as CeePlusPlus, objects are FirstClass but classes are not, while in SmalltalkLanguage or RubyLanguage, for example, all references including references to class objects are FirstClass. In FunctionalProgramming, functions are FirstClass.

Some authors, such as Raphael A. Finkel in AdvancedProgrammingLanguageDesign, also define the terms SecondClass and ThirdClass (pg76); different authors have varying definitions of exactly what properties things should have to be considered first, second, or third class, but the terms are typically broadly similar to Finkel's.

 

 

[翻訳: 和馬]

ファーストクラス

言語の構成要素*1 は、その作成・使用のされ方に制約がない場合、その言語の FirstClass値と言われます。つまり、構成要素が何の制約も受けずに「値」として扱われる場合、その構成要素(値)を、FirstClass値と呼ぶ事ができます。

FirstClass(値)は、「変数に割り当てる」「関数に引数として渡す」「関数内で作成されたFirstClass値を、関数の返値にする」事ができます。また、動的なタイプの言語では、FirstClass値は型も持ち、実行時に調べることが出来ます。

何がFirstClassなのかは、言語によって異なります。 CeeLanguageのようなものは、基本的な型(int、ポインタ)しか持たないものがあります。特に、配列/ポインタの同等性によってほとんどの状況で偽装できますが、配列は実はFirstClassではありません。 CeePlusPlusなどのObject指向言語では、ObjectはFirstClassですがclassはFirstClassではありません。Smalltalk、Rubyでは、クラスオブジェクトへの参照を含むすべての参照がFirstClassです。 関数的プログラミングでは、関数はFirstClassです。

AdvancedProgrammingLanguageDesignのRaphael A. Finkelのような著者の中では、セカンドクラス(SecondClass)とサードクラス(ThirdClass) という用語も定義されています。第1クラス、第2クラス、第3クラスのプロパティの正確な定義は、著者により様々ですが、これらの用語は一般的にFinkelに似ています。

::: 語彙 :::

配列 - array
関数 - function
関数的プログラミング - functional programming
型 - type
引数 - argument

これは凄く重要ですね ✨(⁼̴̀ૢ꒳​⁼̴́ૢ๑) きっちり説明してありますね✨✨(⁼̴̀ૢ꒳​⁼̴́ૢ๑)♪♪

JavaScript で 、「Fnuction is FirstClass Object」という記述をよく見かけたのですが、つまりその意味は、「JavaScriptでは、 function は FirstClass(値) だ」という事ですね。要するに、『関数を、"変数に割り当てる・引数として関数に渡す・関数の返値にする" 事ができる』という事なのですね✨(⁼̴̀ૢ꒳​⁼̴́ૢ๑) しっかり理解しました🌟

WikiWikiWeb

ちなみに、このWikiWikiWeb (Wiki.c2.com) は、Wikipedia の源流とも言えるWebサイトさんです。何となく聞いた事はありましたが、まさか今回参照したサイトさんがそれで、サイトやWikiediaを参照し、はっきり理解しました。

WikiWikiWebは、Ward Cunningham(ワード・カニングハム) というプログラマの方が始められ、Web developer, engeneer 向けに、知識コンテンツ(ソフトウェアデザインパターン等)を共有する目的のWebサイトらしいです。詳しくは本家サイトメインページ等ををご覧くださいませ(。•ㅅ•。)⭐︎

WikiWikiWeb -MainPage-

WikiWikiWeb/Wiki histry

WikiWikiWeb -Wikipedia.en-

*1:language construct

This Blog uses M+ Font, Logo Type Gothic, Google Fonts and FontAwesome. It"s free & Designed cool font. Greatful for Koji Morishita of M+ Fonts Designer( Creator) and "フォントな" , Google, Adobe, and Dave Gandy!
Background Photos is downloaded by Unsplash.com. Thanks!
|*´-`)チラッ
Please Click Me
本ブログ全てにおいて、アフィリエイトプログラムには参加しておりません(•ᵕᴗᵕ•) 詳しくはこちらをご覧下さい。また、 以下のバナーは、私が「質が高い・あら素敵(ˊo̶̶̷ᴗo̶̶̷`)✨」と感じたサイト様を掲載させて頂いておます_(( _๑´ω`))_⭐️