Правило, которое нам нужно в какой-то степени... навязать себе. Мы должны раз и навсегда решить, что будем придерживаться установленной терминологии. И позвольте мне сказать вам. Прямо перед вами — вы видите одного из худших нарушителей этого правила. Я про себя, не про вас. Почему так вышло? И я не горжусь этим. Мне очень стыдно за одну вещь. Некоторые из вас могут знать, что я создал STL. Некоторые из вас даже могут использовать STL. Если так, то, скорее всего, вы используете класс, который называется?.. Какой класс вы используете? vector! vector, вы используете vector. Так вот... это очень позорный факт — эти векторы не имеют ничего общего с векторами, которые я знал и любил всю свою жизнь. Они не находятся в векторном пространстве. Объекты в векторном пространстве не увеличивают свою размерность и не уменьшают. Они сохраняют размерность. И они не бывают произвольного типа; они все связаны с полями. И у вас есть операции, такие как скалярное произведение и многие другие замечательные вещи. Вот их называют векторами.
Так давайте обдумаем, что же произошло. Бредил ли я? Нет, нет, на самом деле не бредил. Я думал, что делаю всё правильно. Когда я вводил этот термин в C++, моя логика была такова: я должен быть скромнее и не выдумывать новый термин. Я должен использовать общеизвестные термины. Поэтому я решил посмотреть, как это называется в языках Common Lisp и Scheme. И что я сделал? Предпочёл сообщество из 50 человек, а не сообщество из пяти миллионов. Я следовал примеру какого-то очень маленького, переходного сообщества. Сообщество Scheme мёртво. В MIT сейчас учат языку Python.
Но мы навсегда застряли в этой ситуации с векторами. Опять же, ошибки, которые вы совершаете, очень трудно исправить. Мы должны быть весьма осторожными, когда используем термины, мы должны использовать их точно. В конечном итоге я ссылаюсь на статью Айверсона под названием «Нотация — это инструмент мышления» (Notation Is A Tool of Thought). Но раньше нотации идёт язык как инструмент мышления. Мы должны быть очень-очень осторожными в использовании языка и должны использовать общеизвестные термины. Мы не должны использовать термины для обозначения того, чем они не являются. Сделал ли я так? Да, я только что публично признался. Если бы тут был пепел, я бы посыпал им голову, но пепла не предоставили. Так что, знаете, я не могу этого сделать. Я имею в виду, вы должны быть очень-очень осторожными. По крайней мере, я называю список списком, в отличие от языка Python (аудитория смеётся).
Александр Степанов. Трофеи египтян


Boosty