ポインターを発明したのは誰ですか?


12

非常に単純な質問ですが、私が見つけられなかったものです。ポインターのアイデアを最初に説明したのは誰ですか?抽象概念そのものですか?


8
ポインターは単なるメモリへの参照であると考えると、ポインターは(何らかの形または形式で)計算の開始以来存在していたと想定しています。あなたは他にどのように少しのメモリを読みますか?
ロブ

3
ここで、命令ポインタ(IP)を忘れないでください(別名プログラムカウンター)。「実際、プログラムカウンター(または同じ目的を果たす同等のハードウェアブロック)は、フォンノイマンアーキテクチャの中心です。」
スコットホイットロック

@Rob-アドレスではなくタイミングで(少なくとも最低レベルで)アクセスされたメモリストアがあります-水銀遅延線など。また、Turingマシンモデルにはテープしかありませんでした(フープ、なぜスタックと言ったのですか?)。「他にどのように?」、IOWに可能な答えがありますが、実際の生活ではあなたは正しいと思います。
Steve314

回答:


4

バドローソンは、1964年にポインター変数を発明したことで、数年前にIEEEのコンピューターパイオニア賞を受賞しました。


シャーマン首相は1963年に彼より前にいます。彼のプログラミング&コーディングデジタルコンピューター viiiを参照してください。152:「これらのインデックスレジスタはメモリ内の場所を指します。したがって、使用される場合、それらはポインタと呼ばれます。」
ジェレミア

15

ポインタは、実際にはレジスタの内容によってアドレス指定されるストレージです。そのため、すべてのアセンブラー言語が何らかの方法でこれを実装し、その前にすべてのハードコードされたマシンコードがこれを実装しました。

これを実装した最初のコンピューターに関して、いくつかの議論があります。私の知る限り、 マンチェスター大学小規模システムは、プログラム制御レジスタによってアドレス指定されたストレージを含む最初のシステムです。ENIACシステムが先行していた可能性がありますが、アドレス可能なストレージを重要なポイントにするほどストレージが少なかったためです。


+1差分エンジンはレジスタを必要とするには単純すぎると仮定していますが、分析エンジンがそれらを必要とするかどうかは誰にもわかりませんか?

@Mark-これは定義の問題である可能性があります。加算のような単一の算術演算を実行する場合でも、機械で何らかの表現を必要とする2つの入力値と出力があります。その表現はレジスタと呼ばれます。そろばんでさえ、登記簿を持っていると主張できます。
Steve314

@スティーブ-良い点。

ここで重要なのは、「レジスターの内容によってアドレス指定されるストレージ」です。つまり、別のレジスタのアドレスを使用して、他のメモリからレジスタをロードおよび保存する機能、およびこのアドレスを操作する機能。
ジェームズアンダーソン

5

ポインターはより広く参照です。そのようなものを持つ最初の言語は、名前で呼び出すことができるALGOL 60でした。SOに関するこの答えは、詳細になります。PL / IにはBCPLのようにポインタがありました。つまり、CPLについても証拠は見つかりませんでしたが、おそらくCPLにもポインタがありました。CPLの具体的な情報は非常に困難です。

DW Barron、Christopher Strachey、Martin Richardsのいずれが「ポインター」という用語を作り出したのかについて、より直接的にあなたの質問に答えるために。


Bを忘れないでください-ポインターがありました!また、PL / I、およびアセンブリとチューリングマシンをカウントせず、その前に他のものがあると確信しています。
Pubby

だからそれは1966年になります。
世界エンジニア

ALGOLにはポインターがありました
ケビンクライン

4

誰がそれらを思いついたのかを正確に推測することは困難ですが、IBM 704のインデックスレジスタはおそらく最初の実装でした。したがって、プログラミング言語の観点からは、間違いなく704のアセンブリ言語だったでしょう。

高度なプログラミング言語がこの技術革新を活用するように設計されるまでに明らかに数年かかりましたが、それまでに発明のほとんどが行われ、ほとんどの場合、名前、表記法などを選んでハードウェアを説明することになりましたサポートされています。


0

基本的な概念としてのポインターは、少なくとも6502として遡るほとんどのCPUの機能の「間接アドレス指定」に使用されます。

Commodoreは、VIC 20、C64、およびC128コンピューターで「カーネル」を使用しました。アドレスソフトウェアの固定セットを呼び出すと、現在のコードにリダイレクトされます。その後、既存のソフトウェアを壊すことなくOSを変更できます。

8080とZ80にも間接アドレスがあったと思いますが、私は確信がなく、8008でそれを覚えていません。


1
実際、ポインターは直接アドレス指定でも使用されます。もちろん、コンパイル時の定数ポインタです-自己修正コードを使用している場合を除きます。私も6502(厳密には6510)のファンです。最初のマシンはC64でしたが、このチップはここではあまり関係ありません。初期の民生用マイクロプロセッサは、新しい原理の方法であまり発明しませんでした-アイデアはすでに何十年も前からありました。これらのアイデアは、70年代まで単一の手頃な価格のチップとして実装できず、80年代まで主流の消費者向けおもちゃにならなかっただけです。
Steve314

0

まあ-ポインター変数用に開発された具体的な構文とセマンティクスは、1964年のPL / Iプログラミング言語用でした。

これに関する独創的な論文は、1967年のACM Communicationsで1967年に登場しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.