Обновить
41
0.9
Николай Меркин @nickolaym

Пользователь

Отправить сообщение

и делаете из него каперсы, манго и маракуйю, идентичные натуральным!

Это не неправда, не так ли?

Э, момент. "Многократно повторённое" - это умножение на скаляр, причём на целый и неотрицательный. Чтобы перейти к нецелому и неположительному, надо сделать кое-что нетривиальное.

Мы размерную величину (штуки яблок, метры вправо) умеем складывать и вычитать.
Вводим умножение нацело, окей.
А вот потом делаем трюк! Коммутативность умножения, кстати, следует из ассоциативности и коммутативности сложения.
Замечаем, что "+N яблок" * "повторить M раз" = "+M яблок" * "повторить N раз"
И раз такое дело, то = "MN яблок" * "1 раз" = "1 яблоко" * "MN раз" = "MN" * "яблок,раз"
и вот только здесь мы показали независимость безразмерных величин и обозначений размерности

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

В начальной школе, кстати, - не знаю, как сейчас, а раньше заставляли во всех расчётах указывать размерность.
"Вася дал Пете 3 [яблок], а Петя вернул Васе 2 [яблок]: +3-2=1 [яблок] осталось у Пети".

Полтора яблока - представимый объект, полтора раза - нет.
(Попробуйте выполнить дифференцирование полтора раза. А почему полтора сложения удалось сходу?)
Но мы увидели, что коммутативность позволяет выпихать нецелые и неположительные числа в тот операнд, который может таким быть.

Примечание. Нецелое дифференцирование сущестует, см. "диффинтеграл"
https://ru.wikipedia.org/wiki/Дробное_интегро-дифференцирование
https://www.youtube.com/watch?v=2dwQUUDt5Is

Какой-то бессмысленный комментарий.
Кого и чему вы хотите "научить думать", и что значит "залечить"?

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

Если дети хотят изучить свойства чисел, то берём коробку со спичками и изучаем.
Обнаружить ассоциативность, коммутативность и дистрибутивность, - и по индукции поверить, что это универсальные свойства, а не только в пределах количества спичек в коробке, - это задача для первого класса.

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

А если вы хотите доказать (или чтоб я доказал), что в арифметке естественным образом возникает кольцо, - ну блин...
Это вы предлагаете опуститься до базиса логики Аристотеля (⇒,¬) и арифметики Пеано (0,S) и вывести оттуда всё остальное? Или что?
А у детей голова не опухнет от такого подхода?

А нам не нужно кольцо. Нам достаточно некоммутативное полукольцо.

В полукольце нам пофиг, чему равно xy. Лишь бы 1x = x1 = x. Что у нас не полугруппа, а моноид.
Приняли это за аксиому, и поехали.

Ещё нам нужна дистрибутивность. Для положительных чисел она естественна - из модели реального мира.
Для отрицательных... мы принимаем на веру, что они ведут себя так же.
Для детей прокатит. Для взрослых - скажем, что это аксиома, и тоже прокатит.

И вот в некоммутативном полукольце я доказал, что (-x)(-y) = xy.

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

Умножить штуки на скаляр можно, - это такой метаязык в группе, "повторить сложение N раз".
Умножить штуки на штуки... Что получится, если два яблока умножить на два яблока? Четыре ЧЕГО?

Залезаем в геометрию, там появляются линии и площади.
Для целых чисел - ладно, это могут быть "штуки точек в квадратной сетке", хоть по линии, хоть по плоскости, хоть в объёме.
Тоже небезупречно, "ноль - это точка?" и старая-добрая программистская проблема ±1 в индексах.

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

Спичка хороша тем, что у ней есть головка и хвост, можно говорить о направлении (о знаке).
Тогда спички ==o + o== взаимно уничтожаются, например!
Ну и плитки тогда со штриховкой по одной и другой диагонали. И они тоже подчиняются правилам перевёртывания и уничтожения.

Во-первых, я это доказал.
Для --a это следствие в группе по сложению.
Для (-a)(-b) это следствие в кольце даже без коммутативности.
Если ввести его как аксиому, то базис будет избыточным, и можно какую-нибудь другую аксиому кольца выкинуть либо упростить.

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

Мы можем говорить про алгебраическую структуру "моноид по умножению над кортежом (неотрицательные числа, знак)". Нейтралью является (1,+).
Причём по первой, числовой, компоненте коммутативность - дело произвольное, а по второй, знаку, обязательное, и вообще, по второй компоненте у нас группа.
Ну и ещё (0,+) == (0,-).

Патчи хороши, если какой-то файл надо закоммитить по кусочкам.
Например, внёс в файл пять правок, но логично было бы сделать их тремя коммитами (сгруппировать с правками других файлов, например).

Вот только руками редактировать патчфайл - это мрачный труд.
Но уважающие себя графические клиенты (и/или компоненты IDE) умеют формировать патч построчно.
Конечно, если правки нахлестнулись, то придётся страдать и как-то выкручиваться из ситуации.
(Либо плюнуть на красивую историю и жахнуть всё одним коммитом).

push -f - это прямой результат действительно совместной работы.

Если вы наделали изменений, и ваш коллега параллельно наделал изменений, которые могут повлиять на ваши, - то у вас есть два путя:

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

  2. сделать ребейз своей ветки на свежий мастер, исправить конфликты (в каждом вашем коммите лично вам будет очевидно, какие правки как накатывать), push -f ветки в ориджин, и уже предлагать пулреквест с мержкоммитом.

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

блейм будет показывать на мержкоммит
а в мержкоммите будет ссылка на пулреквест
а в пулреквесте хорошие люди пишут общее пояснение и дают ссылку на тикет

