Как стать автором
Обновить
22
0
Тимур Абизгельдин @BuddhaSugata

Инженер

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

Пара тупых ответов про эволюцию

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


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

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

Крыло работает только тогда, когда целое. Половина крыла не даёт оторваться от земли.

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

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

Свои ответы я получил уже довольно поздно, но помню, как был рад их услышать. И наблюдая за идущим сейчас холиваром про теорию Дарвина, вижу много людей, которые задают те же самые вопросы.
Читать дальше →
Всего голосов 283: ↑280 и ↓3+341
Комментарии632

Задача трёх тел (не китайская нефантастика)

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

Однажды, выполнив в Гугле запрос "Three body problem" ("Задача трёх тел"), я был просто поражен - первая страница результатов состояла только из ссылок на роман китайского писателя-фантаста Лю Цысиня с соответствующим названием, а также на телесериал, снятый по этому роману, т.е. ссылок на собственно задачу трёх тел не было вообще! Мне это показалось удивительным и несправедливым, поскольку сама по себе задача трёх тел тоже может выглядеть увлекательной в популярном изложении. В этой публикации я постарался привести некоторые доказательства этого утверждения.

Читать далее
Всего голосов 184: ↑182 и ↓2+234
Комментарии150

Юнит-тестирование для чайников

Время на прочтение15 мин
Количество просмотров1.1M
Даже если вы никогда в жизни не думали, что занимаетесь тестированием, вы это делаете. Вы собираете свое приложение, нажимаете кнопку и проверяете, соответствует ли полученный результат вашим ожиданиям. Достаточно часто в приложении можно встретить формочки с кнопкой “Test it” или классы с названием TestController или MyServiceTestClient.



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

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

We need to go deeper
Всего голосов 70: ↑63 и ↓7+56
Комментарии65

О контра- и ковариантных тензорах

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

Записки «чайника», травмированного тензорным исчислением

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

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

Математика остаётся непонятной для многих потому, что нам её объясняют люди, которые понимают её на интуитивном уровне, или, выражаясь более изящно, «на уровне интуитивных образов» [1-7 ≡ Л.1, с. 7]. Нам же, нематематикам, для того, чтобы что-то понять, надо это «что-то» увидеть не в абстрактном («интуитивном»), а в реальном, физически представимом пространстве (по-научному это – «визуализация») или, ещё лучше, поковырять его пальцем (научный термин пока еще не придумали. Открыт приём предложений).

Читать далее
Всего голосов 44: ↑44 и ↓0+63
Комментарии58

Алгебра музыкального текста

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

Пшеничников С.Б., Сотникова Т.В.

Нотный текст можно  представить с помощью правильной координатизации матричными единицами подобно описанию вербальных текстов и других знаковых последовательностей. В дальнейшем может стать возможным математическое распознавание и создание музыкального смысла с предметным обоснованием промежуточных вычислений (в отличие от AI).

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

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

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

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

Для решения задачи требуется найти преобразование канонического нотного текста в «нитку». И как всегда для нового применения алгебры необходима правильная координатизация предметной области. В данной случае каждому используемому нотному знаку  и символу современной нотной нотации требуется поставить в соответствие свой порядковый номер (натуральное число).

Читать далее
Всего голосов 7: ↑5 и ↓2+3
Комментарии5

Малоизвестные и интересные особенности C и C++

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

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

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

Если вы, как и я, любите и интересуетесь C/C++, и эти языки являются неотъемлемой частью вашей жизни, в том числе и его углубленного изучения, то эта статья для вас. По большей части я надеюсь, что эта статья сможет развлечь и заставить поработать головой. И если получится, рассказать что-то, чего вы, возможно, еще не знали.

Читать далее
Всего голосов 127: ↑126 и ↓1+159
Комментарии61

Путеводитель по гравитационным волнам

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

Согласно Эйнштейну, гравитация не является силой в пространстве, а проявлением кривизны пространства-времени. Массивные тела, такие как звезды, планеты и черные дыры, изгибают пространство-время по-разному, притягивая друг друга – и это взаимодействие мы называем гравитацией. Известная цитата Джона Уилера кратко это подводит: “Пространство-время говорит материи, как двигаться, материя говорит пространству-времени, как изгибаться.”

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

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

Прим. пер. Обложка из видео https://www.youtube.com/watch?v=4GbWfNHtHRg, тоже советую!

Читать далее
Всего голосов 44: ↑43 и ↓1+56
Комментарии84

Эксперимент Штерна-Герлаха, сфера Блоха и квантовые вращения

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

