November 2021

S M T W T F S
 123456
78910111213
1415161718 1920
21222324252627
282930    

Style Credit

Expand Cut Tags

No cut tags
Wednesday, February 20th, 2013 07:30 pm
Преамбула. Среди математиков гуляет крылатая фраза "Бог создал натуральные числа, остальное - дело рук человека". На самом деле, если википедия и словарь немецкого нам не врут, то Кронекер сказал про целые, а не натуральные, и рук там тоже не было (что логично, остальную математику человек создал по большей части не руками).

Амбула. Предположим, что Бог действительно создал натуральные или целые числа. Из соображений божественности :) понятно, что все-таки натуральные, а не целые, отрицательное число отчетливо небожественно. Таки у меня к вам два вопроса.

1. Какую именно структуру создал Бог?

2. Ноль входит?

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

Я ставлю на: единицу (ноль не входит), следующее число (AKA +1), и... а вот что "и"? В основаниях математики тут используют рекурсию. Но рекурсия - понятие, мягко говоря, недетской сложности, его в школе до сих пор фактически не дают. Даже в вузах проходят построение целых чисел, рациональных, предела, действительных, производной, интеграла, и с легкостью доходят до гребеней математической статистики, рекурсию даже не упомянув. Между тем сложение детям, если объясняют, то объясняют по сути через примитивную рекурсию... Хотя нет, через итерацию. Через разворачивание числа в последовательность. Умножение тоже так вводят. "... и понятие последовательности"?
Wednesday, February 20th, 2013 04:14 pm (UTC)
Так Бог-то не обязан создавать только простые понятия.
Ну и кстати, я бы включала ноль.
И вычитание и деление - как инструменты.
Ну как руки человеку даны Богом, а то, что человек руками делает - уже создано человеком считается.
Wednesday, February 20th, 2013 04:18 pm (UTC)
Рандомные мысли по поводу:

(1) "Бог создал натуральные числа, остальное -- дело рук человека" (якобы Кронекер), "Итерация свойственна человеку, рекурсия божественна" (якобы Дойч). Отметим разные модели: в первой Бог начинает, а дальше человек сам справляется, а во второй -- Бог продолжает с того места, где человек уже не справляется.

(2) Есть у меня богохульное подозрение, что ноль был ДО того, как Бог создал натуральные числа. Ну или, немножко поиграв словами, ноля НЕ БЫЛО до того, как он создал что-бы то ни было. "Не быть" -- определяющее свойство нуля.

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

(4) Update: мне кажется, определяющим содержательным свойством "счёта" является то, что предметы можно считать в разном порядке, и ответ сойдётся. Нет, это не коммутативность сложения (сложение мы ещё не ввели), а что? И да, я неявно предроложил, что "натуральные числа" == "счёт".

... Натуральный ряд начинается с единицы ...

Edited 2013-02-20 04:21 pm (UTC)
Wednesday, February 20th, 2013 04:29 pm (UTC)
> Есть у меня богохульное подозрение, что ноль был ДО того, как Бог создал натуральные числа.

И был Бог единица, и было false нулем? :)))
Wednesday, February 20th, 2013 07:32 pm (UTC)
А поскольку "естественная" размерность в глазах смотрящего (с одной стороны, яблоко, но не фрукт, а с другой -- дерево, но не яблоня), то от нуля яблок переходим к нулю антоновок, и далее к нулю яблок, на которых я вырезал сердечко в честь дня святого Валентина. Дальнейшая история здесь (ключевая фраза -- последняя в третьем абзаце). На всякий случай, если мы считаем по разному: "A list of no 2s differs from a list of no 3s!"

... Асимметричный дуализм языкового знака ...

Wednesday, February 20th, 2013 10:39 pm (UTC)
Да, перегрузка констант иногда поражает. Например, в Окамле вот такое типизируется:

Printf.printf "%s = %d\n" "magic" 42;;

Просто первая строчка в кавычках имеет тип не string, а, щас,

(string -> int -> unit, out_channel, unit) format

(мне пришлось немножко подумать, чтобы заставить интерпретатор это вывести). С монадами там не заморачиваются, с точки зрения ввода-вывода язык просто процедурный, но с типизацией там всё аккуратно. :-)

... На палатку падали чипы холода ...

Thursday, February 21st, 2013 04:13 pm (UTC)
C int и float в окамле тяжёлое историческое наследие -- они не полиморфны. Даже плавающие бинарные операции выглядят как +. -. *. /. Хотя в SML полиморфны (и стандарт не определяет точно, сколь широкий контекст должен посмотреть компилятор перед тем, как сдаться и признать его просто int'ом, а не float и не word). Но строки формата (ну то есть не строки), да, парсятся и проверяются. Начиная с какой-то версии их можно даже конкатенировать без потери этой проверки.

... Зачем мне ДВЕ шизофрении? ...

Wednesday, February 20th, 2013 04:27 pm (UTC)
> Но рекурсия - понятие, мягко говоря, недетской сложности

Функция, как известно, от человека, а вот рекурсия...:)

Проблема в том, что без архимедовости возникают как системы над полями вычетов, так и "истинные" бесконечно малые числа:(

В общем, на мой вкус у бога нет другого выхода, как создавать полный эквивалент аксиоматики Пеано:)
Wednesday, February 20th, 2013 08:51 pm (UTC)
Да пофиг мне, что там Эру запретил:) Главное, что создаст он систему эквивалентную пеановской, а остальное - детали:)
Wednesday, February 20th, 2013 07:08 pm (UTC)
Раз. Я (как пидагох) разделяю такую нетривиальную точку зрения что чем раньше детям что-то расскажешь, тем легче им потом будет в старшей школе (ну, с определённого возраста, после 7 лет, мы же школьников обсуждаем, абстрактное мышлениедолжно появиться, младенчиков можно обсудить отдельно, тут я как раз против "раннего развития"). Ну, т.е. 1-2-классникам вполне можно рассказывать циклы, скажем, про это есть пара удачных учебников и среда программирования Пиктомир. Почему бы и не рекурсию шестиклассникам рассказать? (Могу спросить у коллег, которые более регулярно, чем я в последнее время, рассказывают что-то шестиклассникам - а и спрошу, пожалуй).

