Public / Private関数宣言の起源は何ですか?


8

質問

パブリック/プライベート関数パラダイムの起源は何ですか?

バックグラウンド

チャットでCのヘッダーファイルについて質問があり、それらの使用法は主にプログラマーではなくコンパイラーを支援するためのものでした。ただし、これは「プライベート」関数、またはヘッダーファイルでプロトタイプ化されていない関数の概念の最初の使用法であることは私の理解です。Cが関数を宣言するためにヘッダーファイルを使用していなかったとしても、C#またはJavaで見られるようなパブリック関数とプライベート関数の現在の概念はありますか?または、このコンセプトは最初に別の場所で開発され、Cヘッダー/ソーススキームに単純に実装されました

回答:


10

Private / Publicは、元のOO言語であるSimulaに由来しています。Wikipediaの記事によると、元のコンセプトはSimulaのTOPS / 10バリアントで最初に実装され、1987年にコア言語標準に統合されました。 Cより前の場合とそうでない場合があります。

いずれにせよ、Cとそのヘッダーファイルシステムがなかったとしても、現代のプログラミング言語はSimulaからプライベート/パブリックシステムを通じてカプセル化の概念を継承していたでしょう。


5
そしてもちろん、1987年以前のLONGのメインフレームコードには、「外部シンボル」(==「パブリック」)ルーチンと非外部(==「プライベート」)ルーチンがあり、特定のキーワードがありませんでした。
ロスパターソン

1

コードの一部をプライベートにするという考えには、Simulaよりもずっと古いルーツがあると思います。Scheme(1975)は、ラムダなどのデータをカプセル化する可​​能性を提供するクロージャを実装する最初の言語でした。スキーマでは、defineキーワードを使用して内部関数を指定することもできます。

関数をプライベートにすると、より多くの抽象化をプログラムに組み込むことができます。プログラムでの抽象化の構築には長い歴史があり、SchemeなどのLISPバリアント言語は、現代のプログラミング言語の開発に大きく貢献しています。

Abelsonによるコンピュータプログラムの構造と解釈、Sussmanは、抽象化について詳しく知りたい場合に優れた本です。


この投稿は読みにくいです(テキストの壁)。より良い形に編集していただけませんか?
ブヨ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.