В 1921 году Отто Штерн приехал в город Франкфурт, где познакомился в уроженцем этого города и сотрудником местного университета Вальтером Герлахом, вместе с которым они в том же году и провели прославивший их опыт. Впоследствии выяснилось, что почти всю математику описывающую, спин отдельного электрона, можно вывести из этого эксперимента. Читая описание эксперимента, такой вывод совершенно не кажется очевидным. Хотя бы, например, с какой стати в математике спина электрона появляются комплексные числа?

Чтобы прояснить связь математики спина с экспериментом Штерна‑Герлаха (Ш‑Г) мной была сделана его программная модель. При описании спина электрона очень часто используется сфера Блоха. В программной модели эксперимент Ш‑Г, можно сказать, был совмещен со сферой Блоха. При таком подходе можно визуально увидеть геометрию некоторых соотношений описывающих спин электрона. Увидеть несколько интерактивных программ можно в браузере на сайте Bloch sphere online.

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

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

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

Читать далее
Всего голосов 15: ↑15 и ↓0+15
Комментарии0

Рогатая сфера Александера — дикая конструкция, которая стала одним из символов топологии

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

Сегодня я хочу поговорить с Вами о красивейшей из наук - топологии. Начнем мы с очень тривиального рассуждения (за простотой формулировки которого кроется целая бездна), а закончим построением и изучением удивительного объекта - рогатой сферы Александера.

Читать далее
Всего голосов 39: ↑37 и ↓2+46
Комментарии26

Обобщай это, обобщай то

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


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

На этот раз мы остановимся на связи между алгебраическими кольцами и алгоритмом поиска выпуклой оболочки множества точек (convex hull).
Читать дальше →
Всего голосов 32: ↑31 и ↓1+42
Комментарии4

Может ли наша реальность быть суммой всех прочих реальностей

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

Интеграл по траекториям, предложенный Ричардом Фейнманом – это одновременно и мощный прогностический аппарат, и философское обоснование того, каков на самом деле мир. Но физики до сих пор затрудняются пользоваться этим инструментом, а также силятся понять, какой в нём смысл.

Читать далее
Всего голосов 33: ↑26 и ↓7+31
Комментарии17

Квантовая запутанность глазами хакера. Часть 1

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

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

Квантовый мир словно использует надежную защиту, чтобы оставить в тайне свои секреты. Но любая защита — это лишь генератор ошибок перед правильным кодом. Как мы знаем, решением, казалось бы «невозможных задач» лучше всего справляются люди, обладающие нестандартным мышлением и творческим подходом. Поэтому, предлагаю рассмотреть способы решения данной задачи с точки зрения специалиста по информационной безопасности, вплотную опираясь на результаты реальных экспериментов. Каждый эксперимент шаг за шагом раскроет небольшие детали, которые позволят двигаться дальше в нужном направлении. Мы залезем в дебри квантовой механики и приоткроем завесу тайны, экспериментально показав «баги и фичи» не описанные в учебниках. В результате нам удастся провести ряд практических экспериментов во второй части данного поста, позволяющих получить уникальные результаты. Постараемся разобраться с алгоритмами квантового мира и подобрать правильные ключи к тайнам этого удивительного мира.
Читать дальше →
Всего голосов 14: ↑11 и ↓3+15
Комментарии12

Расчёт электрических цепей методом структурных чисел для детей и взрослых

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

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

Когда я говорю о простоте, то это не фигура речи. Если бы вы сидели напротив меня я уверен, что за 15 минут я научил бы ЛЮБОГО из вас. Ни знаний физики, ни знания математики не требуется. Это похоже на магию. Вы делаете простые операции с натуральными числами и ... в конце получаете все необходимые параметры схемы. В этом сила, красота и, возможно, проклятие этого подхода.

Если бы вы сидели напротив меня... но вы не сидите, и не так-то просто изложить всё это письменно. Я постарался. Если у меня получилось, то через 20 - 30 минут вы сможете рассчитать ЛЮБОЙ пассивный четырёхполюсник с линейными элементами.

Итак, засекаем время.

Читать далее
Всего голосов 33: ↑32 и ↓1+41
Комментарии9

Simulating Return Type Inference in C#

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

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

Не так давно произошёл подобный случай, когда мы вместе с коллегой искали способ избежать передачи большого количества типовых параметров в тех местах, где компилятор должен был по идее их вывести. Однако, C# так устроен, что способен выводить типы в обобщённых вызовах только из передаваемых параметров метода.

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

Читать далее
Всего голосов 30: ↑30 и ↓0+30
Комментарии24

Как писать программы с математическим совершенством

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

