Обновить
4
0

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

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

Демистификация unaligned access undefined behavior в C

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели8.2K

Неопределённое поведение (Undefined Behavior, UB) в C и C++ — одна из причин, по которым разработчики всё чаще ищут языки с полностью определённой семантикой. Одним из самых коварных UB является unaligned access, с точки зрения стандарта C это, например, когда происходит попытка разыменовать указатель как uint32_t, а значение указателя (адрес) не кратно четырём. Один из частых сценариев использования, приводящих к такому UB - получение данных по сети и их интерпретация как чисел.

Читать далее

Сколько информации содержится в ДНК?

Уровень сложностиСложный
Время на прочтение15 мин
Охват и читатели8.3K

Вам нравится теория информации? Вам нравится молекулярная биология? Вам нравится идея объединить их и посмотреть, что из этого получится? Если да, то вот вам вопрос: сколько информации содержится в вашей ДНК?

Когда я впервые заинтересовался этим вопросом, я думал, что ответ прост:

Человеческая ДНК содержит около 3,1 миллиарда пар оснований.

Каждая пара оснований может принимать одно из четырёх значений (A, T, C или G).

Для кодирования одного из четырёх возможных значений (00, 01, 10 или 11) требуется 2 бита.

Таким образом, ДНК человека содержит 6,2 миллиарда битов.

Просто, правда? Конечно, за исключением следующего:

У вас есть две версии каждой пары оснований, по одной от каждого из ваших родителей. Следует ли считать обе?

Все люди имеют почти идентичную ДНК. Имеет ли это значение?

ДНК можно сжать. Следует ли рассматривать сжатое представление?

Неясно, какая часть нашей ДНК действительно выполняет полезную функцию. Внутри ваших клеток царит бардак из взаимодействующих «хаков» и «костылей», предназначенных для поддержания работы даже в условиях постоянных мутаций, которые нарушают структуру самой ДНК. Следует ли учитывать только «полезные» части?

Читать далее

Возвратиться или продолжить: поговорим про continuations

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели9.4K

Одна из самых эзотерических тем в программировании и computer science это продолжения (continuations), ограниченные продолжения (delimited continuations) и continuation-passing style. Я попытаюсь раскрыть эту тему понятным для обычного программиста языком. Предполагается, что обычный программист знаком с понятиями функции/подпрограммы, фрейма вызова (stack frame), а также имеет базовое знания языка Scheme, хотя бы на уровне первых глав SICP.

Читать далее

Мое видение универсального языка программирования

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели10K

Язык программирования, даже общего назначения, - это инструмент. Каждый язык хорош в решении задач своей сферы: C++ позволяет писать эффективные программы, Haskell - писать элегантный параллельный и математический код, C# - создавать программы на гибкой масштабируемой архитектуре. Современные языки заставляют нас мириться с их недостатками: отсутствие нужной системы типов, нехватка синтаксического сахара, отсутствие парадигмы X. Все хоть раз мечтали о языке, который удобен для решения любой задачи.

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

Читать далее

На дворе LLM, а книгу о перцептроне так никто и не открыл!?

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели10K

Сложно следить за околонаучными темами, и понимать, что ветка эволюции научного направления пошла не туда. Сейчас случился некий бум псевдонаучного взлета LLM, и я приведу в качестве современной статьи на хабре лишь одну, но это по прежнему массовое явление. Например, в статье компании Friflex за 2024 год История LLM-агентов: 10 ярких моментов по прежнему утверждается "На смену однослойному перцептрону Розэнблатта пришел многослойный. В статье Learning representations by back-propagating errors («Обучение представлений с помощью обратного распространения ошибки») Румельхарт и Хинтон показали, что многослойный перцептрон справляется с задачами, которые были не под силу его однослойному предшественнику. Например, с XOR. ". Совершенно излишне говорить, что это полное вранье, а авторы статьи даже не потрудились открыть эту статью, чтобы её прочитать. Это стало массовым явлением, и я его наблюдаю как минимум 20 лет, я когда то написал тут на хабре цикл статей объясняющих детали, лучше всего посмотреть эту Какова роль первого «случайного» слоя в перцептроне Розенблатта. Поэтому к этому возвращаться не будем. Я не знаю почему, может это массовая культура так влияет на людей, а порог вхождения в тематику ИИ слишком сложный? Не знаю, но не важно. Чтобы продемонстрировать скорость обучения перцептрона я написал несколько реализаций перцептрона Розенблатта и выложил их на гитхабе. А затем мы коснемся LLM.

Читать далее

Гипотеза математической Вселенной: от абстрактных чисел к реальности

Время на прочтение8 мин
Охват и читатели4.5K

Евангелие от Иоанна начинается всем известной фразой "В начале было Слово". Однако в оригинале на греческом там написано "В начале был Логос". Слово "Логос" имеет множество значений и одно из них - число. Так что перевод этого предложения с греческого оригинала мог бы быть и совершенно иным, нежели тот, к которому мы привыкли.

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

Что, если математика - не просто язык, а сама субстанция реальности? Что, если наша Вселенная - не физический объект, описываемый уравнениями, а само уравнение, реализованное в себе?

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

Читать далее

Зеркальные равенства: красивая математическая симметрия

Время на прочтение8 мин
Охват и читатели6.9K

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

20646 × 35211 = 11253 × 64602

203313 × 657624 = 426756 × 313302

Примечательны эти примеры тем, что цифры в них расположены зеркально-симметрично относительно знака равенства. Зеркальные равенства напоминают палиндромы, но с ключевым отличием. Палиндром — это свойство одного числа, а зеркальное равенство — это свойство операции над числами.

