Обновить
4
0

Пользователь

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

Как измерить количество информации?

Время на прочтение16 мин
Количество просмотров38K

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

По мотивам открытой лекции для Computer Science центра рассказываю о том, как можно математически подойти к определению понятия "количество информации".

Читать далее

Краткая история комплексных чисел

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров14K

Вам это может показаться странным, но были времена, когда отрицательные числа казались людям чем-то неестественным, причём даже тем людям, которые зарабатывали себе на жизнь числами — математикам. Как можно считать числом то, что не имеет физического воплощения? С отрицательными числами в итоге смирились, но уж что точно невозможно было терпеть, так это совсем непонятную величинуi, квадрат которой-1, это уже противоречит всякому здравому смыслу. Тем не менее время показало, что законы физики и математики, сформулированные с использованиемi имеют больший смысл, чем законы, сформулированные без неё. Еще в 19 веке Карл Фридрих Гаусс отметил, что "Если бы вместо того, чтобы называть +1, −1,\sqrt{−1}​ положительной, отрицательной или мнимой (или даже невозможной) единицей, их назвали бы, скажем, прямой, обратной или боковой единицей, то едва ли можно было бы говорить о какой-либо темноте".

В статье хочу рассказать о том, как небольшой математический трюк, придуманный для решения кубических уравнений 500 лет назад, вошёл в фундамент современной науки и инженерии.

Читать далее

Как победить CMake: отладка CMake-скриптов

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров6.9K

Отладка больших CMake-проектов часто превращается в боль. Уходит не один час на то, чтобы с помощью message() и бубна найти проблему. Но существуют более удобные и эффективные способы. Например, отладчик, который позволяет пошагово пройтись по CMake-скриптам и посмотреть значение переменных. Или профилировщик, показывающий последовательность вызовов и время их выполнения. Как их использовать? Читайте в статье.

Читать далее

Теория всего от Стивена Вольфрама: простое объяснение для первого знакомства + немного философского осмысления

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров7.3K

Стивен Вольфрам — британский физик, математик и программист. Уже более 20 лет он разрабатывает свою версию «Теории всего», которая раньше вызывала в основном критику и несогласие, а сегодня становится всë более популярной.

Читать далее

Большая труба Сида Мейера (как устроен мир в Civilization и моей маленькой 4X-стратегии MyCivGame)

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров13K

Приветствую тебя, читатель, меня зовут Вадим Бельский, и я уже больше полугода делаю свою небольшую 4-x стратегию MyCivGame, вдохновленную играми Civilization и Total War. Сейчас я расскажу тебе, как устроен мир в нашей любимой игре Civilization, и мы с тобой вместе подумаем, можно ли сделать его лучше (а самое главное, нужно ли это)!

Читать далее

Рецензия на книгу: «Реальная криптография»

Время на прочтение5 мин
Количество просмотров4.3K

Книга «Реальная криптография» за авторством Дэвида Вонга является весьма любопытным литературно-теоретический гибридом «упрощенного учебника по криптографии» (первая половина книги) и «реального положения дел» (вторая половина книги).

Автор позиционирует книгу как практическое руководство для широкого круга читателей, предпринимая попытки уйти от классического и набившего оскомину шифра Цезаря и прочих исторических моментов, обещая читателю актуальные примеры, рекомендации и криптографические «рецепты».

Читать далее

Гипотеза пала: 3+3 ≠ 6! Один узел перечеркнул «порядок» во вселенной математики

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров12K

В 1876 году Питер Гатри Тейт предложил измерять то, что он называл «запутанностью» узлов. Шотландский математик, во многом предвосхитивший современную теорию узлов, искал практический способ отличать один узел от другого — задача, мягко говоря, непростая. 

Тейт предложил такой критерий различия. Разложим узел на плоскости и посмотрим на точки самопересечения. В одной из таких точек «перевернём» пересечение: мысленно разрежем, поменяем местами верхнюю и нижнюю нити и снова «склеим». Повторяя операцию столько раз, сколько нужно, можно получить незавязанный круг. Минимальное число таких «переворотов» он назвал мерой незавязанности — сегодня это известно как число развязывания узла.