Два. Всякий, кого как-то учили формальной логике, по-моему, знает, что можно вот из чего числа соорудить: "сделать множество из того, что внутри" и "пустое множество". {}, {{}, {{}}}, {{}, {{}}, {{}, {{}}}} etc. - есть ли тут рекурсия?

И, да, про Кронекера мне как-то всегда казалось, что бог - натуральнве, а человек - всё остальное без уточнений, руками или чем-то ещё, ноя не заглядывала в оригинал.
Wednesday, February 20th, 2013 10:58 pm (UTC)
Мне в последнее время кажется, что все сложности в понимании рекурсии оттого, что завершение традиционно происходит в тот же самый момент, когда общий случай сводится к вырожденному. А это ("завершение" и "общий vs вырожденный") два разных понятия, которые мы таким образом успешно перемешиваем в головах. Мне кажется, что софизм "все лошади одинакового цвета" как раз на эксплойте этой трудности построен.

... Трудно быть багом ...

Thursday, February 21st, 2013 04:08 pm (UTC)
По-моему, проблема останова в рекурсивном случае не страшнее, чем в итеративном. Если вас смущает рекурсия, но не смущает ряд Коллатца (n := odd(n) ? 3n+1 : n/2)... ну я не знаю. А проблема, на мой взгляд, именно в том, что частный случай в программах, написанных понимающими рекурсию людьми, почему-то оказывается заодно и вырожденным. Ну, например... нет, не факториал. :-) Давайте определим ну хотя бы понятие "сумма n чисел". Для нормального человека простейший ("содержательный") частный случай -- это когда n=2. И сведение n=3 к n=2, n=4 к n=3 и так далее трудностей, по-моему, не вызывает. Но уже даже случай n=1 слегка нервирует, а уж n=0...

"Сумма ничего есть ничего" -- это игра слов, потому что произведение ничего равно единице, а чему равна конъюнкция ничего -- мне приходится каждый раз заново решать эту задачу в обратную сторону: чему она должна быть равна, чтобы применять рекурсию? Мне кажется, что если бы реальный код останавливался на n=2, то он был бы гораздо понятнее. Правда, у этого есть другая сторона: не факт, что он правильно работал бы при n=1 и n=0. А если и работал бы, то случайно. Я не знаю, что с этим делать.

P.S. В языке k (это такой потомок APL) пустых списков пять -- гетерогенный и четыре гомогенных по четырём базовым типам. Забавно, как они печатаются, какой вид автор считает "каноническим изображением": (), !0, 0#0.0, "" и 0#`

... Я купил за три рубля компилятор с паскаля ...

Wednesday, February 20th, 2013 07:57 pm (UTC)
Рекурсия действительно не вмещается в человеческий мозг. Я только что сказал «рекурсия не вмещается в человеческий мозг -- и это действительно так». Предыдущее высказывание неверно, хотя и является высказыванием о верном высказывании.

Может ли первоклассник разобраться в предыдущем абзаце? Для этого ведь и взрослому придётся соответствующим образом вывернуть мозг.
Wednesday, February 20th, 2013 08:07 pm (UTC)
Есть такая математическая операция, о которой математики не любят говорить. Если мы определяем 10 как 1+1+...+1 (10 раз) то мы должны уметь считать единицы. Без операции счёта нельзя даже определить умножение через многократное сложение.

То есть, Бог не просто создал (натуральные) числа, как абстрактные объекты -- он создал их пригодными для счёта.
Wednesday, February 20th, 2013 09:15 pm (UTC)
В английском регулярность появляется с четвертого:)
Wednesday, February 20th, 2013 10:49 pm (UTC)
Из этого можно сделать вывод (а можно и не делать :-), что правильное соответствие выглядит так:

x[0] - первый
x[1] - второй
x[2] - дватый
x[3] - третий
x[4] - четвёртый

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

... Veni, vidi, evasi, narravi ...

Thursday, February 21st, 2013 03:50 pm (UTC)
Наверное, я не понимаю нумерацию с нуля примерно так же, как Сента не понимает рекурсию. Нет, я вижу, что, скажем, кольцевой буфер получается компактнее, и даже сам так пишу, но всё равно не оставляет ощущение "фокуса". А от тождества a[:n]+a[n:]==a веет чем-то божественным (в смысле непостижимым). Но когда мне нужно разбить последовательность на три куска a[1..k-1], a[k] и a[k+1..n] ... ну вот, я, собственно, сформулировал задачу. Словами у меня получится дольше. А в счёт с нуля я это могу только оттранслировать.

... Неравенство строгое, но справедливое ...

Thursday, February 21st, 2013 04:20 pm (UTC)
"я даже буду" непонятно. :-(

... Фиолетовая контрреволюция ...

Wednesday, February 20th, 2013 08:11 pm (UTC)
Такая вот идея: порядковые числа начинаются с нуля, а количественные -- с единицы. Скажем, на дороге десять километровых столбов, на начальном написано "0", на конечном - "9".
Monday, March 18th, 2013 08:06 pm (UTC)
Вспомнилось при перечитывании: "это в соседнем магазине нет мяса, а в нашем магазине нет рыбы!".

... Потому что холодильник так устроен ...