Имя Лесли Лэмпорта, возможно, не является узнаваемым, но он стоит за несколькими великими проектами: программой для набора текста LaTeX и работой, которая сделала возможной облачную инфраструктуру в Google и Amazon. Он также уделил много внимания нескольким проблемам, дав им отличительные названия, такие как алгоритм пекарни и задача византийских генералов. Это не случайно. 81-летний учёный необычайно внимательно относится к тому, как люди используют программное обеспечение.

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

«Распределенная система — это система, где сбой компьютера, о существовании которого вы даже не подозревали, может сделать ваш собственный компьютер непригодным для использования», — сказал однажды Лэмпорт.

Одним из самых больших источников проблем являются «параллельные системы», в которых несколько вычислительных операций выполняются в течение перекрывающихся отрезков времени, что приводит к двусмысленности: часы какого компьютера являются правильными? В основополагающей статье 1978 года Лэмпорт ввел понятие «причинности» для решения этой проблемы, используя идеи специальной теории относительности. Два наблюдателя могут не согласиться с порядком событий, но если одно событие вызывает другое, это устраняет двусмысленность. А отправка или получение сообщения может установить причинно-следственную связь между несколькими процессами. Логические часы – теперь также называемые часами Лэмпорта – давали стандартный способ рассуждать о параллельных системах.

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии1

Как работает UI в Android. Не все так сложно

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

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

Это статья должна дать хоть и не исчерпывающее представление о том как работает UI в Android, но простым языком объяснит основные концепции и на каких сущностях он построен.

Читать далее
Всего голосов 8: ↑7 и ↓1+6
Комментарии2

10 лучших алгоритмов 20 века

Время на прочтение7 мин
Количество просмотров47K
Прим. Эта статья была опубликована в майском номере 2000 года журнала SIAM. На рубеже веков появилась «мода» на подведение итогов уходящего столетия. И алгоритмы этой участи не избежали. В этой статье авторы делают обзор 10 лучших алгоритмов 20 века. Возможно, вам будет интересно узнать, какие алгоритмы, по мнению авторов списка, внесли наибольший вклад в развитие науки.

Algos — греческое слово, означающее боль. Algor — латинское слово, означающее холод. Но ни то, ни другое не является корнем слова «алгоритм», которое происходит от имени Аль-Хорезми – арабского ученого девятого века – чья книга «al-jabr wa’l muqabalah» (Китаб аль-джебр ва-ль-мукабала) переросла современные учебники по алгебре для средней школы. Аль-Хорезми подчеркивал важность методических процедур для решения задач. Будь он сегодня здесь, то, несомненно, был бы впечатлен вершинами математического метода, названного в его честь.

Часть из лучших алгоритмов компьютерной эры были освещены в январско-февральском выпуске 2000 года журнала Computing in Science & Engineering — совместном издании Американского института физики и Компьютерного общества IEEE. Приглашенные редакторы Jack Dongarra (Джек Донгарра) из Университета Теннесси и Francis Sullivan (Фрэнсис Салливан) из Института оборонного анализа составили список из 10 алгоритмов, который они назвали «Top Ten Algorithms of the Century».

«Мы попытались собрать 10 алгоритмов, оказавших наибольшее влияние на развитие и практику науки и техники в 20 веке», — пишут Донгарра и Салливан. По признанию авторов, как и в любом рейтинге, их выборы неизбежно будут спорными. Когда дело доходит до выбора лучшего алгоритма, кажется, что он и вовсе не существует.

Итак, вот список 10 лучших алгоритмов в хронологическом порядке. (Все даты и имена стоит воспринимать как аппроксимацию первого порядка. Большинство алгоритмов формируются в течение времени при участии многих ученых).
Читать дальше →
Всего голосов 38: ↑37 и ↓1+46
Комментарии44

Цифровая линия задержки аудиосигнала PT2399

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

Привет, Хабр! Сегодня расскажу про очень доступную, дешёвую и популярную микросхему, ставшую и продолжающую становиться основой для множества звуковых эффектов. Соберу на её основе эффект эхо (delay) и ревербератор — имитацию помещения или пространства.
Здесь ждут подробности, с видео и примерами звучания.
Всего голосов 38: ↑37 и ↓1+52
Комментарии10

Гайд по архитектуре приложений для Android. Часть 1: обзор

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

Перевод обновлённого гайда Android по архитектуре приложений. Это — первая часть из пяти: обзор рекомендаций по архитектуре.

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии2

Как выложить свою первую библиотеку в open source

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

Привет. Меня зовут Роман Аймалетдинов, я разрабатываю под Android в inDriver. Сегодня я решил поделиться своим небольшим знанием о том, как выложить в open source свой проект. Приятного чтения!

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии2
1

Информация

В рейтинге
Не участвует
Откуда
Villach, Kärnten, Австрия
Зарегистрирован
Активность