İşaretçileri kim icat etti?


12

Oldukça basit bir soru, ama bulamadığım bir şey. İşaretçi fikrini tanımlayan ilk kişi kimdi? Soyut kavramın kendisi mi?


8
İşaretçiler sadece belleğe referanslar olarak göz önüne alındığında, işaretçilerin (bazı şekil veya formda) hesaplamanın başlangıcından beri var olduğunu varsayıyorum. Başka bir hafızayı nasıl okursunuz?
Rob

3
Burada Talimat İşaretçisi'ni (IP) ( Program Sayacı olarak da bilinir) unutmayalım . "Aslında, program sayacı (veya aynı amaca hizmet eden herhangi bir eşdeğer donanım bloğu) von Neumann mimarisinin merkezinde yer alıyor."
Scott Whitlock

@Rob - adres - cıva geciktirme hatları vb. Yerine zamanlama ile erişilen (en azından en düşük seviyede) bellek depoları vardır. Prensip olarak, adresleri icat etmeden bazı tür bilgi işlemlerini yapmak mümkün olurdu. Ayrıca, Turing makine modelinde sadece bir bant vardı (whoops, neden yığın dedim?). "Başka nasıl?" Sorusunun olası cevapları var, IOW, gerçek hayatta haklı olduğunuzu hayal ediyorum.
Steve314

Yanıtlar:


4

Bud Lawson , 1964'te işaretçi değişkenini icat ettiği içinIEEE'nin Bilgisayar Öncüsü Ödülünü birkaç yıl önce aldı.


1963 yılında Başbakan Sherman, onu yener. Bkz. Programlama ve kodlama Dijital Bilgisayarlar viii. 152: "Bu dizin kayıtları bellekteki konumları işaret eder, bu nedenle kullanıldıklarında işaretçiler olarak adlandırılırlar."
Geremia

15

İşaretçiler bir kaydın içeriği tarafından gerçekten depolanır. Bu nedenle, tüm montajcı dilleri bunu bir şekilde uygular ve bundan önce tüm sabit kodlu makine kodu bunu uygular.

Bunu uygulayan ilk bilgisayar hakkında bazı tartışmalar olacaktır. Bildiğim kadarıyla, Manchestern Üniversitesi Küçük Ölçekli Sistem , program kontrollü kayıtların ele aldığı ilk depolama alanı oldu. Daha önce ENIAC sistemi gelmiş olabilir, ancak adreslenebilir depolamayı bir tartışma noktası haline getirmek için çok az depolama alanı vardı.


+1 Fark Motorunun kayıt gerektirmek için çok basit olduğunu varsayıyorum, ancak Analitik Motorun bunlara ihtiyacı olup olmadığını bilen var mı?

@ Mark - bu bir tanım sorunu olabilir. Ekleme gibi tek bir aritmetik işlem gerçekleştirmek için bile, iki giriş değeriniz ve makinede bir çeşit gösterim gerektiren bir çıktınız vardır. Bu temsile kayıt denilebilir. Bir abaküs bile bir sicile sahip olduğu iddia edilebilir.
Steve314

@Steve - İyi bir nokta.

Buradaki kilit nokta "bir kaydın içeriği ile adreslenen depolama" dır. yani başka bir kayıttaki adresi kullanarak başka bir bellek parçasından bir kayıt yükleme ve saklama yeteneği ve bu adresi değiştirme yeteneği.
James Anderson

5

İşaretçiler daha geniş referanslar. Böyle bir şeye sahip olan ilk dil, isimle çağırabilecek ALGOL 60 idi. SO üzerine bu cevap biraz ayrıntıya giriyor. PL / BCPL gibi işaretçilerim vardı . CPL hakkında somut bilgiler çok zordur.

DW Barron, Christopher Strachey veya Martin Richards'ın "kim" ile ilgili sorunuzu daha doğrudan yanıtlamak için muhtemelen "işaretçi" terimini yazdı.


B unutmayın - işaretçiler vardı! Ayrıca PL / I ve montaj ve Turing makinelerini saymadan önce başkalarının da olduğundan eminim.
Pubby

O zaman 1966 olurdu.
Dünya Mühendisi

ALGOL'in işaretçileri vardı
kevin cline

4

Tam olarak kimin geldiğini tahmin etmek zor, ancak IBM 704'teki dizin kayıtları muhtemelen ilk uygulama oldu. Bu nedenle, bir programlama dili bakış açısından, şüphesiz 704'ün montaj dili olurdu.

Görünüşe göre, bundan sonra birkaç yıl sürdü ve daha üst düzey programlama dilleri bu yenilikten yararlanmak için tasarlandı, ancak o zamana kadar icatların çoğu yapıldı ve çoğunlukla donanımın ne olduğunu tanımlamak için isimler, gösterimler vb. destekledi.


0

Temel bir kavram olarak işaretçiler, en azından 6502'ye kadar giden çoğu CPU'daki bir işlevi "dolaylı adresleme" için kullanılır.

Commodore "kernal" i VIC 20, C64 ve C128 bilgisayarlarında kullandı. daha sonra geçerli koda yönlendirilecek sabit bir adres yazılımı seti çağırabilir. Daha sonra mevcut yazılımı bozmadan işletim sistemini değiştirebilirler.

Bence 8080 ve Z80'in dolaylı adresi de vardı, ama emin değilim ve 8008'de hatırlamıyorum.


1
Aslında, işaretçiler de doğrudan adresleme ile kullanılır. Onlar sadece derleme zamanı sabit işaretçilerdir - elbette kendi kendini değiştiren kod kullanmıyorsanız. Ben de 6502'nin (veya kesinlikle 6510'un) hayranıyım - ilk makinem bir C64 idi - ama bu çip burada gerçekten alakalı değil. İlk tüketici mikroişlemcileri yeni prensipler yolunda pek bir şey icat etmedi - fikirler onlarca yıldır var olmuştu. Sadece bu fikirler, 70'lere kadar tek uygun cips olarak uygulanamazdı ve 80'lere kadar ana tüketici oyuncakları haline gelmedi.
Steve314

0

Şey - İşaretçi değişkenler için ilk kez somut bir sözdizimi ve anlambilimi 1964'te PL / I Programlama Dili içindi.

Bununla ilgili seminal makale 1967'de ACM Communications'da 1967'de ortaya çıktı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.