­
­

Информация о списке внутри списка

топ 100 блогов lex_kravetski05.08.2021 Интересно, что не только мне в комментах русскоязычные типа знатоки математики такое писали, но и в англоязычном сегменте интернета люди друг другу такое тоже пишут. Там, правда, это ещё и пытаются аргументировать, а не декларируют аки божье слово, даденное людям через откровение пророка, в роли коего выступал их вузовский преподаватель, но всё-таки пишут.

Что-де «а как же можно в множество сложить что-то там, что приобретает определённость только после построения этого множества?».

Надо отметить, что, например, Кантора такое вообще не смущало: он запросто искал в множестве элемент, который в принципе можно построить только после завершения построения этого множества. Но то, разумеется, Кантор — ему можно. А вот тем, кто анализирует его доказательство, уже нельзя. Наверно так.

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

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

Например, на Wolfram простейший вариант вот такой:

f = .;
list = {f} ~Join~ RandomInteger[10, RandomInteger[5]];
f = Length[list];


Заметьте, я тут специально кладу в список заранее неизвестное число случайных элементов — чтобы уж точно не было сомнений, что оно работает вовсе не потому, что «интерпретатор/компилятор что-то там соптимизировал».

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

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

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

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

Вы предполагаете, что можно «достроить» бесконечный список? Ну Ок. Тогда мы дойдём до третьей строки — всё в порядке. И в первом элементе списка будет лежать его длина — ну там, в виде константы Infinity или какого-нибудь алефа (кто не знает, это буковка из иврита такая, которой в комплекте с индексом обозначают гипотетические ещё более бесконечные бесконечности).

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

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

Если с вашей точки зрения на базе некоторого списка всегда можно построить какое-то число и до третьей строки мы обязательно дойдём, то пишите это число в неё после «f =», и оно будет в этом списке.

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

Если для спасения вашей гипотезы вам в 2021-м надо постулировать невозможность существования самолётов, то это ваша гипотеза явно описывает какую-то альтернативную реальность, а вовсе не «самолёты существуют неправильно, поскольку не соответствуют моей мощной теории».



doc-файл

Оставить комментарий

Предыдущие записи блогера :
Архив записей в блогах:
Кадр из фильма "Борсалино" Кто не любит старого французского кино? Безусловно, допущу, что таковые имеются, но они, скорее всего, появились на свет в последние лет 20-30. А ...
Папа с мамой счастливы, и дочка при деле. Везет же людям. СЕРГЕЙ КАПИЦА О ТЕЛЕВИДЕНИИ И УПРАВЛЕНИИ "Я предупредил министров: "Если вы будете продолжать такую политику, то получите страну дураков. Такой страной легче управлять, но у неё нет будущего". "Сегодня люди ходят в Церковь ...
Кстати, если кто заметил - в посте о репетиторах у меня сначала была приписка "у мужа осталось еще местечко", а потом она довольно быстро исчезла. А потому что буквально минут через семь после публикации поста возник еще один ученик. Ну что это, как не магия ЖЖ? :) В процессе обсуждения ...
У числа 53, как водится, много интересных свойств. Традиционно выберу три. 1. 53 - это сбалансированное простое число. Простое число называется сбалансированным, если у него равны интервалы до соседних простых чисел слева и справа. Иными словами, это число - среднее арифметическое ...
"Кандидат в президенты США от Демократической партии Хиллари Клинтон назвала президента России Владимира Путина крестным отцом мирового национализма. Она выразила мнение, что по всему миру поднимается волна крайне правого национализма. «Великим крестным отцом этого мирового крайнего ...