Block (programming)とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > Block (programming)の意味・解説 

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

(Block (programming) から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/09/03 03:13 UTC 版)

ブロック (: block) とは、プログラミング言語におけるコードのまとまり(コードブロック)のことである。

ブロック状のパーツを組み合わせてプログラミングを行うScratchなどの「ブロック」とは異なる。

概要

(statement) から成る言語では、ブロックによって複数個(0/2個以上・言語により異なる)の文がまとまってひとつの文になっているものを複文 (compound statement) または複合文と呼ぶ。「区」という訳語を使っている仕様もある[1]雰囲気としては自然言語における段落にも似ているが、現代言語学を知っていれば、プログラミング言語における「」と「ブロック」の関係は、言語学でいう「」と「」の関係に近い[独自研究?]

自然言語の段落と異なり、ブロックは入れ子にすることができる(つまり、言語学でいう「語」と「句」のほうに近い、とはそういうことである[独自研究?])。すなわち、ブロック内にブロックを作成することができる(正確な理解としては、ブロックは文の一種であり、ブロックの中身は文の並びであるから、ブロックの中身にまたブロックが現れることもできる、ということになる。プログラミング言語の学習においては、絶対的に不正確な理解に直結する自然言語からの類推ではなく、プログラミング言語は形式言語なのであるから、BNFなど形式的な(フォーマルな)仕様などを理解できるように努めたほうが、結果として早道である)。

C言語などでは、ブロックは変数スコープ(可視範囲)の区切りである。すなわち、あるブロック内で定義された変数には、ポインタ等によりエスケープされない限り(エスケープ解析を参照)、ブロック外からはアクセスできない。JavaScript (ECMAScript) は、以前はブロックは変数のスコープに影響しないという仕様だったが、ECMAScript 6th Edition (ECMAScript 2015) で導入されたlet宣言 (let declaration) による変数は、それが宣言されたブロックの最後までが可視範囲となる。

自動変数(ローカル変数)の場合、ブロックによって変数の記憶域期間 (storage duration) が決まる[注釈 1]。一方、静的変数の記憶域期間は、ブロックによって左右されない。

SmalltalkRubyにある似たようなものは、ブロックと呼んではいるが、複文ではない別のもので、メソッド呼び出しに付加する特別な引数のようなものである(クロージャに最も近い)。Rubyではそれ自体はオブジェクトではないが、Smalltalkではオブジェクトである。なお、Rubyにおける複文に相当するものとしては、if-endなどにおいて、ifそれ自体がコードのかたまりの開始のキーワードとして機能するというEiffel風のスタイルを採っている。

ブロックの構文

ブロックの記述については、言語によって構文が異なる。

F#のように、軽量構文 (lightweight syntax) と冗語構文 (verbose syntax) を選択できる言語も存在する[2]

入れ子になったブロックの例。

#include <stdio.h>

int main(void)
{
    int x = 0;

    while (1)
    {
        if (x < 10)
        {
            printf("%d\n", x);
            x++;
        }
        else
        {
            printf("Finished.\n");
            break;
        }
    }
    return 0;
}

ブロッキング処理

動作が完了するまで呼び出し元が待たされる(ブロックされる)処理のことをブロッキング処理 (blocking processing) と呼ぶ。ブロックされる状況にある場合は即座にエラーを返して呼び出し元を待たせない方式をノンブロッキング処理 (non-blocking processing) と呼ぶ。代表的な例として、ネットワーク通信におけるブロッキングとノンブロッキングが挙げられる。

また、呼び出しが完了すると同時に処理結果を通知する方式を同期処理 (synchronous processing) と呼ぶ。いったん処理を開始してから、後で(イベントコールバック関数を使って)結果を通知する方式を非同期処理 (asynchronous processing) と呼ぶ。通例ファイルなどのストレージ入出力処理 (Input/Output, I/O) には非同期I/Oを用いる。

脚注

注釈

  1. ^ 生存期間、寿命 (lifetime) あるいはエクステント (extent) とも。

出典

  1. ^ 『JIS X 3003:1993 電子計算機プログラム言語Full BASIC』§4.2.1より「BASICプログラム中で,ある種の行の論理的な集まりを区 (block) という。」
  2. ^ Verbose Syntax - F# | Microsoft Docs

関連項目




英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Block (programming)」の関連用語

Block (programming)のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Block (programming)のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのブロック (プログラミング) (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS