Кто изобрел указатели?


12

Довольно простой вопрос, но кое-что я не смог выяснить. Кто был первым, кто описал идею указателя? Сама абстрактная концепция?


8
Учитывая, что указатели являются просто ссылками на память, я предполагаю, что указатели (в той или иной форме) существовали с начала вычислений. Как еще вы могли бы прочитать немного памяти?
Роб

3
Давайте не будем забывать указатель инструкций (IP) здесь (он же счетчик программ ). «Действительно, программный счетчик (или любой эквивалентный блок оборудования, который служит той же цели) очень важен для архитектуры фон Неймана».
Скотт Уитлок

@Rob - были хранилища памяти, к которым обращались (по крайней мере, на самом низком уровне) по времени, а не по адресам - линиям задержки ртути и т. Д. В принципе, было бы возможно выполнить некоторые виды обработки информации, не изобретая адреса. Кроме того, модель машины Тьюринга имела только ленту (к сожалению, почему я сказал, что стек?). Есть возможные ответы на «как еще?», СЕЙЧАС, хотя в реальной жизни я думаю, что вы правы.
Steve314

Ответы:


4

Бад Лоусон получил награду IEEE Computer Pioneer Award несколько лет назад за изобретение переменной указателя в 1964 году.


Премьер-министр Шерман, в 1963 году, предшествует ему. См. Его Программирование и кодирование Цифровые компьютеры viii. 152: «Эти регистры индекса указывают на места в памяти; следовательно, при таком использовании они называются указателями».
Геремия,

15

Указатели - это действительно хранилище, адресуемое содержимым регистра. Таким образом, все языки ассемблера реализуют это каким-то образом, и до этого все жестко закодированный машинный код реализовывал это.

Там будет некоторый аргумент в отношении первого компьютера, который реализовал это. Насколько я знаю, система малого масштаба Манчестерского университета была первой, в которой была реализована система хранения, адресованная регистрами, управляемыми программой. Это , возможно, предшествовал системе ENIAC , но это было так мало памяти, чтобы сделать адресацией хранения спорный вопрос.


+1 Я предполагаю, что механизм различий был слишком прост, чтобы требовать регистры, но знает ли кто-нибудь, нужны ли они аналитическому механизму?

@Mark - это может быть проблемой определения. Даже для выполнения одной арифметической операции, такой как сложение, у вас есть два входных значения и выход, которые нуждаются в некотором представлении в механизме. Это представление можно назвать регистром. Можно даже утверждать, что на счетах есть реестр.
Steve314

@ Стив - Хорошая мысль.

Ключевым моментом здесь является «хранилище, адресованное содержимому регистра». т.е. возможность загружать и хранить регистр из некоторого другого фрагмента памяти, используя адрес в другом регистре, и возможность манипулировать этим адресом.
Джеймс Андерсон

5

Указатели являются более широкими ссылками. Первым языком, который имел что-то подобное, был Алгол 60, который можно было назвать по имени. Этот ответ на SO входит в некоторые детали. У PL / I были указатели, как и у BCPL, что означает, что CPL, вероятно, тоже, хотя я не нашел никаких доказательств этого. CPL очень трудно конкретизировать информацию о.

Чтобы более прямо ответить на ваш вопрос относительно того, «кто» или Д. У. Баррон, Кристофер Стрейчи или Мартин Ричардс, вероятно, придумал термин «указатель».


Не забывайте B - у него были указатели! Также PL / I, и я уверен, что перед ним есть другие, не считая машин сборки и Тьюринга.
Pubby

Так что это будет 1966 год.
Мировой инженер

У Алгола были указатели
Кевин Клайн

4

Трудно догадаться, кто именно их придумал, но регистры индекса в IBM 704 были, вероятно, первой реализацией. Следовательно, с точки зрения языка программирования, это, несомненно, был бы ассемблерный язык 704-х годов.

Очевидно, потребовалось несколько лет после этого, чтобы языки программирования более высокого уровня были разработаны для того, чтобы воспользоваться этим нововведением, но к тому времени большая часть изобретений была сделана, и в основном все сводилось к выбору имен, обозначений и т. Д., Чтобы описать, какое оборудование поддерживается.


0

Указатели в качестве основной концепции используются в «косвенной адресации» функции на большинстве процессоров, начиная с 6502.

Commodore использовал "kernal" на своих компьютерах VIC 20, C64 и C128. фиксированный набор программ адресации мог бы вызвать, который тогда был бы перенаправлен к текущему коду. Затем они могут изменить ОС, не нарушая существующее программное обеспечение.

Я думаю, что 8080 и Z80 тоже имели косвенный адрес, но я не уверен и не помню его в 8008.


1
На самом деле, указатели также используются при прямой адресации. Они просто указатели времени компиляции - если, конечно, вы не используете самоизменяющийся код. Я тоже поклонник 6502 (или, строго говоря, 6510) - моя первая машина была C64 - но этот чип здесь не особо важен. Первые потребительские микропроцессоры мало что изобрели на пути новых принципов - идеи были известны уже десятки лет. Просто эти идеи не могли быть реализованы в виде единого доступного чипа до 70-х годов и не стали массовыми потребительскими игрушками до 80-х годов.
Steve314

0

Хорошо. Впервые конкретный синтаксис и семантика, разработанные для переменных-указателей, были для языка программирования PL / I в 1964 году.

Оригинальный документ об этом появился в 1967 году в ACM Communications в 1967 году.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.