ブロック_(プログラミング)とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > ブロック_(プログラミング)の意味・解説 

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

出典: フリー百科事典『ウィキペディア(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日本語例文用例辞書はプログラムで機械的に例文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。


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

辞書ショートカット

すべての辞書の索引

「ブロック_(プログラミング)」の関連用語

ブロック_(プログラミング)のお隣キーワード
検索ランキング

   

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



ブロック_(プログラミング)のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのブロック (プログラミング) (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
Tanaka Corpusのコンテンツは、特に明示されている場合を除いて、次のライセンスに従います:
 Creative Commons Attribution (CC-BY) 2.0 France.
この対訳データはCreative Commons Attribution 3.0 Unportedでライセンスされています。
浜島書店 Catch a Wave
Copyright © 1995-2025 Hamajima Shoten, Publishers. All rights reserved.
株式会社ベネッセコーポレーション株式会社ベネッセコーポレーション
Copyright © Benesse Holdings, Inc. All rights reserved.
研究社研究社
Copyright (c) 1995-2025 Kenkyusha Co., Ltd. All rights reserved.
日本語WordNet日本語WordNet
日本語ワードネット1.1版 (C) 情報通信研究機構, 2009-2010 License All rights reserved.
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved. License
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
「斎藤和英大辞典」斎藤秀三郎著、日外アソシエーツ辞書編集部編
EDRDGEDRDG
This page uses the JMdict dictionary files. These files are the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.

©2025 GRAS Group, Inc.RSS