Преамбула. Среди математиков гуляет крылатая фраза "Бог создал натуральные числа, остальное - дело рук человека". На самом деле, если википедия и словарь немецкого нам не врут, то Кронекер сказал про целые, а не натуральные, и рук там тоже не было (что логично, остальную математику человек создал по большей части не руками).
Амбула. Предположим, что Бог действительно создал натуральные или целые числа. Из соображений божественности :) понятно, что все-таки натуральные, а не целые, отрицательное число отчетливо небожественно. Таки у меня к вам два вопроса.
1. Какую именно структуру создал Бог?
2. Ноль входит?
Понятно, что натуральные числа можно задавать разными способами. Понятно, что просто натуральный ряд, без операций, Бог не создавал, смысла нет. Понятно, что, скажем, вычитание и деление не входят (множество натуральных чисел относительно них не замкнуто). Очевидно, что и, скажем, факториал тоже придуман людьми. А какие операции божественны?
Я ставлю на: единицу (ноль не входит), следующее число (AKA +1), и... а вот что "и"? В основаниях математики тут используют рекурсию. Но рекурсия - понятие, мягко говоря, недетской сложности, его в школе до сих пор фактически не дают. Даже в вузах проходят построение целых чисел, рациональных, предела, действительных, производной, интеграла, и с легкостью доходят до гребеней математической статистики, рекурсию даже не упомянув. Между тем сложение детям, если объясняют, то объясняют по сути через примитивную рекурсию... Хотя нет, через итерацию. Через разворачивание числа в последовательность. Умножение тоже так вводят. "... и понятие последовательности"?
Амбула. Предположим, что Бог действительно создал натуральные или целые числа. Из соображений божественности :) понятно, что все-таки натуральные, а не целые, отрицательное число отчетливо небожественно. Таки у меня к вам два вопроса.
1. Какую именно структуру создал Бог?
2. Ноль входит?
Понятно, что натуральные числа можно задавать разными способами. Понятно, что просто натуральный ряд, без операций, Бог не создавал, смысла нет. Понятно, что, скажем, вычитание и деление не входят (множество натуральных чисел относительно них не замкнуто). Очевидно, что и, скажем, факториал тоже придуман людьми. А какие операции божественны?
Я ставлю на: единицу (ноль не входит), следующее число (AKA +1), и... а вот что "и"? В основаниях математики тут используют рекурсию. Но рекурсия - понятие, мягко говоря, недетской сложности, его в школе до сих пор фактически не дают. Даже в вузах проходят построение целых чисел, рациональных, предела, действительных, производной, интеграла, и с легкостью доходят до гребеней математической статистики, рекурсию даже не упомянув. Между тем сложение детям, если объясняют, то объясняют по сути через примитивную рекурсию... Хотя нет, через итерацию. Через разворачивание числа в последовательность. Умножение тоже так вводят. "... и понятие последовательности"?
Tags:
no subject
Ну и кстати, я бы включала ноль.
И вычитание и деление - как инструменты.
Ну как руки человеку даны Богом, а то, что человек руками делает - уже создано человеком считается.
no subject
А уж вычитание и деление, как обратные операции, однозначно созданы человеком. Но я на самом деле считаю, что и умножение тоже. Вот за сложение не поручусь.
no subject
(1) "Бог создал натуральные числа, остальное -- дело рук человека" (якобы Кронекер), "Итерация свойственна человеку, рекурсия божественна" (якобы Дойч). Отметим разные модели: в первой Бог начинает, а дальше человек сам справляется, а во второй -- Бог продолжает с того места, где человек уже не справляется.
(2) Есть у меня богохульное подозрение, что ноль был ДО того, как Бог создал натуральные числа. Ну или, немножко поиграв словами, ноля НЕ БЫЛО до того, как он создал что-бы то ни было. "Не быть" -- определяющее свойство нуля.
(3) А чисто практически у меня на эту тему давно уже ориджин есть. Сейчас нагло руками подставлю, случайно он вряд ли выпадет. И вообще, хочу нормальный общесистемный (общескриптовый?) язык, где нумерация с единицы. Потому что задолбало писать не то, что думаешь! Смолтоллк и луа по разным причинам не годятся. Что-то вроде MATLAB, из которого выкинули большую часть математики и взамен добавили нормальные библиотеки в стиле питона. Может быть, Джулия в эту сторону разовьётся, посмотрим.
(4) Update: мне кажется, определяющим содержательным свойством "счёта" является то, что предметы можно считать в разном порядке, и ответ сойдётся. Нет, это не коммутативность сложения (сложение мы ещё не ввели), а что? И да, я неявно предроложил, что "натуральные числа" == "счёт".
... Натуральный ряд начинается с единицы ...
no subject
И был Бог единица, и было false нулем? :)))
no subject
(2) Но как только Бог что-то создал, нуля не стало. И его пришлось создавать заново уже человеку. Потому что пропало абсолютно нулевое состояние "ничего нет". А для утилитарных целей пришлось вводить искусственно привнесенную размерность, не свойственную имманентно нулю. Теперь может быть ноль яблок (яблоки нас интересуют), но то же самое состояние соответствует и нулю крокодилов, а крокодилы нас не интересуют... А одно яблоко не может быть одновременно и одним крокодилом. Хотя, конечно, может быть одним фруктом, и еще много чем одним, но у одного яблока есть, гм, естественная (в смысле восприятия человеческой психикой) размерность. А у нуля яблок ее нет, ее приходится вводить искусственно, воображать, а не воспринимать.
(4) Да, натуральные числа идут от счета, и да, с определяющим свойством ты прав. Что, пожалуй, приводит нас к божественности сложения - именно в этой операции как сущности выражено это свойство.
no subject
... Асимметричный дуализм языкового знака ...
no subject
Тем не более, в ней есть некоторая корреляция, на которой основана возможность взаимодействия между особями. Как правило, интерпретация одного яблока как одной антоновки или одного фрукта - это уже искусственное действие, причем чаще твой собеседник воспримет ее как троллинг, чем как специфический подход к задаче. При том, что "яблоко" - это само по себе уже довольно сильная абстракция. Но - естественная.
Ты никогда не обращал внимания на байки того типа, что дети на начальной стадии обучения арифметике довольно хорошо складывают антоновки с грушевками, а вот яблоки с апельсинами - плохо? Они правы. Они еще не оторвались от жизни, а в жизни я не могу придумать неизвращенную задачу, в которой было бы все равно, что у тебя есть - 5 яблок или 2 яблока и 3 апельсина. Задачу, в которой не все равно, антоновка у тебя или грушевка, могу, но во всех, что придумываются, в принципе годятся обе, только если уделять внимание сорту, то результат будет лучше. Ну там, в шарлотку лучше антоновку, а в варенье грушевку.
А вот к нулю любая размерность искусственна.
А так да, в строго типизированном языке, типа хаскеля, даже без явного объявления типов нельзя объединить пустой список целых с пустым списком символов. Хотя обозначать их одной константой при этом можно :) Но глядя на одну эту константу саму по себе, ты не сможешь определить, пустой список чего это. Строго говоря, глядя на [1,2,3], ты тоже не сможешь сказать, [Int] это, [Double] или [Word8]. Но по крайней мере это будет список каких-то чисел, и числовые операции (тайпкласс Num) с ними будут давать ожидаемый результат. Ты можешь быть уверен, что foldr (+) 0 [1,2,3] тебе в любом случае выдаст 6, вне зависимости от контекста. А с [], не зная контекста, ты ничего сделать не можешь, кроме проверки на пустоту.
no subject
Printf.printf "%s = %d\n" "magic" 42;;
Просто первая строчка в кавычках имеет тип не string, а, щас,
(string -> int -> unit, out_channel, unit) format
(мне пришлось немножко подумать, чтобы заставить интерпретатор это вывести). С монадами там не заморачиваются, с точки зрения ввода-вывода язык просто процедурный, но с типизацией там всё аккуратно. :-)
... На палатку падали чипы холода ...
no subject
Хаскельный Text.Printf.printf в этом смысле устроен хуже и кидается исключениями, если недодать параметров. Хотя форматная строка константная и можно было бы при компиляции проверить. И все наработки на эту тему, похоже в состоянии experimental...
no subject
... Зачем мне ДВЕ шизофрении? ...
no subject
Функция, как известно, от человека, а вот рекурсия...:)
Проблема в том, что без архимедовости возникают как системы над полями вычетов, так и "истинные" бесконечно малые числа:(
В общем, на мой вкус у бога нет другого выхода, как создавать полный эквивалент аксиоматики Пеано:)
no subject
Я не думаю, что аксиоматику. Бог создает, а значит, будет конструктивная система. Алгоритм построения, а не аксиомы свойств. Даже если имелось в виду создать систему, обладающую определенными свойствами, ключевое тут - создать, она не возникнет сама по себе из аксиоматики.
no subject
no subject
Кроме того, с одной стороны, я считаю, что у него изначально система более слабая, чем пеановская арифметика, ибо умножения нет. Не нужно. Пеановской нужно, без него нормального кодирования не построишь (хотя я не знаю, зачем Пеано ее строил, это у Геделя она используется для кодирования - но есть фрагменты только со сложением и только с умножением, и они действительно слабее полной, вплоть до чуть ли не линейной разрешимости). С другой стороны, зато в правилах развития нет ограничений, можно вводить новые операции и через них новые абстракции.
Так вот, мне, собственно, интересно, какие детали вложены в конструктор.
no subject
Два. Всякий, кого как-то учили формальной логике, по-моему, знает, что можно вот из чего числа соорудить: "сделать множество из того, что внутри" и "пустое множество". {}, {{}, {{}}}, {{}, {{}}, {{}, {{}}}} etc. - есть ли тут рекурсия?
И, да, про Кронекера мне как-то всегда казалось, что бог - натуральнве, а человек - всё остальное без уточнений, руками или чем-то ещё, ноя не заглядывала в оригинал.
no subject
Короче, рекурсия как математический аппарат требует куда более развитого абстрактного мышления, чем освоение умножения через сложение.
Два. Не всякий. Если формальной логике учили пятиклассника, то со связками и кванторами он обращаться научается довольно неплохо, а вот с идеей так строить числа освоится вряд ли. Ну и эта... Хорошо, построить ты так числа сможешь. А оперировать с ними? Ну-ка, сложи 2 и 2 в таком представлении...
Вот тут как раз Кир приводил другую цитату, про то, что итерация от человека, а рекурсия от бога. В смысле, требуется божественный уровень понимания...
Нутром чую понятие последовательности, но доказать не могу...
no subject
... Трудно быть багом ...
no subject
А в примитивно-рекурсивном случае завершение происходит именно в частном случае (а нифига не вырожденном, кстати - антитезой общему случаю будет частный) и не может происходить иначе.
no subject
"Сумма ничего есть ничего" -- это игра слов, потому что произведение ничего равно единице, а чему равна конъюнкция ничего -- мне приходится каждый раз заново решать эту задачу в обратную сторону: чему она должна быть равна, чтобы применять рекурсию? Мне кажется, что если бы реальный код останавливался на n=2, то он был бы гораздо понятнее. Правда, у этого есть другая сторона: не факт, что он правильно работал бы при n=1 и n=0. А если и работал бы, то случайно. Я не знаю, что с этим делать.
P.S. В языке k (это такой потомок APL) пустых списков пять -- гетерогенный и четыре гомогенных по четырём базовым типам. Забавно, как они печатаются, какой вид автор считает "каноническим изображением": (), !0, 0#0.0, "" и 0#`
... Я купил за три рубля компилятор с паскаля ...
no subject
Есть еще foldr1 и foldl1, которым единицу указывать не надо, но которые за это на пустом списке хряпаются. Как раз тот случай с естественной размерностью - посчитать яблоки можно только если есть хотя бы одно. На одноэлементном списке работают правильно. Вот они как раз соответствуют идее "сложить последовательность". Что тут важно. Одноэлементная последовательность считается валидной последовательностью в смысле данной задачи. Для нее понятие суммы поэтому приходится доопределять. После чего n=2 уже превращается из частного случая в общий. Хотя (снова в тему "первый-второй") одноэлементная последовательность - это таки да, вырожденная последовательность. (А пустая - совершенно вырожденная.) А так-то, естественным образом, говоря о сумме или произведении последовательности, нужно иметь хотя бы два элемента - операция-то бинарная.
Другое дело, что на самом деле задач суммирования последовательностей не бывает. На самом деле бывает только задача интегрирования, а это fold в чистом виде с явным заданием стартового значения, и да, с типом результата, на самом деле отличным от типа элемента последовательности, даже если случайно совпавшим (так, размерность факториала - количество перестановок, а его аргумента - количество элементов, яблоки и крокодилы). И именно по этой причине про foldr/foldl помнят все, а про foldr1/foldl1 напрочь забывают. Применений у них практически нет, а те, что есть - извращенные.
no subject
Может ли первоклассник разобраться в предыдущем абзаце? Для этого ведь и взрослому придётся соответствующим образом вывернуть мозг.
no subject
То есть, Бог не просто создал (натуральные) числа, как абстрактные объекты -- он создал их пригодными для счёта.
no subject
Восприятию (скорее даже, самоосознанию) непосредственно доступны 1 (я) и как максимум 2 (я и ты или я и он). Недаром в примитивных языках, брешут, нет других числительных. Остальные числа - уже построение. Но пока еще божественное.
Я вот в защиту нумерации с 0 говорил, что в доступных мне языках порядковые числительные "первый" и "второй" с количественными "один" и "два" даже не однокоренные. Теперь доходит, почему. Потому что "первый" - это head последовательности, а "второй" - head (tail) (указание на то, что за головой там еще что-то есть, то есть, что рассматриваемый объект - таки последовательность), они к числам вообще никаким боком. А вот к операции построения натуральных чисел как раз имеют довольно прямое отношение, и вот когда мы начинаем зачем-то пересчитывать элементы последовательности, у нас и появляются "третий" и "четвертый" - это те, из которых мы строим 3 и 4.
no subject
no subject
no subject
x[0] - первый
x[1] - второй
x[2] - дватый
x[3] - третий
x[4] - четвёртый
и даже перевести эту хрень с английского на русский, потому что особенность эта, наверное, общеиндоевропейская, если не шире. Что я и сделал однажды. А система местоимений в "примитивных" языках -- это отдельная песня. Её надо начинать петь с "я -- Робинзон, ты -- Пятница", а потом постепенно переходить к "мы втроем с приятелями, но без тебя".
... Veni, vidi, evasi, narravi ...
no subject
Хотя мне приходилось делать списковые структуры, где голова была управляющей, а данные начинались со второго элемента...
no subject
... Неравенство строгое, но справедливое ...
no subject
splitAt (k-1), head и tail
но я думаю, что я даже буду переводить в splitAt k, head и tail
no subject
... Фиолетовая контрреволюция ...
no subject
no subject
no subject
... Потому что холодильник так устроен ...