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 3 years have passed since last update.

(覚書) クリーンアーキテクチャ 第2部 構成要素から始めよ:プログラミングパラダイム

Last updated at Posted at 2021-01-25

構成は各章毎に分けて、要約・独自の解釈・具体的なコード等を挟み、なるべく腑に落ちやすい形を目指す。
独自の解釈を挟む際は冒頭に "ダブルコーテーションをつける。

"第二章は歴史のお勉強ですね

第2部 構成要素から始めよ:プログラミングパラダイム

ソフトウェアアーキテクチャはコードから始まる。
1938年, Alan Turingがコンピュータプログラミングの基礎を築いた。
1945年まで、彼は実際のコンピュータで、実際のプログラムを書いていた。彼の使用していた言語はバイナリだ。

それから様々な革命が起きた。

  • 言語の革命
    • 1940年代後半にアセンブラが登場
      • プログラムをバイナリに翻訳する負担を無くした。
    • 1951年にGrace Hopperがコンパイラを考案
      • プログラムを英語で記述できるようにした。
    • その後、COBOL、PL/I、SNOBOL、C、Pascal、C++、Javaなど絶え間なく新しい言語が生み出されている。
  • プログラミングパラダイムの革命
    • パラダイムとは、プログラミングの方法のことで、どのプログラミング構造を使うべきか、いつ使うべきかを教えてくれる。
    • 現在まで、大きく3つのパラダイムが存在している。どれもお互いに似ているところがない。

第3章 パラダイムの概要

構造化プログラミング

構造化プログラミングは、直接的な制御の移行に規律を課すものである。

最初に導入されたパラダイムは1968年にEdsger Wybe Dijkstraが発見した「構造化プログラミング」である。

Dijkstraは制限のないジャンプを if/then/else、do/while/until に置換えた。

オブジェクト指向プログラミング

オブジェクト指向プログラミングは、間接的な制御の移行に規律を課すものである。

次に導入されたパラダイムは、構造化プログラミングの2年前の1966年に Ole Johan Dahl と Kristen Nygaard が発見したオブジェクト指向プログラミングである。

この2人は、ALGOL言語の関数呼び出しのスタックフレームをヒープに移動できること、これにより、関数から戻ってきたあとでも関数で宣言したローカル変数が存在し続けられることに気づいた。

  • この関数は今日のクラスのコンストラクタになり、ローカル変数はインスタンス変数になった。
  • そしてネストした関数はメソッドになった。
  • 規律のある関数ポインタの使用により、ポリモーフィズムの発見に繋がった。

"クロージャーとの関係も凄く近い気がする。
1960年代に開発された概念のよう。ここの歴史的な繋がりはもっと深堀りたい。

関数型プログラミング

関数型プログラミングは、代入に規律を課すものである。

3つのパラダイムの中では最も早く発明された。

Alonzo Church の業績で、Alan Turing が挑んでいた数学的問題を追求しながら、1936年にラムダ計算を発明した。
ラムダ計算の基本的な概念は不変性である。
このことにより、関数型言語には代入文がないことを意味する。
実際には、変数の値を変更する手段が用意された言語も多いが、非常に厳しく制限されている。

考えるべきこと

意図的に3つのパラダイムのパターンを紹介した。
これらのパラダイムは、プログラマから能力を削除している。
何をすべきかを伝えるよりも、何をすべきでないかを伝えている。

1958年から1968年の10年間に発見された3つのパラダイム以降、新しいパラダイムは追加されていない。

まとめ

パラダイムの歴史的な教訓は、アーキテクチャの全てに関係している。

  • アーキテクチャの境界を超えるための仕組みとして、ポリモーフィズムを使う。
  • データの配置やアクセスに規律を課すために、関数型プログラミングを使う。
  • モジュールのアルゴリズムの基礎として、構造化プログラミングを使う。

これらの3つが、アーキテクチャの3つの大きな関心事「コンポーネントの分離」「データ管理」「機能」に対応している。

第4章 構造化プログラミング

coming soon.

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?