Программирование и размерности

Sep 21, 2020 11:42

Вы-таки спрашиваете, почему изучения программирования полезнее изучения почти чего угодно другого и потому вот именно ему совершенно точно надо обучать всех?

На самом деле, конечно, обычно не спрашиваете - это я сам себя за вас риторически спросил, но всё равно объясню.

Есть така фигня, малята, что школьные учителя и методисты не понимают операций с размерностью, поскольку методология преподавания такая, что там специально сделано всё так, чтобы правильно понять их было как можно труднее. Математика, иными словами, хороша тем, что с её помощью можно привести ум не только в порядок, но и в беспорядок. Вот тем, видимо, и занимаются.

Однако я больше скажу. Хрен с ним, с умножением и порядком множителей, давайте задумаемся о сложении.

Помните, отличное школьный пример про размерные операции со сложением? Ну, вот этот, замечательный, который не только произносился на уроках, но даже вошёл во всевозможные детские книжки и мультики?

«Нельзя складывать яблоки с апельсинами».

А вот йух. На самом деле, их можно складывать. И вы это даже постоянно делаете. Несмотря даже на то, что в школе якобы на примере якобы показали, что так делать нельзя.

Например, у вас есть три пары ботинок. Сколько всего у вас ботинок? Шесть штук, да? Однако наверняка ведь у вас не три совершенно идентичные пары - скорее всего они разные. Отличаются и фасоном, и фирмой, и моментом производства. Но вас ведь это не остановило от сложения.

У вас рюкзак и у Васи рюкзак. Сколько всего рюкзаков? О да, рюкзаки-то у вас тоже не идентичные, но это вас снова не остановило.

У вас пять яблок Гренни Смит, а у Пети - три яблока Семеренко. Яблоки - разные. Но сложить их всё равно почему-то можно.

Так чем так сильно отличаются апельсины, что их сложить с яблоками уже нельзя?

А ничем.

Суть в том, что операции с размерными величинами несколько хитрее, чем то, как их преподносят в школе не понимающие математику и программирование люди. И таки да, именно вот это самое, что заключено в означенной хитрости, можно считать самой сутью математики, о которой школьников пытаются дезинформировать, но скорее, конечно, это суть современного программирования.

Любому программисту понятно, что если у нас есть список объектов «яблоко» и список объектов «апельсин», то при объединении их в один список, это всё равно будет список. Но не яблок и не апельсинов, а объектов какого-то класса, который у яблок и апельсинов общий - например, фруктов. При этом длина списка будет равна сумме длин изначальных списков.

Именно вот так мы и складываем яблоки с апельсинами: вычисляя при помощи суммирования длину списка, в котором будут лежать оба вида фруктов.

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

Если у вас пять яблок, а у Васи три апельсина, то у вас в сумме пять яблок и три апельсина. Это тоже операция сложения: пять моих яблок плюс ноль васиных равно пять яблок на двоих.

Как мы это узнали? Взяли оба списка фруктов и отфильтровали из них всё, что не яблоки, например. Или добавляли в новый список только яблоки. Или подсчитывали в списках только яблоки. Вроде бы разные операции, но суть действия одна: если мы хотим оперировать с объектами конкретного класса, то мы проверяем класс каждого объекта, в каких бы списках оные ни лежали.

Но, тем не менее, у нас с ним восемь фруктов, поскольку пять моих яблок - фрукты, и три васиных апельсина - тоже фрукты.

Если интересующий нас класс поменялся, то метод подсчёта всё тот же - иным стал лишь критерий фильтрации. Если в прошлый раз мы проверяли каждый объект на то, является ли он яблоком, то теперь мы проверяем каждый объект на то, является ли он, например, фруктом. Поскольку «фрукт» - общий класс для «яблок» и «апельсинов», и мои яблоки и васины апельсины подходят под критерий. И мы даже при желании можем их сложить в общий список. Только это будет уже не список яблок и не список апельсинов, а список объектов общего для яблок и апельсинов класса.

И тут нет никакой логической ошибки. И нарушений в математической логике тоже нет. Напротив, нарушение математической логики есть там, где говорится, что «складывать яблоки с апельсинами вообще нельзя». Поскольку оно «вообще» не верно: не только можно, но ещё и существует более одного способа.

Общих классов у яблок и апельсинов может быть больше одного. Например, «объекты, форма которых достаточно близка к шару». «Твёрдые тела». «Съедобные штуки». «Объекты, обладающие массой».

И одновременно с тем, мы всегда можем проверить класс с целью решить, как обойтись с данным объектом в рамках интересующего нас вопроса.

Правильно преобразуйте размерность к общему для всех объектов классу и всё отлично просуммируется. Отфильтруйте подходящим к вопросу критерием, и снова всё отлично просуммируется.

За этим куда больше последовательной теории, нежели за идиотскими требованиями к соблюдению порядка множителей или за вымученными примерами про «казнить нельзя помиловать», которые иллюстрируют общее явление исключительно редким частным случаем.

doc-файл

контрманипуляция сознанием, образование, философия, программирование

Previous post Next post
Up