Как математический объект исследования зеркальные математические равенства не имеют определённого автора или даты первого упоминания. Это скорее концепция, которая возникает в процессе изучения чисел и их свойств, как естественное развитие темы палиндромов и симметрии в математике.

Как много существует подобных комбинаций?

Читать далее

Искусство создания эффективных математических моделей

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели6.9K

За любой математической моделью стоит субъект-создатель, который имеет свое видение моделируемых процессов, свою креативность и виртуозность владения мат. аппаратом. Эти и другие источники субьективности формируют определенный почерк автора-разработчика. Но все ли модели хороши?

Выпущено множество книг-рекомендаций про то, как писать "хороший" программный код: "Чистый код", "Совершенный код", "Программист-прагматик", "Чистая архитектура" и др. Такого рода литература задает некоторый стандарт качества и очертания "идеала".

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

Читать далее

Эти пугающие производные, градиенты, матрицы Якоби и Гессе

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

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

Читать далее

Создание своего ядра на C

Уровень сложностиСложный
Время на прочтение25 мин
Охват и читатели25K

В этой статье мы пройдём путь создания простого, но функционального ядра операционной системы на языке C.

Читать далее

Как работает машина Enigma M3 (для флота)

Уровень сложностиСредний
Время на прочтение21 мин
Охват и читатели9.5K

Привет всем!

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

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

Читать далее

Удивительные приключения сознания в математической вселенной Тегмарка

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели5.3K

Несколько лет минуло с того момента, как я опубликовал статью «Сознание и тезис Макса Фрая», довольно тепло принятую сообществом Хабра.

В той статье, чтобы исследовать сознание методами математики, я использовал одну "техническую" аксиому. Была она проста, невзрачна и банальна. И далеко не сразу удалось разглядеть онтологический динамит, коим она оказалось под завязку начинена.

Читать далее

Ранг-селект словари

Уровень сложностиСложный
Время на прочтение9 мин
Охват и читатели8.2K

Это первая статья из планируемой серии про succinct data structures - класс наиболее компактных структур данных. Канонический пример такой структуры - это представление дерева в виде правильной скобочной последовательности, дерево изnвершин таким образом представляется с помощью2nбит в то время как типичная динамическая реализация требовала бы как два указателя по 64-бит на каждый узел (разумеется можно немного сократить простыми оптимизациями, но даже близко 2 бита не получить). Фундамент подобных структур - это rank-select словарь, представляющий собой битовый вектор и дополнительную структуру для выполнению двух операций ранг и селект. В указанном примере с деревом с помощью ранга и селекта можно сделать базовую навигацию: найти номера потомков/родителей, узнать размер поддерева. В статье расскажу как делать эти операции быстро используя при этом всего 3,6% дополнительной памяти.

Читать далее

Страх и ненависть в …теоретической физике. Немецкий математик: «Как поиски красоты заводят физиков в тупик»

Уровень сложностиПростой
Время на прочтение39 мин
Охват и читатели9.3K

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

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

Читать далее

Математика, биты, магия и немного ненормального программирования на C

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели12K

Доброго времени суток, господа и дамы! Иногда у некоторых людей возникает желание заняться откровенным непотребством в программировании — то, что не несет практической пользы напрямую, но помогает развлечься. В этой статье я хочу рассказать вам о лайфхаках, трюках (магических и не очень), алгоритмах на языке C!

Идея написать эту статью зародилась из моего поста. В нем я рассказал о том, что через последовательность Фибоначчи можно конвертировать мили в километры с небольшой погрешностью. Увидев, что многим понравилась, я задумался: почему бы не изучить еще какие-нибудь трюки, заодно практикуясь в программировании на C?

Всех, кто заинтересовался — прошу под кат.

Читать далее

Девиртуализация в C++, компиляторах и вашей программе

Уровень сложностиСложный
Время на прочтение16 мин
Охват и читатели12K

Привет, Хабр! Меня зовут Илья Андреев, я старший программист в компании Syntacore. Вы, наверно, слышали, что виртуальные функции в C++ пользуются дурной славой — а может, и сами придерживаетесь о них не самого лучшего мнения. В этой статье, подготовленной совместно с Константином Владимировым, я в некоторой степени выступлю адвокатом виртуализации.

Мы начнем с вводной части о статическом и динамическом полиморфизме, рассмотрим факторы, влияющие на девиртуализацию, и ее примеры разной сложности — в том числе те, что мы используем в реальной разработке. А напоследок познакомим вас со спекулятивной девиртуализацией и дадим рекомендации, как подходить к виртуальным функциям в разработке на C++.

Читать далее

Теряем невинность с Таненбаумом: Amsterdam Compiler Kit

Уровень сложностиСложный
Время на прочтение9 мин
Охват и читатели6.9K

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

Именно о нем пойдет сегодняшний рассказ.

Читать далее

Книга перемен «И-цзин» как фреймворк стратегического управления и базовая онтология

Время на прочтение22 мин
Охват и читатели5.2K

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

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

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

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

Логика триединства «И-цзин» не даёт инструкций, но помогает прочувствовать состояние времени сложной системы: где внешняя среда уже изменилась, а мы тянем прошлое, где человек выгорает, а система требует прыжка.

Это не про KPI и цели, а про синхронность, коэвоюцию, уместность, согласованность, естественную иерархию. И когда перестаёшь бороться с течением своими "глупыми" целями, а начинаешь читать потоки, то  решения приходят не из шаблонов, а из ясности.

Читать далее

Категории типов. Часть 2. Функторы

Уровень сложностиСредний
Время на прочтение27 мин
Охват и читатели6.7K

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

Фокус заключается в том, что...

Общение с социопатом: руководство по выживанию

Время на прочтение13 мин
Охват и читатели36K

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

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

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

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

Читать далее

Информация

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