Обновить
57
0
Кремнев Валерий@LonelyDeveloper97

Математика, Нейробиология, Программирование

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

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

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

Короче, из того что теория про «как прыгнет в соседний квант» — звучит не шибко интуитивно — я бы не стал ее выкидывать. Весь квантмех не обладает свойствами интуитивности понимания, однако, работает))
Аудиотехника, винил.
Кофемолки и кофемашины.
VR.
Наверно есть и другие штуки, которыми я просто не интересовался…

Короче, все, что в РФ продается в одном-двух магазинах с бешеной наценкой (x2-x3), либо уже не продается — приходится покупать на вторичке (ну, либо везти из-за рубежа, но этот момент душат последние года — вспоминаем про таможенный лимит в 200 евро). Чаще всего, кстати, объявление будет формата «мне подарили но нафиг не надо» или «купил в европе/америке».
И да, если кто-то не верит в такие наценки — посмотрите на samsung odyssey + и другой VR. 250 баксов (оф цена в магазинчике майков) магически превращаются в 50к.
Наконец-то вы это поняли!!!

Простите, а где я противное-то утверждал?)

Так у вас в любом случае будут семантические проблемы без чёткого разделения на объект и мету.

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

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

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

А вот если мы добавляем второго человека, то для него требуется «перевод карты» в его термины.

Собственно мы сейчас с вами находимся в таком же процессе — у меня карта в одних обозначениях, у вас — чуть чуть в других, мы нашли точку где наши карты показывают разное и пытаемся понять, в чем проблема. То ли мы одинаковые термины используем по разному, то ли у кого-то ошибка в карте, то ли все сразу.

У вас определение ощущения проблемы даётся следующее: «ощущение проблемы — это наличие разницы состояния моделей». Объясню своё недовольство «бесползеность» житейским языком. Есть правило x=x (ваше изначальное определение), затем вы делаете вот так: x+2=x+2; затем x+2-2=x+2-2; затем x=x; в этом суть вашей статьи. Вы могли бы просто дать своё изначальное определение и всё, непонятно зачем выводить из определения определение.


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

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

  1. Берем информацию об ощущении, которое нас интересует. (Наблюдаемо)
  2. Берем информацию об организации хранения информации в биологической нейронной сети. (Выводится из наблюдаемого, об этом была моя предыдущая статья про память).
  3. Предполагаем, что ощущения вызываются определенным паттерном активаций в нейросети мозга.
  4. Проводим мысленный эксперимент, тем самым активируя различные области собственного мозга. Добиться активации разных паттернов можно по разному структурируя информацию, подаваемую мозгу «на вход».
  5. Находим, какой информационный паттерн на входе привел к ощущению проблемы из пункта 1 на выходе. Получаем свидетельство в пользу того, что именно такая структура, и, следовательно, именно такой паттерн активаций биологической нейросети приводят к выше описанным ощущениям.
  6. Пытаемся фальсифицировать. Для этого проводим еще ряд подобных экспериментов и смотрим на результат. Плюс сверяемся с известной информацией о химических процессах в мозгу и пытаемся найти информацию противоречащую гипотезе.
  7. Если сфальсифицировать не получилось — берем гипотезу за рабочую.
О, прекрасно, учебник. Рекомендую его прочитать, хотя бы раздел про теории истины и понять, что дефляционная теория истины имеет узкое применение в философии языка и никак не годится на роль нашего с вами мета-языка для рассуждений, что было уже показано в видео, на которое я вам дал ссылку: дефляционная теория истины актуальна для детей младше 11 лет (объектного языка), когда взрослому (мета-языку) нужно указать на строгое решение так называемого парадокса Мура.


