ロゴ
ユニオンペディア
コミュニケーション
Google Play で手に入れよう
新しい! あなたのAndroid™デバイスでユニオンペディアをダウンロードしてください!
無料
ブラウザよりも高速アクセス!
 

Schemeとブロック (プログラミング)

ショートカット: 違い類似点ジャカード類似性係数参考文献

Schemeとブロック (プログラミング)の違い

Scheme vs. ブロック (プログラミング)

Scheme(スキーム)はコンピュータ・プログラミング言語 Lispの方言のひとつで、静的スコープなどが特徴である。仕様(2017年現在、改7版まで存在する)を指すこともあれば、実装を指すこともある。Schemeにより、Lisp方言に静的スコープが広められた。. プログラミング言語におけるブロック(block)は、コードのまとまり(コードブロック)のことで、「文 (プログラミング) 」(statement)から成る言語では複数個(0個以上~2個以上。言語により異なる)の文がまとまってひとつの文になっているブロックを複文(compound statement)と呼ぶものもある。「区」という訳語を使っている仕様もある。雰囲気としては自然言語における段落にも似ているが、現代言語学を知っていれば、プログラミング言語における「文」と「ブロック」の関係は、言語学でいう「語」と「句」の関係に近い。 なおプログラミング関係で、これと全く違うものに、他にも「ブロック」という語を使うものがいくつかあるので注意。入出力について「待たされる(ブロックされる)」という意味や、一種のクロージャの実装であるC言語の拡張のブロックなどである。 ブロックには、C言語に代表される、で囲まれるスタイル、ALGOLにはじまり、その影響を受けたPascalやAdaなど、beginとendのようなキーワードで囲むスタイル、Pythonなどのオフサイドルールによるスタイルなどがある。 自然言語の段落と異なり、ブロックは入れ子にすることができる(つまり、言語学でいう「語」と「句」のほうに近い、とはそういうことである)。すなわち、ブロック内にブロックを作成することができる(正確な理解としては、ブロックは文の一種であり、ブロックの中身は文の並びであるから、ブロックの中身にまたブロックが現れることもできる、ということになる。プログラミング言語の学習においては、絶対的に不正確な理解に直結する自然言語からの類推ではなく、プログラミング言語は形式言語なのであるから、BNFなど形式的な(フォーマルな)仕様などを理解できるように努めたほうが、結果として早道である)。 C言語などでは、ブロックは変数のスコープ(可視範囲。生存期間(エクステント)とは違うので注意)の区切りである。すなわち、あるブロック内で定義された変数には((前置単項 & 演算子と)ポインタ等により、エスケープされない限り(エスケープ解析を参照))ブロック外からはアクセスできない。JavaScriptは、以前はブロックは変数のスコープに影響しないという仕様だったが、ECMAScript 6th Edition(ECMAScript 2015)で導入された let declaration (let宣言) による変数は、それが宣言されたブロックの最後までが可視範囲となる。 SmalltalkやRubyにある似たようなものは、ブロックと呼んではいるが、複文ではない別のもので、メソッド呼び出しに付加する特別な引数のようなもの、である。Rubyではそれ自体はオブジェクトではないが、Smalltalkではオブジェクトである。なお、Rubyにおける複文に相当するものとしては、if~endなどにおいて、ifそれ自体がコードのかたまりの開始のキーワードとして機能するというEiffel風のスタイルを採っている。.

Schemeとブロック (プログラミング)間の類似点

Schemeとブロック (プログラミング)は(ユニオンペディアに)共通で4ものを持っています: ALGOLプログラミング言語クロージャJavaScript

ALGOL

ALGOL(アルゴル)は、命令型プログラミング言語ファミリーの1つファミリー名は大文字/小文字をまじえて表記される場合 と、全て大文字で表記される場合 (ALGOL 68) がある。本項目では ALGOL で統一する。。名前「ALGOL」は「アルゴリズム言語」を意味する英語「algorithmic language」に由来する。1950年代中ごろに開発され、多くの言語に影響を及ぼし、ACMや教科書や学術論文などでアルゴリズム記述のデファクトスタンダードとして30年以上使われた。現代の多くの言語が「ALGOL系」あるいは「ALGOL風」(algol-like) とされているという意味で、ほぼ同世代の高水準言語である FORTRAN、LISP、COBOL に比べて最も成功したと言うこともできる。FORTRANで明らかとなった問題を防ぐよう設計され、BCPL、B、Pascal、Simula、Cといった様々なプログラミング言語に影響を与えた。ALGOLはLisp以外としては「begin と end で囲む」という構文によるブロック構造を導入し、制御構造を自在に入れ子(ネスト)にできる初の広まった言語となったFORTRANにはそのような構造は無い。COBOLではピリオドで全ての入れ子が終端するという仕様だったため(現在はend-ifなどを使う)、入れ子で書ける論理に制限があり、酷いバグの原因にもなりやすかった。。また構文の形式的定義を真剣に検討した最初のプログラミング言語でもあり、"Algol 60 Report" で導入されたバッカス・ナウア記法は、その後のコンピュータ言語等の構文の形式的定義を示す手法として(プログラミング言語だけに限られず)定番の記法となっている。.

