2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

オブジェクト指向でなぜつくるのか 第3章 ~補足~

Last updated at Posted at 2018-11-23

はじめに

image.png

Amazon: https://www.amazon.co.jp/dp/4822284654

「オブジェクト指向でなぜつくるのか-第2版-」の第3章に書かれているプログラミング言語の進化の歴史をまとめたのですが、そこで書かなかったことを補足としてまとめます。

記事: オブジェクト指向でなぜつくるのか 第3章

プログラミング言語の進化

oop01.png

構造化プログラミング

ソフトウェア危機に対応するために様々なアイデアやプログラミング言語が提案されるなか、当時最も注目されたのが 構造化プログラミング です。

正しく動作するプログラムを作成するために、わかりやすい構造でプログラムを書くという考えに基づいています。

具体的には、プログラムを複雑化させている元凶である GOTO文 を廃止し、ロジックを 基本三構造 だけで書くことを提唱しました。

キーワード: GOTO文

GOTO文とは、処理を指定した位置へと移動させるためのジャンプ文の一種です。

GOTO文を乱用してしまうと、処理が順次進行ではなくなり、プログラムを行ったり来たりするようになるため、複雑になってしまいます。

そういった複雑化を避けるため、構造化プログラミングではGOTO文を廃止しました。GOTO文を廃止したプログラミングということで、構造化プログラミングは GOTOレスプログラミング とも呼ばれます。

キーワード: 基本三構造

基本三構造とは、 順次進行条件分岐繰り返し の3つの構造のことを指します。

oop02.png

  • 順次処理: 上から順に命令を実行していく
  • 条件分岐: ある判定の結果を元に、実行する命令を変える
  • 繰り返し: ある条件が成立する間、特定の命令を繰り返し実行する

構造化プログラミングで提唱された 基本三構造 の理論は、非常に強力でシンプルであったため、広く支持されました。

サブルーチンの独立性強化

構造化プログラミングが提唱される一方で、もうひとつ サブルーチンの独立性強化 に向けた動きもありました。これはコードの再利用性を向上し、プログラムを保守しやすくすることが目的です。

グローバル変数 はプログラムのどこからでもアクセスできるため、値を変更するときは広範囲での影響調査が必要になります。ローカル変数引数の値渡し を実現すれば、複数のサブルーチンで共有する グローバル変数 の使用を最小限に抑えることができます。

oop03.png

つまり、そういった グローバル変数 の使用が、 サブルーチンの独立性強化 により最小限に抑えられることで、プログラムの保守性が向上します。

キーワード: ローカル変数

ローカル変数 とは、サブルーチンの中でだけアクセスすることができる変数のことです。

この変数は、あるサブルーチンに制御が移ったときに作られ、そのサブルーチン以外に制御が移ったときに消える仕組みになっています。

キーワード: 引数の値渡し

引数の値渡し とは、サブルーチンに引数として渡したい変数の値をコピーして、その変数の代わりにコピーした値を引数として渡すことを言います。

この仕組みを活用することで、引数として渡した値を変更しても、呼び出し側が参照している変数には影響が及びません。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?