Окей. Можете считать, что мой язык в статье детский и объектный. Уровень первый, или нулевой. Не мета. Когда речь идет о существующем в реальности объекте (или о наличии какого-то наблюдения), я не вижу смысла придерживаться другого, ибо это как тащить в проект огромную абстрактную библиотеку для решения уравнения x^2 = 9. Можно, но задачу усложняет.
Моя статья — мостик между наблюдаемыми явлениями, в данном случае — ощущениями (повышенная возбудимость, сложности со сном, зацикленность на какой-либо мысли и переключение внимания — все это можно наблюдать) и нейронами, которые тоже можно наблюдать. Все термины которыми я оперировал в с статье к ним сводятся — «ощущением проблемы», как совокупность перечисленных выше наблюдаемых ощущений. И «разницей состояний моделей», которые являются разницами состояниями различных участков нейронной сети мозга.
Далее, утверждал, что если мы наблюдаем одно из них — то можно наблюдать и второе, следовательно они как минимум коррелируют.

Здесь, насколько я вижу — не нужна концепция меты.

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

А физика разве не является лишь ещё одним языком для общения людей?

Мне казалось, что в отличии от языков физику люди не создают, а исследуют. Ну, знаете, некоторые вещи существуют без нашего участия, например законы физики.

Зачем опускаться до лжи? Физическая модель камушка и описание его на английском языке отличаются.

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

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

Еще раз — все что я утверждал, это то, что высказывание об объективно существующей реальности истинно, только если утверждение о котором говорится в высказывании — истинно в реальности. Истинность высказывания и истинность в реальности необходимо различать, как необходимо различать территорию и карту. Вы с этим спорите или нет?)

Хорошо, какое решение о многожёнстве истинней: российского или исламского права?

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

Какой язык истинней: русский или английский?

Язык — не может быть истинным или ложным, только высказывания. Хотя, давайте проверим…
Эксперимент — тривиален.
Grass can be green. Трава может быть зеленой.
Оп-па в них можно записывать истинные высказывания. Только ли их? Ух, сейчас решусь, проверю:
All kinds of grass are red. Любые типы травы — красные.

Тадам! Меня не поразило молнией, видимо, язык вообще не имеет отношения к истинности.

Хотя, наверное можно построить формальный язык, любое высказывание на котором будет истинным, ограничив способы построения высказываний… Ой, кажется до этого уже додумались до меня)

Я еще и рассказываю потом, где как собеседуют, что предлагают по проектам и т.д. По моему всем удобно — кто-то придумал что-то прикольное для собеседования — можно перенять практику.
Да и вообще хоть начинаешь представлять что вокруг происходит. Например так узнал про то, что Джеты готовят Space за 1.5 месяца до анонса.
Так вы ведь сами даёте определение тому, что такое камушек


А, так вот где затык-то был.

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

Когда я даю описание (или определение) камушка, или когда мне описывают камушек — я умею проверять истинность этого описания, если у меня собственно имеется этот камушек.
Если мне говорят что все камушки — шоколадные на вкус, или что снег — это сахарная пудра — ну, я могу провести эксперимент и выяснить так это или не так.

Иными словами, для меня есть разница, между «истинностью чего-то» и «истинностью высказывания о том, что что-то истинно».
Например:
«Снег — сахарная пудра», является истинным высказыванием только в том случае, если истинно что снег — сахарная пудра.
Вы понимаете фразу выше? Если нет, вот учебник (вы же против вики), глава 10.3 Дефляционная теория истины.
но ведь раз в ней есть тавтологии — она нефальсифицируема по определению, ибо НЕВОЗМОЖНО сфальсифицировать определение чего-то, вы просто даёте определение, его НЕВОЗМОЖНО


О, кстати, я нашел достаточно простой пример, даже без геометрии и математики. Итак:

Снег — это сахарная пудра.
Сахарная пудра — это снег.

Почему? Ну снег белый и хрустит если его сжать. Сахарная пудра — тоже белая и хрустит. Значит, вполне возможно, что снег и сахарная пудра — одно и тоже.

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

Как вы считаете, правда ли это? Действительно ли невозможно фальсифицировать, что снег — это сахарная пудра?)
Наличие тавтологий не означает невозможности фальсификации экспериментально.

И насчет невозможности фальсификации математики — почему нет?)
Ну вот берете вы камушек, потом берете еще 1 и бабац — их теперь одиннадцать, а не 2. Ну, вы явно живете в мире, где математика работает не так как вы ожидали. Или другой пример — я могу построить свою абстрактную геометрию, но она не будет предсказывать правильно расстояние между предметами. Это будет фальсификацией того, что моя геометрия — применима в этой реальности.

