- ベストアンサー
「ポインタ」が誕生した経緯について
(https://okwave.jp/qa/q9627892.html)の質問内容と重複しますが、「ポインタ」が誕生した経緯について教えてください。なぜ「ポインタ」が誕生したのでしょうか? おおまかなイメージで言うと「アセンブラで、プログラムを作成すると複雑すぎて、大変だから(一部)ラクにしよう」という考えの元で生まれたのでしょうか? さらに、「ポインタ」は何の為に使うのか?何のために使わなければならないのか?その目的も教えてください。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
そうです。最初の Unix は全てアセンブラで書かれていましたが、大変なので (保守性、移植性など) 楽にしようとして C が開発されました。で実際に何の為かと言えば Unix カーネルのメモリの物理アドレスへのアクセスが最たるものじゃないでしょうか。 だからこそ今でもフリーの OS の多くは C, C++ で書かれてますし、ハードウェア制御に組み込み用途でも必須と言っていいですし、逆に現状のメモリが潤沢にある OS 環境下では必須ではないです。
その他の回答 (3)
- t_ohta
- ベストアンサー率38% (5238/13705)
今はパソコンでも組込用CPUでもメインメモリが大容量なので大きなデータをコピーしたりしても問題無いでしょうが、昔はメインメモリは非常に小さかったので簡単にデータのコピーなんてできませんし、コピーに掛かる時間も無駄ですから効率的に処理するためには、データの実態を扱うのではなく格納場所のアドレスを扱う方が便利です。 また複数のスレッド(タスク)で一つのデータを共有する場合は、各スレッドはアドレスを知っているだけの方が処理が効率的になります。
- hahaha8635
- ベストアンサー率22% (800/3610)
OOPの基礎概念 https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0 アセンブルすると コードが増え 変数やサブプロのアドレスが変わってしまう それが面倒なので 一か所に辞書テーブルを作り そこの値を参照し 実アドレスに アクセスさせた これがさらに発展されたのが OOP である すべては相対的に決めることができ やがては WINDOWS もこの方法で作成され 各プログラムの先頭はハンドルで管理され 必要に応じて HDD(SSD)なの度の記憶媒体から読みだされ 要らなくなったら削除される その空いたスペースには新たなプログラムや メモリーが再配列され 再利用される ただしこの作業ではオーバヘッド時間が発生するため 本当にチューンナップされたプログラムにはかなわないが 今のように巨大なプログラムの場合 そんなプログラムは人間では組めないと思う
- notnot
- ベストアンサー率47% (4900/10358)
メモリ上のあるデータをアクセスするために、64bitCPUなら8バイト、32bitCPUだと4バイトのアドレスを表すデータが必要ですが、そのデータのことをポインタと言います。 メモリアクセスのためには必須の機能なので、意図的に作ったものでは無いです。