Обновить
337
0
Сергей Самойленко@samsergey

Руководитель, научный сотрудник, преподаватель

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

"Теория счастья" — это заголовок книжки про несчастья :)

Ограниченная область применимости есть у моделей реального мира, основанных на математических абстракциях, а не у самих абстракций. Абстракции существуют сами по себе, единственное требование к ним предъявляемое — логическая согласованность (непротиворечивость). "Полезность", применимость к реальности, это выясняется по мере развития естественных наук. Пока полезным оказывается практически всё :)

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

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

Обсуждаемые свойства вероятности относятся к математической абстракции и неважно к чему она применяется.

Да, я поменяю формулировку, она, действительно, приводит к недопониманию. В ваших примерах нет включения, а есть обусловленность человек -> свет либо свет -> человек. Аксиоматика Колмогорова не описывает понятие независимости событий, это дополнительные определения.


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


Отношение "что вокруг чего крутится" очень хорошо строится, просто оно симметрично. Нас же не смущает симметричность в отношении "вершины A и B связаны" в неориентированном графе? Так и тут между тремя телами имеем граф связности и переходим для удобства куда надо. Лучше всего, в центр масс :)

Я ответил на подобное возражение в предыдущем комментарии. Здесь нет речи об условной вероятности либо причинно-следственной связи. Пример со смертью лучше отражает понятие включения. Как только мы усматриваем обусловленность (зависимость), вспоминаем Байеса.


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

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

Это большая и жутко интересная тема. Как активно преподающий программирование и студентам (ФП) и школьникам (кружок программирования), скажу, что большее значение имеют интересные задачи (не посчитать, а построить) и быстрый отклик обучающей среды (графика, интерактив), нежели язык. Красиво работать можно в любом языке. Но учащиеся ценят свободу и "настоящесть", так что Scratch не катит. И черепашья графика становится интересной после того, как черепашку они построили сами и "учат" её, понимая возможности и ограничения. Haskell дает невероятную свободу только после принятия его ограничений (как в боевых искусствах). Детям это непросто, может отпугнуть. Я привожу примеры на нём, чтобы "показать кунгфу" — то, к чего можно достичь.

Для десяти, боюсь, чистое ФП жестковато будет. Лучше JavaScript или Python в котором показывать лямбды, отображения, свертки и т.д. Так у ученика больше свободы, а привычки вырабатываются.

Математика, по моему мнению — это, в первую очередь, дисциплина ума, во вторую — красота и только в третью — непосредственная польза. Поэтому приобщение к ней это благо, даже если математика не станет профессией. Хаскель и подобные языки вовсе не хулиганские: они жестко требуют согласованности всех частей программы. Строить архитектуру по принципу: "я художник, я так вижу", в них не получится. В JavaScript — можно, в С очень можно. Кривые хаки, гениальные хаки, если они удовлетворяют основному критерию — это работает, становятся классикой и живут десятилетиями, и это круто! ФП про другое. Огород абстракций сам по себе не нужен, важнее связи между ними и универсальные свойства, выходящие за пределы конкрентого представления. Тогда программирование становится исследованием предметной области, вместо набора рецептов. Правда, это интересно сильно не всем, но именно из исследований вырастают новые технологии. Моё убеждение: программиста (молодого человека) нужно знакомить со всеми парадигмами и предоставить выбор по складу ума и вкусу. Я предложил бы набор простых задач (из RosettaCode, например) дать решить на js, (C или Python) и на PureScript (Haskell) и пусть само сложится ощущение от этих подходов.

Думаю, тут взаимные процессы. Работа в Haskell или PureScript — это живая математика, абстрактная алгебра, с которой можно экспериментировать, а значит, лучше понимать её на уровне "спинного мозга". По крайней мере, у меня — так.

Рад, что материал вызвал любопытство, значит, вы подошли к важному моменту и, возможно, готовы нырнуть в новую область. Алгебраический подход, действительно, очень свойственен функциональному программированию вообще и программированию на Haskell в частности. Он пронизывает всю архитектуру и экосистему языка, от системы типов до базовых принципов построения программ. Попытки просто взять и начать программировать по рецептам, как это можно делать в Javascript и Python, для Haskell быстро приводят к отторжению: сложно, неудобно, непонятно, не нужно. Если зацепило или соответствует складу характера, то наработка опыта приводит к глобальной перестройке подхода к разработке — к той самой математической магии. Хорошо это или плохо, не берусь судить, но из преимуществ отмечу: это последовательный подход, опирающийся не на опыт или эмпирику, а на строгие проверяемые рассуждения; он учит подмечать общие структуры и схемы вместе с их свойствами; он соответствует тому, что называется computer science.

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

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

Очень существенное замечание. Вы меня опередили :)

Конечно, поэтому на Haskell не пишут трансляторы для железа. На нём пишут Idris, а на OCaml пишут Coq.

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

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

Полумёртвый? Вы серьёзно? Язык жив, пока выходят новые версии трансляторов и библиотек, пока есть ниша, в которой он играет главную роль и пока есть сообщество, им пользующееся. Спешу вас обрадовать, с этим у Haskell всё хорошо.


  • Загляните на сайт Haskell Weekly где каждую неделю приводятся по два десятка новых (лучших) статей с разных ресурсов, по тридцать конференций во всём мире — еженедельно!
  • Новая версия ghc вышла только в ноябре.
  • Основной репозиторий Hackage стабильно пополняется.
  • Существует вполне отчётливое видение развития языка.
  • Два года назад вышла блестящая книга Haskell programming from the first principles, поднимающая преподавание ФП на новый уровень.
  • Reddit-сообщество включает в себя более 30 тыс. участников и растёт, производная не велика, но положительна.
  • Существует активное русскоязычное сообщество.
  • Наконец, подавляющее большинство научных статей в области ФП и теории типов формулируются с помощью Haskell.

Со своей ролью языка исследований в этой области он справляется блестяще! А вот Prolog, увы, действительно, полужив-полумёртв, хотя буду рад ошибиться.

Информация

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