?

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

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

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

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

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

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

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

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

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

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

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

А ничем.

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

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

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

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

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

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

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

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

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

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

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

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

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



doc-файл




  • 1
Как у вас - математиков, учителей и программистов - всё сложно... А требуется-то всего-навсего объяснить детям, что все эти математические абстракции сами по себе не значат ничего, а должны применяться для описания реального мира, в котором эти дети прекрасно ориентируются и понимают что с чем и с какой целью можно складывать и что при этом получится. Ну или для написания диссертаций, где всё совсем наоборот :-)

> Как у вас - математиков, учителей и программистов - всё сложно...

Не-е-е, у меня все было просто. Или почти все.

Господи, валенки с сапогами нельзя складывать в первом классе.
Или вы хотите начать обучение в школе с введения понятий объект и класс????


Для детей это совершенно естественные понятия. Им в этом смысле проще, чем взрослым.

Программирование базируется на алгебре с её представлениями о наборах объектов и операций, над этими наборами определёнными. Так что всё равно - математика :-)

Ну а то, что в школе вдалбливают в голову до сих пор, что 'делить на ноль нельзя!' - проблема неумелого преподавания и сильно устаревших методик, увы.

> до сих пор

В моей, ещё советской, школе висел стенд, где было написано 0/х=0, х/0=8 (в смысле - бесконечность), и только 0/0 - нельзя (или что-то наподобие).

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

я помню "веселый" случай, когда я помогал с математикой младшекласнику по просьбе его родителей. мы решали типичную задачку, где нужно было умножить (что-то вроде) 5 яблок на 2 корзины и получить общее число яблок. И я без всяких сомнений, оббъяснив решение и убедившись, что ребятонок може решить произвольную задачку этого же типа, отбыл домой. Но на следующий день я выяснил, что ребятенку поставили трояк, за что мне было высказано не мало претензий. Причиной была запись решения 2*5 вместо 5*2. казалось бы, черт возьми - то, что от пересатновки мест множителей произведение не меняется детей учат в том же классе, но нет! Оказывается, по логике учителя, если 2 корзины умножить на 5 яблок, то получается 10 корзин. Т.е. первым должен быть объект, количество которого нужно определить, а вторым количество групп таких объектов.

поразмышляв, я решил, что все из-за того, что умножение - это многократное сложение. И запись 5+5 не совсем аналогична 2+2+2+2+2 с точки зрения физического смысла. Подтверить я это никак не смог, потом что не мог же я прийти к учителю за разъяснениям, а родители ребенка отказалисьэто делать по соображениям психологическго характера. Для меня это так и осталось загадкой.


Про это можно прочитать по первой ссылке из статьи.

Вы приводите пример, когда берете одно множество яблок (Я), второе множество апельсинов (А), и объединяете эти два множества по определенному признаку (фрукты, Ф)) .
А дальше получается, что мощность первого множества |Я| плюс мощность второго множества |A| равно мощности объединения: |Я| + |А| = |Ф|.

То есть Вы все равно складываете числа, а не предметы (объекты).
Кстати, у нас в 5-м классе были "основы" теории множеств. Не знаю, как сейчас.

тут в принципе не совсем теория множеств. Тут больше физика с ее проверкой полученной формулы на размерность - получаются ли искомые км/ч или нет.

понятно, что если сложить яблоки и апельсины, то 8 яблок или 8 апельсинов не получится. Получится фруктовый салат. Поэтому просто так говорить, что яблоки с апельсинами складывать нельзя, не очень педагогично.

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

"...«Нельзя складывать яблоки с апельсинами»....
Чаще, всё-таки, нам запрещали складывать литры и метры.

С литрами и метрами гораздо тяжелее найти общий класс. Кажется, будто «единицы измерения», однако смысла в «в сумме 125 каких-то единиц измерения» не особо много.

это же не сложение, чего огород городить.

Бытийный язык резко отличается от "научного", математического своей пластичностью.
Научный язык, язык математических формул - это язык "лего" форматов: складывая формулы можем получить только один "верный результат".

Бытийный язык, язык здравого смысла позволяет воспроизводить и понимать представления разных форм, (их составляющие мемы - как пластилиновые кубики, которым можно придать разные формы, легко сочетающимися с другими) в зависимость от контекста и надсмысла .....
В общении нужна краткость, образность и интуитивный контакт .....

Яблоки и апельсины и просто неудачный пример, потому что у них размерность на самом деле одинаковая - штуки (или единицы, или говорят еще безразмерная величина) . А что получится если сложить литр молока и килограмм муки? Зная плотность, можно перевести в единицы одинаковой размерности и тогда уже можно складывать числа.

> А что получится если сложить литр молока и килограмм муки?

Тут в комментах человек, собственно, приводил пример того, что может получиться — скалярная оценка ошибки моделирования, например. Правда, такое обычно выглядит не как 1 литр + 1 кг, а как k1 * (1 литр)2 + k2 * (1 кг)2.

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

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

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

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

С точки зрения программирования самый просто способ сложить 5 яблок и 7 апельсинов - это сложить их как строковые переменные. Будет "5 яблок7 апельсинов"
Вы всё, конечно, правильно пишете. Вот только школьнику перво- или второкласснику это понятно не будет. К тому же то, что вы пишете - это не программирование. Это физика, формальная логика и алгебра.
Любое утверждение имеет смысл в некоем контексте. В контексте математики для первого класса вполне понятно и логично, что "яблоки и апельсины складывать нельзя". Это как раз первое представление о размерностях.
Например, в школе детям говорят, что Земля круглая. А я как астроном возражу. И скажу, что она имеет форму трехосного эллипсоида. Сколько времени я потрачу на объяснение, что это такое? И зачем это детям? До старшей школы вполне нормально , если дети будут думать, что Земля просто круглая.

> Вы всё, конечно, правильно пишете. Вот только школьнику перво- или второкласснику это понятно не будет

Второкласснику это понятнее, чем взрослому, которые в этом возрасте этого не понял.


> Это как раз первое представление о размерностях.

…первое неправильное. Поскольку потом будет ещё несколько неправильных.


> И скажу, что она имеет форму трехосного эллипсоида. Сколько времени я потрачу на объяснение, что это такое?

Я думаю, где-то секунд двадцать.


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

Не надо сначала обманывать, чтобы потом сказать правду. Надо сразу сказать правду.

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

То же самое с капитализмом и коммунизмом. Капитализм относится к разряду "фруктов", а коммунизм одна из его разновидностей (вернее, предел этой разновидности, идеальное, которое как та бесконечность, которую как-то (криво-косо) представить ещё можно (или прикинуться, что "представляешь"), а достичь, наверное, нельзя)

То же самое и с "экономиками", и с "демократиями".

КОгда США стали "демократией"? На мой взгляд, где-то после отмены сегрегации, то есть уже после Второй мировой войны. А до этого это была "расистская демоктария". Как и в Древней Греции была "рабовладельческая демократия"

Но это же перегрузка оператора :)

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

  • 1