Читать далее

Прототипирование игр на примере игровой экономики

Время на прочтение5 мин
Количество просмотров2.9K

В данной статье мы кратко рассмотрим, зачем создавать прототипы игр. Да, всё довольно просто, но не так очевидно, как кажется на первый взгляд. Теорию подкрепим кейсом прототипирования экономики 4х стратегии.

Читать далее

Пишем и запускаем свой исполняемый файл на Linux

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров15K

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

Больше ничего интересного не будет :-)

Интересненько...

Иерархия бесконечностей: порядок и хаос в математике

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров3.9K

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

Было минус 20 градусов по Цельсию, и пока некоторые катались на лыжах, Хуан Агилера, специалист по теории множеств из Венского технического университета, предпочитал задерживаться в столовой, отрывая кусочки пуллы (традиционного финского сладкого хлеба) и обсуждая природу двух новых понятий бесконечности. Результаты, по мнению Агилеры, были грандиозными. «Мы просто пока не в состоянии их оценить», — сказал он. 

Бесконечность, как ни странно, существует во многих формах и размерах. Это известно с 1870-х годов, когда немецкий математик Георг Кантор доказал, что множество действительных чисел (всех чисел на числовой прямой) больше множества целых чисел, хотя оба множества бесконечны. (Коротко говоря: как бы вы ни пытались сопоставить действительные числа с целыми, вы всегда получите больше действительных чисел.) Эти два множества, утверждал Кантор, представляют собой совершенно разные типы бесконечности и, следовательно, обладают совершенно разными свойствами. 

Читать далее

Вычислимость и познаваемость Вселенной

Уровень сложностиСложный
Время на прочтение13 мин
Количество просмотров5.9K

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

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

Читать далее

Наша Вселенная — симуляция на основе большого клеточного автомата?

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров76K

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

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

Читать далее

Протоарифметика или Стратифицированная система без нуля: фундаментальные основания

Уровень сложностиСложный
Время на прочтение6 мин
Количество просмотров4.3K

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

Читать далее

Пишем с нуля ядро операционной системы

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров18K

Недавно я реализовал минимальный proof of concept ядра операционной системы с разделением времени для RISC-V. В этом посте я расскажу о том, как работает прототип. Целевая аудитория поста — все, кому интересно понимание низкоуровневого системного ПО, драйверов, системных вызовов и так далее. Надеюсь, он окажется особенно полезным для студентов, изучающих архитектуру ПО и компьютеров.

Это новый подход к упражнению, которое я выполнил на моём студенческом курсе по операционным системам; функционально он должен напоминать типичный проект по ОС. Однако в этом эксперименте сделан упор на современный инструментарий, а также на современную архитектуру RISC-V. RISC-V — это потрясающая технология, в которой проще разобраться быстрее, чем в других архитектурах CPU; в то же время она остаётся популярным выбором для многих новых систем, а не только архитектурой для обучения.

Отличия от моего предыдущего проекта заключаются в том, что я реализовал это упражнение на Zig вместо традиционного C. Это не просто интересный эксперимент: я считаю, что Zig повышает возможность его воссоздания на вашей машине, потому что его очень легко настроить и он не требует установки.

Читать далее

Как онтология помогает представить структуру данных и семантику приложения

Время на прочтение11 мин
Количество просмотров1.6K

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

Меня зовут Алексей Гуляев. Я архитектор решений в команде VK Tech. В этой статье я расскажу об онтологии в ИТ, вариантах ее использования и нашем кейсе применения онтологического подхода для решения внутренней задачи.

Читать далее

История статической и динамической типизации

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров6.7K

Привет, Хабр! Меня зовут Глеб, я Java-разработчик в Сбере. Сегодня я хочу рассказать про исторический контекст двух фундаментальных подходов к системе типов в программировании.