Вы знаете понятие «предсказательная сила»? Ну так вот, в этой статье есть проверяемые предсказания.
Например про тот же серотонин существующий на вполне физическом уровне и его связь с вашими ощущениями. Вы можете его проверить: идете в аптеку, берете антидепрессанты СИОЗС какие-нибудь помощнее, выпиваете и смотрите, появилось ли у вас схожее ощущение с тем, как когда вы взволнованы перед каким-то важным событием или нет)
А еще эту статью предворяет несколько других. Там и про то, как нейроны друг с другом связываются, и про то, почему они делают именно так, и причем тут вообще серотонин и прочие нейромедиаторы и какую роль они в этом играют. С источниками, иногда транзитивно, через Англ Вики(если что, она — неплоха, я ее проверял, все ссылки на публикации там валидны)
Я честно говоря устал немного.
Но как я понял из всего этого диалога, вы считаете что в формальных моделях не должно быть тавтологий. Да или нет?

Если да:
И так. Формальные модели часто используют аппарат тождеств. Физическое F=ma — тождество и тавтология. E=mc^2 — тождество и тавтология. e^iPi -1 = 0 — тавтология.

Если вы считаете, что эти тавтологии — бесполезны, и не могут быть использованы для построения формальных моделей — ну что же, я не буду вас переубеждать)

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

Если нет:
А что собственно вы тогда пытаетесь сказать?
Ну, вообще это на столько толсто, что больше походит на фарм лычки тролля. Неудачный.
Тестами Вы можете выявить более широкий класс ошибок (ошибки сводимые к типам — сильно меньшее множество всех ошибок)

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

И да, суть не в том, чтобы не видеть «TypeException». Таких ошибок мало. Суть в том, что всякие IllegalArgument, NullPointer и прочие — могут быть покрыты типами вместо тестов.
Я не писал на Erlang, но простите, если у нас есть эрланговский диализер и мы откроем по нему доку, то мы увидим:
The dialyzer is a static analysis tool that identifies software discrepancies, such as definite type errors.

Я из этого сделал вывод что Dialyzer сам проверяет ошибки типов при компиляции. Ну это конечно именно тот кейс динамической типизации который мы обсуждали. Я говорил о том, что проверки на типы — неплохая штука. Вы сказали мне, что я ничего не понимаю и вообще не прав, а в доказательство притащили код, который конечно написан на динамическом ЯП, но при этом использует тулу статического анализа делающую проверку на тип. Это какая-то странная аргументация…

И да, мне все еще не нравится возможность сравнивать слонов и бегемотов, если мое требование — невозможность сравнить слона и бегемота. Уверен, что на эрле можно и это организовать — но в чем тогда разница, кроме небольшого отличия в способе объявления этого требования и верификации?

Если что, мой код выглядел бы как-то так (писал на котлин, поэтому шума многовато, но думаю суть ясна):
enum class ComparationResult {
    LESS, EQALS, GREATER
}

fun <X> ((X, X) -> ComparationResult).toCollectionComparator() = Comparator { f: X, s: X ->
    when (invoke(f, s)) {
        ComparationResult.GREATER -> 1
        ComparationResult.EQALS -> 0
        ComparationResult.LESS -> -1
    }
}

sealed class State {
    object NotStarted : State()
    object Paused : State()
    object Active : State()
    object Completed : State()
}

interface HasState {
    val state: State
}

fun List<HasState>.sortByState(compareFunction: (HasState, HasState) -> ComparationResult): List<HasState>
        = sortedWith(compareFunction.toCollectionComparator())

fun comparatorFromOrdering(vararg order: State): (HasState, HasState) -> ComparationResult = { f: HasState, s: HasState ->
    when {
        order.indexOf(f.state) < order.indexOf(s.state) -> ComparationResult.LESS
        order.indexOf(f.state) > order.indexOf(s.state) -> ComparationResult.GREATER
        else -> ComparationResult.EQALS
    }
}