Можно предложить и графическую интерпретацию. Умножение как площадь прямоугольника.
(Мы тут попадаем на размерности, и результат умножения уже оказывается другого типа, нежели множители, т.е. нельзя просто так написать a + bc, хотя можно a1 + b*c).

     y
     ^
  \\\|////
  \\\|////
  \\\|////
-----0------> x
  ///|\\\\
  ///|\\\\
     |

на картинке в первом квадранте штриховкой / показано (+4)(+3), во втором \ (-3)(+3), в четвёртом \ (-4)(+2), ну а в третьем - то, что нас волнует, / (-3)(-2).

Можем графически показать, как происходит сложение площадей, как вычитание, как отзеркаливание, почему / и \ соответствуют площадям разного знака.
(Лень тут псевдографикой всё иллюстрировать, извините).

Ну а раз в третьем квадранте штриховка та же, что и в первом, - то значит, площадь произведения двух отрицательных линейных величин - положительная. Ура.

А дальше - вопрос педагогики.
Кому-то из детей лучше зайдёт текст, логика и теорема из теории колец (тсс! это третий класс, а не второй курс), а кому-то - геометрическая картинка (тсс, тут размерные величины! все эти квадратные землекопы...)

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

  1. покажем, что (-a)b = -(ab)
    ab + (-a)b = (a + -a)b = 0b = 0
    (мы тут применили дистрибутивный закон)
    откуда -(ab) = (-a)b

  2. покажем, что a(-b) = -(ab)
    ab + a(-b) = a(b + -b) = a0 = 0
    откуда -(ab) = a(-b)

(это мы обошлись без коммутативности умножения)

  1. покажем, что (-a)(-b) = -(-ab)
    (-a)(-b) = -(a(-b)) = -(-ab)

  2. вспомним, что унарное отрицание - это элемент, обратный по сложению.
    из чего следует, что двойное отрицание даёт исходный элемент
    -a + --a = 0 = -a + a
    откуда --a = a

Откуда (-a)(-b) = -(-ab) = ab

Вот и посмотрите, сколько писанины у меня, и сколько писанины и рисанины у вас...

Зеркало меняет не левое и правое, и не верх и низ.
Зеркало меняет перед и зад. Если бы оно сохраняло их, то в зеркале вы бы видели свой затылок.

А уже дальше человеку - в силу того, что мы

  • гораздо более манёвренны в горизонтальной плоскости (двигаемся и поворачиваемся), нежели в вертикальной (не любим наклоняться, а тем более, вставать на голову)

  • визуально почти симметричны по вертикали проще интерпретировать, что наше отражение повернулось к нам по вертикальной оси и отразилось в сагитальной плоскости (пенпердикулярной плоскости зеркала).

Какое-нибудь существенно несимметричное создание, например, камбала, или существенно по-другому симметричное, например, дождевой червяк, может считать иначе. Что зеркало его перевернуло та гепнуло!

Ну и где лямбда-исчисление, там же и комбинаторная логика.
Которая тоже обладает своей особенной красотой.

А самый ураган в том, что можно найти минимальный базис - набор элементарных функций, из которых строится всё.

Например, в обычной двоичной логике есть два хорошо известных базиса:

  • аристотелев "отрицание, импликация"

  • булев "отрицание, конъюнкция, дизъюнкция" но внезапно, существуют базисы из одной двуместной функции - Пирса и Шеффера, и-не и или-не.

В комбинаторной логике тоже традиционный базис - это IKS

  • I (identity): I x = x

  • K (konstant): K x y = x

  • S (substitute): S x y z = (x z) (y z)

из которого видно, что чёрчевские
K a b = a, да это же true
(S K) a b = K b (a b) = b, да это же false (причём заметьте, мы тут получили промежуточный бессмысленный мусор ab, что бы это ни значило).

Оказывается, I в этом базисе лишний, I = SKK:
S K K x = (K x) (K x) = x
Или чуть длиннее: I = SSKK:
S S K K x = S K (S K) x = K x (S K x) = x

Но можно пойти дальше и найти базис из единственного комбинатора "йота":
i x = x S K
(распишите его через лямбду сами, если хотите)

I = i i = i S K = S S K K = I, как мы это уже показали выше
K = i (i (i i)) = i (i I) = i I S K = I S K S K = S K S K = K K (S K) = K
S = i (i (i (i i))) = i K = K S K = S
ну а раз мы из йоты получили базис IKS, то йота сама является базисом.

И на её основе построен эзотерический язык, кто бы мог подумать, "йота"
https://en.wikipedia.org/wiki/Iota_and_Jot

Стоит заметить, что в лямбда-исчислении функции унарные.
true = (x) => ((y) => x)
false = (x) => ((y) => y)
и т.д.

старый добрый бейсик: ON ERROR RESUME NEXT
и ещё неизвестно, кто с кого брал пример - бейсик с абапа или наоборот...

А что вы хотели от технологии, которая всего на пару букв больше вечности? :)
ethernet - eternity - вечнос(е)ть

Жирный минус за кликбейтный заголовок.
Хочешь писать про строение кристалла - пиши про строение кристалла.
Хочешь писать про плохой бизнес и маркетинг - пиши про плохой бизнес и маркетинг.
Хочешь свалить в одну кучу и то, и другое - придумывай адекватное название своей куче.

"Этих частых стандартов"? Смешно.
Посмотрите хотя бы на версии питона, и поймёте, что комитетчики - те ещё лютые тормоза.
И кстати, комитетчики лихо отбиваются от разных пропозалов "я это видел в другом языке (в хаскелле, например!) и хочу такое же тут". В стандарт попадают довольно консервативные вещи, иногда это даже бесит - три года обсуждали гору, родили мышь.

Да прибудет с вами C++!

Куда и когда именно прибудет с нами С++?
Да пребудет с вами грамотность.

Информация

В рейтинге
1 820-й
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность