Siapa yang menemukan pointer?


12

Pertanyaan yang cukup sederhana, tetapi sesuatu yang belum dapat saya temukan. Siapa orang pertama yang menggambarkan ide pointer? Konsep abstrak itu sendiri?


8
Mengingat pointer hanyalah referensi ke memori, saya mengasumsikan pointer (dalam beberapa bentuk atau bentuk) telah ada sejak awal komputasi. Bagaimana lagi Anda membaca sedikit memori?
Rob

3
Jangan lupa Instruction Pointer (IP) di sini (alias Program Counter ). "Memang, penghitung program (atau blok perangkat keras setara yang melayani tujuan yang sama) sangat penting bagi arsitektur von Neumann."
Scott Whitlock

@Rob - ada penyimpanan memori yang diakses (setidaknya di tingkat terendah) berdasarkan waktu alih-alih berdasarkan alamat - jalur penundaan merkuri, dll. Pada prinsipnya, dimungkinkan untuk melakukan beberapa jenis pemrosesan informasi tanpa menemukan alamat. Juga, model mesin Turing hanya memiliki selotip (ups, mengapa saya mengatakan stack?). Ada jawaban yang mungkin untuk "bagaimana lagi?", TKI, meskipun dalam kehidupan nyata saya membayangkan Anda benar.
Steve314

Jawaban:


4

Bud Lawson menerima Penghargaan Perintis Komputer IEEEbeberapa tahun yang lalu, karena menemukan variabel pointer pada tahun 1964.


PM Sherman, pada tahun 1963, mendahului dia. Lihat Programming & coding Digital Computers viii. 152: "Register indeks ini menunjuk ke lokasi di memori; karenanya mereka disebut pointer ketika digunakan."
Geremia

15

Pointer benar-benar penyimpanan yang ditujukan oleh isi register. Dengan demikian semua bahasa assembler mengimplementasikan ini dalam beberapa cara, dan, sebelum itu semua kode mesin yang dikodekan keras menerapkan ini.

Akan ada beberapa argumen mengenai komputer pertama yang mengimplementasikan ini. Sejauh yang saya tahu Sistem Skala Kecil Universitas Manchestern adalah yang pertama memasukkan penyimpanan yang ditangani oleh register yang dikendalikan program. Itu mungkin telah didahului oleh sistem ENIAC tetapi memiliki sedikit penyimpanan sehingga membuat penyimpanan addressable menjadi titik diperdebatkan.


+1 Saya mengasumsikan Difference Engine terlalu mudah untuk didaftarkan, tetapi apakah ada yang tahu apakah Mesin Analitis akan membutuhkannya?

@ Mark - ini bisa menjadi masalah definisi. Bahkan untuk melakukan operasi aritmatika tunggal seperti penambahan, Anda memiliki dua nilai input dan output yang memerlukan semacam representasi dalam mesin. Representasi itu bisa disebut register. Bahkan sempoa bisa diklaim memiliki register.
Steve314

@Steve - Poin bagus.

Poin kunci di sini adalah "penyimpanan yang ditujukan oleh isi register". yaitu kemampuan untuk memuat dan menyimpan register dari beberapa bagian memori lain, menggunakan alamat dalam register lain, dan, kemampuan untuk memanipulasi alamat ini.
James Anderson

5

Pointer adalah Referensi yang lebih luas. Bahasa pertama yang memiliki hal seperti itu adalah ALGOL 60 yang bisa memanggil nama. Ini jawaban pada SO masuk ke beberapa detail. PL / Saya punya pointer seperti halnya BCPL yang berarti bahwa CPL mungkin juga melakukannya meskipun saya belum menemukan bukti untuk itu. CPL sangat sulit untuk mendapatkan informasi yang konkret.

Untuk lebih langsung menjawab pertanyaan Anda tentang "siapa" baik DW Barron, Christopher Strachey atau Martin Richards mungkin menciptakan istilah "pointer".


Jangan lupa B - ada petunjuk! Juga PL / I, dan saya yakin ada orang lain sebelum itu, belum termasuk mesin perakitan dan Turing.
Pubby

Jadi itu akan menjadi 1966 lalu.
Insinyur Dunia

ALGOL memiliki pointer
kevin cline

4

Sulit untuk menebak siapa yang datang dengan mereka, tetapi register indeks di IBM 704 mungkin merupakan implementasi pertama. Dari sudut pandang bahasa pemrograman, oleh karena itu, tidak diragukan lagi akan menjadi bahasa assembly 704.

Tampaknya butuh beberapa tahun setelah itu sebelum bahasa pemrograman tingkat yang lebih tinggi dirancang untuk mengambil keuntungan dari inovasi ini, tetapi pada saat itu sebagian besar penemuan telah dilakukan, dan sebagian besar datang ke memilih nama, notasi, dll untuk menggambarkan apa perangkat keras didukung.


0

Pointer sebagai konsep dasar digunakan dalam "pengalamatan tidak langsung" fungsi pada sebagian besar CPU kembali setidaknya sebagai 6502.

Commodore menggunakan "kernal" pada komputer VIC 20, C64, dan C128-nya. satu set perangkat lunak alamat tetap dapat memanggil yang kemudian akan diarahkan ke kode saat ini. Mereka kemudian dapat memodifikasi OS tanpa merusak perangkat lunak yang ada.

Saya pikir 8080 dan Z80 memiliki alamat tidak langsung juga, tetapi saya tidak yakin dan saya tidak mengingatnya di 8008.


1
Sebenarnya, pointer juga digunakan oleh pengalamatan langsung. Mereka hanya pointer konstan waktu kompilasi - kecuali jika Anda menggunakan kode modifikasi sendiri, tentu saja. Saya penggemar 6502 (atau tepatnya, 6510) juga - mesin pertama saya adalah C64 - tetapi chip itu tidak benar-benar relevan di sini. Mikroprosesor konsumen awal tidak menciptakan banyak hal dalam hal prinsip-prinsip baru - idenya sudah ada selama beberapa dekade. Hanya saja ide-ide itu tidak dapat diimplementasikan sebagai chip tunggal yang terjangkau sampai tahun 70-an, dan tidak menjadi mainan konsumen utama sampai tahun 80-an.
Steve314

0

Nah - Pertama kali sintaks dan semantik konkret di mana dikembangkan untuk variabel pointer adalah untuk Bahasa Pemrograman PL / I pada tahun 1964.

Makalah mani tentang ini muncul pada tahun 1967 di ACM Communications pada tahun 1967.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.