Całkiem proste pytanie, ale czegoś, czego nie byłem w stanie się dowiedzieć. Kto jako pierwszy opisał ideę wskaźnika? Sama abstrakcyjna koncepcja?
Całkiem proste pytanie, ale czegoś, czego nie byłem w stanie się dowiedzieć. Kto jako pierwszy opisał ideę wskaźnika? Sama abstrakcyjna koncepcja?
Odpowiedzi:
Bud Lawson otrzymał nagrodę IEEE Computer Pioneer Award kilka lat temu za wynalezienie zmiennej wskaźnika w 1964 roku.
Wskaźniki są tak naprawdę pamięcią adresowaną przez zawartość rejestru. W związku z tym wszystkie języki asemblera implementują to w jakiś sposób, a wcześniej cały kod maszynowy na stałe to implementował.
Pojawi się argument dotyczący pierwszego komputera, który to zaimplementował. O ile wiem, system małych skal Uniwersytetu Manchestern jako pierwszy wprowadził pamięć adresowaną przez rejestry sterowane programowo. Być może poprzedziło go system ENIAC, ale miał tak mało pamięci, że pamięć adresowalna stała się kwestią sporną.
Wskaźniki to szerzej odniesienia. Pierwszym językiem, który miał coś takiego, był ALGOL 60, który można nazwać po imieniu. Ta odpowiedź na SO zawiera pewne szczegóły. PL / Miałem wskaźniki, podobnie jak BCPL, co oznacza, że CPL prawdopodobnie również, chociaż nie znalazłem na to żadnych dowodów. CPL jest bardzo trudna do skonkretyzowania.
Aby bardziej bezpośrednio odpowiedzieć na twoje pytanie „kto” albo DW Barron, Christopher Strachey lub Martin Richards prawdopodobnie ukuli termin „wskaźnik”.
Trudno zgadnąć, kto dokładnie je wymyślił, ale rejestry indeksów w IBM 704 były prawdopodobnie pierwszą implementacją. Z punktu widzenia języka programowania byłby to bez wątpienia język asemblera 704.
Najwyraźniej zajęło to kilka lat po tym, jak języki programowania wyższego poziomu zostały zaprojektowane, aby wykorzystać tę innowację, ale do tego czasu większość wynalazków została zakończona, a przede wszystkim sprowadzono się do wybierania nazw, notatek itp., Aby opisać, jaki sprzęt utrzymany.
Wskaźniki jako podstawowa koncepcja są używane w „adresowaniu pośrednim” funkcji na większości procesorów cofających się co najmniej tak jak 6502.
Commodore używał „jądra” na komputerach VIC 20, C64 i C128. ustalony zestaw oprogramowania adresowego mógłby wywoływać, który byłby następnie przekierowywany do bieżącego kodu. Mogliby następnie zmodyfikować system operacyjny bez uszkodzenia istniejącego oprogramowania.
Myślę, że 8080 i Z80 również miały adres pośredni, ale nie jestem pewien i nie pamiętam tego w 8008.
Cóż - po raz pierwszy konkretną składnię i semantykę opracowano dla zmiennych wskaźnikowych dla języka programowania PL / I w 1964 r.
Przełomowy artykuł na ten temat ukazał się w 1967 r. W ACM Communications w 1967 r.