🚨 バグだらけで誰も読めない 『スパゲッティコード』を生み出した悪名高きGOTO文 に、誰がどうやって終止符を打ったのでしょうか?
プログラミング言語の世界を変えた最初の大きなパラダイムシフト、それが構造化プログラミングです。数学者ダイクストラが提唱した、たった3つのシンプルなルールが、無秩序だったコードに論理的な秩序をもたらしました。
この記事では、構造化プログラミング 3要素 GOTO文がなぜ有害だったのかを理解し、ダイクストラ 構造化 パラダイムシフトがプログラミング 可読性 向上にいかに貢献し、現代のAI・テクノロジーの基盤を築いたのかを紐解きますよ👍。
1. 混沌の時代:GOTO文による「地下鉄」のような処理
初期のプログラミングでは、特定の命令に 「何番の命令にジャンプする」 というGOTO文が乱発されていました。
🚇 プログラムが「地下鉄」になる時
GOTO文は無秩序にジャンプするため、プログラムを自然言語の手順書のように理解することが困難でした。その結果、処理の流れを図に起こしたフローチャートは、まるで複雑な 「地下鉄」の路線図のようにぐちゃぐちゃになり、何がどうなっているのか把握できないカオス な状態に陥ったのです。
このGOTO文の乱用により、プログラムのフローが複雑に絡み合った 『スパゲッティコード』 と呼ばれる状態になり、バグの特定と修正が極めて困難になりました。

「地下鉄です」
ここがポイント👌
初期のプログラミングでは、GOTO文の乱用によってフローチャートは 「地下鉄」 のような複雑怪奇な構造となり、スパゲッティコード化し、プログラムの全体像を把握するのが困難になっていました。
2. ダイクストラの革命:構造化プログラミング 3要素 GOTO文の終焉
この混沌に終止符を打とうとしたのが、コンピュータ科学者のダイクストラです。彼はGOTO文は有害であると主張し、代わりにたった3つの基本ルールで全て記述できると提案しました。
💡 たった3つの基本ルールが秩序をもたらす
この3つの基本ルールこそ、構造化プログラミング 3要素 GOTO文の混沌に秩序をもたらした鍵です。
- 順次実行(Sequence): 命令を一つずつ順番に進めていく。
- 選択(Selection): 条件によって処理を分岐させる(例:
Ifなどの条件分岐)。 - 反復(Repetition): ある条件が満たされている間、処理を繰り返す(例:
Whileなどのループ)。
「この3つのルールだけで全部のプログラムって記述できるんじゃん。ジャンプとかGOTOとかそもそもする必要なかったんじゃ」
この提案は「無秩序だったものに秩序を与え始めた」のです。これがダイクストラ 構造化 パラダイムシフトの始まりです。
ここがポイント👌
ダイクストラ 構造化 パラダイムシフトは、順次実行、選択、反復という3つの基本要素を提唱し、GOTO文を廃止することで、プログラムに論理的な秩序をもたらしました。
3. 可読性の革命:プログラミング 可読性 向上とインデントの哲学
ダイクストラの提案を受けて、C言語などの近代的なプログラミング言語には、この3つの基本構造を表現するための専用の構文(IfやWhileなど)が用意されました。
📐 入れ子構造とインデントの威力
構造化プログラミングによって書かれたソースコードは、GOTO文の羅列と比較して、「全然短く、直感的にわかりやすく」なりました。
その最大の理由は、入れ子構造(ネスト)とインデント(字下げ)によって、プログラムの階層構造が明確になったからです。
WHILE (プレイヤーHP > 0 && 敵HP > 0) {
// プレイヤーのターン処理(順次実行)
IF (魔法攻撃が成功なら) {
// 魔法攻撃の処理(一段深い入れ子)
}
}
インデントは、入れ子構造の深さを視覚的に表現し、どこからどこまでが何の処理のまとまりなのかが一目瞭然となります。
「読みやすさが全く違くないですか」
このため、コードの可読性が飛躍的に向上し、現代のプログラマーは「インデントしないと死ぬ」ほどの規律を持っています。構造化プログラミングは、コードのモジュール化と再利用性も高め、後の手続き型プログラミングの基盤となりました。
ここがポイント👌
プログラミング 可読性 向上は、入れ子構造とインデントによって、プログラムの論理的な階層構造を視覚化することで実現されました。これにより、複雑なプログラムでも全体像の把握が容易になりました。
結びに
構造化プログラミングは、ダイクストラが提唱した「順次、選択、反復」の3つの基本要素によって、GOTO文の乱用による混沌に終止符を打ちました。
このダイクストラ 構造化 パラダイムシフトは、プログラミング 可読性 向上を劇的に改善し、複雑なソフトウェア開発を可能にする現代の基盤を築きました。現代のAIモデルや大規模言語モデル(LLM)の学習・デプロイにおいても、構造化されたコードは保守性とセキュリティの基盤であり続けています。プログラミングの秩序は、たった3つのシンプルな論理構造から始まったのです。
配信元情報
- 番組名: ゆるコンピュータ
- タイトル: 構造化プログラミングが、混沌だったフローチャートに秩序を与えた【プログラミングパラダイム・シフト2】#65
- 配信日: 2023-03-26


コメント