fun sortExample() {
    val sortedList = arrayListOf(object : HasState {
        override val state: State = State.Paused
    }, object : HasState {
        override val state: State = State.NotStarted
    }, object : HasState {
        override val state: State = State.Active
    }, object : HasState {
        override val state: State = State.NotStarted
    }, object : HasState {
        override val state: State = State.Completed
    }).sortByState(comparatorFromOrdering(
            State.Completed,
            State.Active,
            State.Paused,
            State.NotStarted
    ))
}


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

Но мне показалось, что основная мысль топ коммента все же в том, что нельзя запретить ломать вообще все. Что-то все еще можно выломать, пусть и приложив большие усилия)

А так да, если у вас есть место куда можно запихать функцию, то туда можно запихать все что угодно. Хоть результаты работы обезьянки, которую пнули для сортировки вашего массива вручную.
Вопрос же не в «написать идеально, так чтобы сломать было невозможно» — это бессмысленная трата времени. Вопрос в том, сколько времени уйдет на то, чтобы уменьшить количество мест где можно сломать. И сколько стоит само сломанное место. Если вы сделаете так, что функция compare возвращает только Result — Greater/Less/Equals, а не число — шанс того, что кто-то «перепутает знак» заменится на шанс того, что кто-то «перепутает Greater и Less». Это менее вероятно.
Если вы типизируете Compare — шанс того, что кто-то запихает туда два не comparable объекта — будет меньше, чем если не типизируете. Все еще можно объявить Compare(Any, Any), но это надо сначала сделать и только потом у вас появится возможность сломать код таким образом.

И первых и вторых ошибок я видел прилично. Код который уменьшает их количество занимает 4 строки. Я пишу их в перерыве между первым и вторым глотком кофе. В разрезе моих трат на времени на проект — эта привычка не стоит ничего. А вот десяток подобных ошибок с дебагом на полдня стоит проекту дорого.

Fail Fast)
А можно пожалуйста код?
Вот серьезно — я неуч. Я даже на хаскелле только пару Helloworld писал. В основном под мобилки пишу — котлин там, или свифт…

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

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

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


Учебное пособие итмо, где тоже самое написано другими словами: https://www.google.com/url?sa=t&source=web&rct=j&url=https://books.ifmo.ru/file/pdf/1335.pdf&ved=2ahUKEwimg5iYq6_pAhXQOpoKHdpHBkQQFjABegQICRAB&usg=AOvVaw1rwNzuKv5iOEbvwxvPemyz
А ещё там есть такое забавное высказывание:
Если формула А – тавтология, то она является теоремой исчисления
высказываний.


Касательно личных вопросов — на них я не буду отвечать) Вы не оказали мне такую любезность и я не вижу в них смысла в формате нашего диалога.

О, да… вы правы. У меня действительно даже высшее не закончено до конца.


Все, на что хватает моего скромного ума, это взять учебник по матлогике или открыть вики и прочитать там определение:
Тавтологией в логике называется тождественно истинное высказывание, инвариантное относительно значений своих компонентов.
https://ru.m.wikipedia.org/wiki/%D0%A2%D0%B0%D0%B2%D1%82%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_(%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0)


А затем посмотрев на высказывание:
x+x=2*x,
Заметить, что оно истинно и не зависит от значений компонентов.


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

Окей.

Вот вам задача. Практическая, не какое-то теоретическое занудство.

Пишем менеджер задач. Там есть процессы. Активные, на паузе, завершенные и не начатые.

Хочу чтобы юзер мог их сортировать и умел сам задавать порядок сортировки произвольным образом. UI часть писать не надо — только модель.
Условие номер 2: хочу чтобы я не смог сломать ваш код, используя его неправильно. Представьте что у вас в команде зеленый разработчик, который будет завтра писать к вашей модели UI, а послезавтра — вам выкатываться в прод.
Я похожими вещами раз в месяц-два занимаюсь точно, так что, судя по всему кейс весьма распространенный. Ну, с продом через 2 дня, я конечно загнул, но и такое бывало.

Можете хоть к числам приводить, хоть к строкам, хоть вообще ENUM не пользовать. Накидаете решение? Я в ответ на него скину свое.
Как говорится, болтовня ничего не стоит — покажите мне код)

Информация

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