オブジェクト志向とファンクション

(問題解決のアプローチには、オブジェクト志向と関数があります)

 

1)プログラム言語の2つの流れ

 

コンピュータは天才的な数学者のフォン・ノイマンが基本的なフレームを作りました。

 

フォン・ノイマンは数学者でしたので、対象や場面が違っても、数学的に同じ問題は、同じプログラムで解くことができると考えました。

 

ここでは、関数とデータは独立しているので汎用性が高くなります。

 

しかし、この方法は、ソフトウェアのメンテナンスに問題を引き起こします。

 

問題点は、次の2つです。

 

(1)関数は抽象性が高いため、多くの人にとって、分かり易いとはいえない。

 

この関数と逆の方向の言語がCOBOLです。データと処理が分離されていないので、分かり易いが、コードが極めて冗長で、メンテナンスは困難です。

 

(2)関数とデータが完全に独立していると間違いを見つけることは困難になります。

 

関数とデータのいづれかを見た場合に、セットになっていれば、もう片方の、データまたは、関数の予想がつけば、メンテナンスは容易になります。しかし、そのままでは、汎用性がなくなります。

 

つまり対象とするデータ(オブジェクト)のタイプによって、利用可能な関数をある範囲に制限してしまえば、メンテナンスは容易になります。ただし、そこで、利用可能な関数に自由度がなくなると、汎用性がなくなります。

 

オブジェクトとメソッド(オブジェクト付属の関数)は定義しますが、その派生形(バリエーション)をつくることが出来るようにすることで、この分かり易さと汎用性のバランスをとる手法が、オブジェクト指向であると考えられます。

 

こうして現在のプログラム言語は、関数中心の言語とオブジェクト指向が中心の言語に大別できます。現在のプログラム言語は、関数とオブジェクト指向の2つの機能を持っていて、どちらを使うか選べることが多いです。



2)オブジェクト志向の汎用性

 

オブジェジュと志向では、あるオブジェクトのグループには、似たようなメソッドが使えると考えることで、汎用化を進めます。

 

これは、一度つくったプログラムコードを使いまわすことを容易にする点で、実用性の高い手法です。

 

考え方は、A社にあるメソッドを導入したら、労働生産性があがったので、B社にも、同じメソッドを導入してみようといった感じです。

 

A社のシステムがオブジェクト志向で、コーディングされていれば、そのシステムをB社向きに書き直すことは容易です。

 

ただし、このアプローチが成功するかどうかは、A社、B社といったオブジェクトの共通性に依存します。

 

つまり、オブジェクトの性質を見極めないと成功しません。

 

その点では、人文的文化と親和性が高いと言えます。

 

3)関数プログラミング

 

関数プログラグラミングは、オブジェクトの性質に対して独立です。

 

これは、人文的文化とは相容れないと思われます。

 

問題があった場合には、対象を良く調べて、本質を理解するというのが、人文的文化です。

 

データサイエンスの統計学、エンジニアリングの制御工学は、対象の如何に関わらず成立する手法です。これは、関数プログラミングに対応します。

 

例をあげてみます。

 

自動車で、次の角を左に曲がって、左折する場合を考えます。

 

そのためには、ハンドルを左に切ります。

 

一度にきるバンドルの量には、幅があります。3回にわけても、10回に分けても構いません。

 

重要なことはハンドルをきった後で、自動車の軌跡の変化をモニタリングして、ハンドルの量が、不足か、オーバーかをしらべ、不足であれば、更に、左にハンドルを切り、オーバーであれば、逆に、少しだけ、右にハンドルを切ることです。

 

このように目的値に対して、モニタリング結果から、適切な制御量を、順次求めていく手法は、フィードバック制御です。この方法は、目的値と制御量があれば、対象の如何にかかわらず利用可能です。

 

目的値と制御量が1つずつの場合を古典制御といいます。目的値と制御量が複数ある場合を現代制御といいます。

 

現代制御が実用レベルで実装できたのは2000年頃からです。

 

4)制御問題の応用

 

制御問題の応用範囲は、非常に広いです。

 

目的値を労働生産性、制御量を給与とすれば、労働生産性があがれば、給与を増やすシステムを作れば、労働生産性は確実にあがります。給与の増分が、労働生産性の向上によって得られた利益の増分のうちの一定比率であれば、労働分配率が一定になります。

 

これは典型的なジョブ型雇用のシステムです。

 

一方、年功型のシステムでは、労働生産性を上げると、給与が減少します。例えば、労働生産性をあげるより、忖度した方が、給与があがれば、誰も、労働生産性をあげませんので、DXは進みません。

 

これは、自動車のハンドルと同じ、フィードバックシステムの問題です。

 

名ばかりジョブ型雇用では、リスキリングをして技術を身に着けても、給与はあがりません。官庁で、DXが全く進まない原因は、間違ったフィードバックシステムにあります。

 

ハンドルを左に切ると、自動車は、右には進みません。

 

上司が、この程度の制御工学の科学的文化を理解できないのであれば、話をしても通じることはありません。

 

スノーの二つの文化の断絶が歴然としてあります。



忖度をするか、科学的文化を理解できる企業に転職する以外に、給与を増やす方法はありません。



忖度を繰り返し、科学的文化が理解できない企業の将来は言うまでもありません。

 

定年間際でなければ、技術があれば、ハーシュマンの退出が合理的な判断になります。