「ブロック (プログラミング)」の版間の差分

削除された内容 追加された内容
編集の要約なし
編集の要約なし
1行目:
[[プログラミング言語]]における'''ブロック'''('''block''')は、コードのまとまり(コードブロック)のことで、「[[文 (プログラミング)]] 」(statement)から成る言語では複数個(0個以上~2個以上。言語により異なる)の[[ (プログラミング)|文]]などの[[ソースコード|コード]]のまとまってひとつ文になっているブロックを複文(compound statement)呼ぶものもある。雰囲気としては[[自然言語]]における[[段落]]に似ている。複が、現代[[言語学]]を知っていれば、プログラミング言語における「[[(compound statement)(プログラミング)|文]]」「ブロック」の関係は、語学でい「[[語]]」と「[[句]]」の関係に近い
 
なおプログラミング関係で、これと全く違うものに、他にも「ブロック」という語を使うものがいくつかあるので注意。入出力について「待たされる」(ブロックされる)」という意味や、一種のクロージャの実装である[[ブロック (C言語拡張)|C言語の拡張のブロック]]などである。
[[C言語]]に代表される、<code>{</code>と<code>}</code>で囲まれるスタイル、[[ALGOL]]にはじまり、その影響を受けた[[Pascal]]や[[Ada]]など、<code>begin</code>と<code>end</code>で囲むスタイル、[[Python]]などの[[オフサイドルール]]によるスタイルなどがある。
 
ブロックには、[[C言語]]に代表される、<code>{</code>と<code>}</code>で囲まれるスタイル、[[ALGOL]]にはじまり、その影響を受けた[[Pascal]]や[[Ada]]など、<code>begin</code>と<code>end</code>で囲むスタイル、[[Python]]などの[[オフサイドルール]]によるスタイルなどがある。

自然言語の段落と異なり、ブロックは[[ネスティング|入れ子]]にすることができる(つまり、言語学でいう「語」と「句」のほうに近い、とはそういうことである)。すなわち、ブロック内にブロックを作成することができる(正確な理解としては、ブロックは文の一種であり、ブロックの中身は文の並びであるから、ブロックの中身にまたブロックが現れることもできる、ということになる。プログラミング言語の学習においては、絶対的に不正確な理解に直結する自然言語からの類推ではなく、プログラミング言語は[[形式言語]]なのであるから、[[バッカス・ナウア記法|BNF]]など形式的な(フォーマルな)仕様などを理解できるように努めたほうが、結果として早道である)。
 
C言語などでは、ブロックは[[変数 (プログラミング)|変数]]の[[スコープ]](可視範囲。'''生存期間(エクステント)とは違うので注意''')の区切りである。すなわち、あるブロック内で定義された変数には((前置単項 & 演算子と)ポインタ等により、エスケープされない限り([[エスケープ解析]]を参照))ブロック外からはアクセスできない。[[JavaScript]]のように、ブロックが変数のスコープに影響しない言語もある。