Dyzzet|
C++ Data Science Алгоритмы Темы · Блог · YouTube · Telegram
По крайней мере, я называю список списком

Alexander Stepanov. Spoils of the Egyptians. Lecture 2. Part 2

Правило, которое нам нужно в какой-то степени... навязать себе. Мы должны раз и навсегда решить, что будем придерживаться установленной терминологии. И позвольте мне сказать вам. Прямо перед вами — вы видите одного из худших нарушителей этого правила. Я про себя, не про вас. Почему так вышло? И я не горжусь этим. Мне очень стыдно за одну вещь. Некоторые из вас могут знать, что я создал STL. Некоторые из вас даже могут использовать STL. Если так, то, скорее всего, вы используете класс, который называется?.. Какой класс вы используете? vector! vector, вы используете vector. Так вот... это очень позорный факт — эти векторы не имеют ничего общего с векторами, которые я знал и любил всю свою жизнь. Они не находятся в векторном пространстве. Объекты в векторном пространстве не увеличивают свою размерность и не уменьшают. Они сохраняют размерность. И они не бывают произвольного типа; они все связаны с полями. И у вас есть операции, такие как скалярное произведение и многие другие замечательные вещи. Вот их называют векторами.

Так давайте обдумаем, что же произошло. Бредил ли я? Нет, нет, на самом деле не бредил. Я думал, что делаю всё правильно. Когда я вводил этот термин в C++, моя логика была такова: я должен быть скромнее и не выдумывать новый термин. Я должен использовать общеизвестные термины. Поэтому я решил посмотреть, как это называется в языках Common Lisp и Scheme. И что я сделал? Предпочёл сообщество из 50 человек, а не сообщество из пяти миллионов. Я следовал примеру какого-то очень маленького, переходного сообщества. Сообщество Scheme мёртво. В MIT сейчас учат языку Python.

Но мы навсегда застряли в этой ситуации с векторами. Опять же, ошибки, которые вы совершаете, очень трудно исправить. Мы должны быть весьма осторожными, когда используем термины, мы должны использовать их точно. В конечном итоге я ссылаюсь на статью Айверсона под названием «Нотация — это инструмент мышления» (Notation Is A Tool of Thought). Но раньше нотации идёт язык как инструмент мышления. Мы должны быть очень-очень осторожными в использовании языка и должны использовать общеизвестные термины. Мы не должны использовать термины для обозначения того, чем они не являются. Сделал ли я так? Да, я только что публично признался. Если бы тут был пепел, я бы посыпал им голову, но пепла не предоставили. Так что, знаете, я не могу этого сделать. Я имею в виду, вы должны быть очень-очень осторожными. По крайней мере, я называю список списком, в отличие от языка Python (аудитория смеётся).

Александр Степанов. Трофеи египтян

The rule that we need to sort of do... enforce ourselves. We have to once and for all decide that we will stick to an established terminology. And let me tell you. Right in front of you—you see one of the worst offenders against such a thing. This is me, it’s not you. Why? And I’m not proud. I’m very ashamed of a certain thing. Some of you might know that I’m the guy who did the STL. Some of you might even use some STL. If you do, most likely you use a class called?.. Which class would you use? Vector! Vector, guys, you use vector. And here... this is a very shameful fact—this vectors have nothing to do with vectors which I knew and loved all my life. They don’t populate vector space. Things in vector space do not grow, nor do they shrink. They remain in the same dimension. And they just don’t come from any type; they come from a field! And you have operations such as scalar product and many other wonderful things. They’re called vectors.

So let us think what happened. Was I delirious? No, no, actually I was not delirious. I thought I was doing the right thing. So when I introduced it in C++, my logic went like so: I have to be humble and invent a new terms in it. I have to use a well-established term. So I have to go and see what these things are called in Common Lisp and Scheme. So what did I do? I picked a community with 50 people versus community with 5 million people. I followed [an] example of some very small, transitory community. The Scheme community is dead. At MIT, they’re teaching Python.

But we’re stuck with vectors forever. Again, mistakes which you make are very hard to undo. We have to be very careful when we use terms, we have to use them precisely. Eventually, you know, I’ll refer to a paper by Iverson called Notation Is A Tool of Thought. But before notation, language is a tool of thought. We have to be very, very careful in our use of the language and we have to use established terms. We should not use terms to mean to what they’re not. Have I done it? Yes, I just made public confession. If there were ashes, I would put them on head, but there were not ashes provided by the facilities. So, you know, I cannot do that. I mean you have to be very, very careful. At least, I call list list, unlike Pythonic.

Alexander Stepanov. Spoils of the Egyptians

26 августа
цитаты Степанов
Зарегистрируйтесь и войдите, чтобы оставлять комментарии и голосовать.

Также может быть интересным
На моём YouTube-канале

Как написать умный указатель unique_ptr с нуля

Поворачиваем изображение на C++ с помощью обратной матрицы

CRC-32 своими руками на C++. Оптимизация с помощью constexpr и consteval
© MMXI—MMXXVI. RSS
 Boosty
Светлая тема / тёмная тема