ALGOLとScheme · ALGOLとブロック (プログラミング) · 続きを見る »

プログラミング言語

プログラミング言語(プログラミングげんご、programming language)とは、コンピュータプログラムを記述するための形式言語である。なお、コンピュータ以外にもプログラマブルなものがあることを考慮するならば、この記事で扱っている内容については、「コンピュータプログラミング言語」(computer programming language)に限定されている。.

Schemeとプログラミング言語 · ブロック (プログラミング)とプログラミング言語 · 続きを見る »

クロージャ

ージャ(クロージャー、closure)、関数閉包はプログラミング言語における関数オブジェクトの一種。いくつかの言語ではラムダ式や無名関数で実現している。引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決することを特徴とする。関数とそれを評価する環境のペアであるともいえる。この概念は少なくとも1960年代のSECDマシンまで遡ることができる。まれに、関数ではなくとも、環境に紐付けられたデータ構造のことをクロージャと呼ぶ場合もある。クロージャをサポートした言語のコーディングでは、関数の中に関数を定義することができる。その際に、外側の関数で宣言された変数を内側の関数で操作することができる。主な利点としてはグローバル変数の削減が挙げられる。 典型的にはクロージャは、外側の関数(以下、エンクロージャ)の内側の関数リテラルや、ネストした関数定義によって必要になる。言語により、そのような内側の関数内に出現する自由変数(内側の関数の仮引数でもなく、内側の関数自身のローカル変数でもない変数)の扱いは異なるが、自由変数が、その呼び出しにおけるエンクロージャのその名前の変数を、レキシカルに参照するのがクロージャであり、実行時に外部の関数が実行された際、クロージャが形成される。クロージャは内部の関数のコードとエンクロージャのスコープ内の必要なすべての変数への参照からなる。 クロージャはプログラム内で環境を共有するための仕組みである。レキシカル変数はグローバルな名前空間を占有しないという点でグローバル変数とは異なっている。またオブジェクトのインスタンス変数とは、オブジェクトのインスタンスではなく関数の呼び出しに束縛されているという点で異なる。 クロージャは関数型言語では遅延評価やカプセル化のために、また高階関数の引数として広く用いられる。 例: クロージャを使ったカウンタの例を Scheme で示す。 (define (new-counter) (define c (new-counter)) (display (c)); 1 (display (c)); 2 (display (c)); 3 関数 new-counter の中でクロージャが使用されている。c に代入された無名関数は new-counter 内のローカル変数 count を参照している。c を呼び出すたびに count はインクリメントされていく。.

Schemeとクロージャ · クロージャとブロック (プログラミング) · 続きを見る »

JavaScript

JavaScript(ジャバスクリプト)とは、プログラミング言語のひとつである。Javaと名前が似ているが、全く異なるプログラミング言語である(後述の#歴史を参照)。 JavaScriptはプロトタイプベースのオブジェクト指向スクリプト言語であるが、クラスなどのクラスベースに見られる機能も取り込んでいる。 ウェブブラウザ上で動作し動的なウェブサイト構築やリッチインターネットアプリケーションの開発に用いられる。また、2010年以降はnode.jsなどのサーバサイドJavaScript実行環境や各種ライブラリの充実により、MEANに代表されるように、Web開発の全ての領域で活用されるようになってきている。.

JavaScriptとScheme · JavaScriptとブロック (プログラミング) · 続きを見る »

上記のリストは以下の質問に答えます

Schemeとブロック (プログラミング)の間の比較

ブロック (プログラミング)が29を有しているSchemeは、44の関係を有しています。 彼らは一般的な4で持っているように、ジャカード指数は5.48%です = 4 / (44 + 29)。

参考文献

この記事では、Schemeとブロック (プログラミング)との関係を示しています。情報が抽出された各記事にアクセスするには、次のURLをご覧ください:

ヘイ!私たちは今、Facebook上です! »