Наверное, каждый разработчик, знает, что такое статическая и динамическая типизация (или хотя бы одно из этих понятий). Действительно, все современные языки программирования можно отнести либо к статически, либо к динамически типизированным. Идеи, лежащие в основе этих подходов, достаточно легко объяснить на пальцах: при строгой типизации мы знаем все типы, используемые нашей программой, ещё во время её компиляции.

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

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

Читать далее

Санпросвет о плавающей точке, статья первая: компьютеры и числа

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров12K

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

Оказалось, что форумы кишат людьми, которые не до конца понимают, как компьютеры манипулируют числами. Например, мемасик с КПДВ я стянул с реддита (перечеркнул его я). Кто-то настолько был напуган страшными ошибками округления чисел с плавающей точкой, что даже смешную картинку смастерил. Только вот проблема в том, что 0.5 + 0.5 в точности равно 1.0.

Таким образом, я решил засучить рукава, и изобрести велосипед. То есть, написать самую неоптимизированную C++ библиотеку для эмуляции IEEE754 32-битных чисел с плавающей точкой при помощи исключительно 32-битной целочисленной арифметики. Библиотека уложится в несколько сотен строк кода, и в ней не будет никакого битхакинга. Задача написать понятный код, а не быстрый. А заодно хорошенько его документировать серией статей.

Итак, этим полукреслом мастер Гамбс начинает новую партию мебели, или статья первая: поговорим о числах и компьютерах.

Читать далее

Как быстро собрать прототип AI-продукта на n8n.io

Время на прочтение5 мин
Количество просмотров4.6K

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

Сейчас задачи внедрения GenAI стали актуальными для множества организаций. В одном из проектов по созданию приложения на базе AI-сервисов было потрачено немало времени на формализацию и постановку задачи разработчикам, а потом еще много времени на последующую разработку прототипа.

Стремясь сократить время от идеи до рабочего прототипа, я стал искать no-code решение, которое позволит мне самостоятельно, без привлечения разработки, создавать не только AI – агентов, но и подключать различные инструменты к AI-агентам, а также организовывать взаимодействие между AI-агентами.

Читать далее

Одноразовый вейп в качестве веб-сервера

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров91K

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

Предыстория

Уже пару лет я собираю коллекцию одноразовых вейпов, полученных от друзей и членов семьи. Поначалу я только извлекал аккумуляторы для «будущих» проектов (это точно не синдром Плюшкина), но в последнее время одноразовые вейпы стали гораздо более продвинутыми. Не хотел бы я быть юристом, которому придётся доказывать, что устройство с разъёмом USB C и перезаряжаемым аккумулятором можно классифицировать, как «одноразовое». К счастью, в ближайшее время я не планирую подаваться в юриспруденцию.

В прошлом году я разбирал одну из этих технологичных сосок для взрослых и заметил нечто любопытное: вместо обычной чёрной капли, которой заливают ASIC (Application Specific Integrated Circuit), я увидел небольшую интегральную схему с маркировкой «PUYA». Не буду винить читателей, если это название не вызвало у вас того же восторга, что и у меня — большинство людей никогда его не слышало. Эта компания больше всего знаменита своими флэш-чипами, но впервые я узнал о них из поста Джея Карлсона о самом дешёвом флэш-микроконтроллере. Это довольно мощные крошечные микроконтроллеры ARM Cortex-M0+.

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

Читать далее

Произвольное число аргументов любых типов на C11 и выше с помощью _Generic и variadic макросов

Время на прочтение15 мин
Количество просмотров16K

В Си стандарта 2011 года добавили небольшую возможность "перегрузки" функций с помощью макроса. (Generic selection) Мне, очень интересно стало написать какую-нибудь функцию, которая максимально использовала бы эту возможность

Задумка: написать (макро) функцию print, которая выводит через пробел все переданные в нее аргументы. Звучит невероятно для Си, где обычно указывают тип принимаемого аргумента одной буквой в имени, и явно указывают число переданных аргументов. Но с джейнериками из C11 это возможно

Читать далее

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность