Search
Write a publication
Pull to refresh
4
0

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

Send message

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

Reading time8 min
Views8.1K
image Привет, Хабр! Обращаем ваше внимание на одну новинку (сдана в типографию), доступную уже сейчас для покупки в электронном виде.

Надеемся, что отсутствие формул в книге не отпугнет потенциальных читателей. Шон Кэрролл — физик-теоретик и один из самых известных в мире популяризаторов науки — заставляет нас по-новому взглянуть на физику. Столкновение с главной загадкой квантовой механики полностью поменяет наши представления о пространстве и времени. Большинство физиков не сознают неприятный факт: их любимая наука находится в кризисе с 1927 года. В квантовой механике с самого начала существовали бросающиеся в глаза пробелы, которые просто игнорировались. Популяризаторы постоянно твердят, что квантовая механика — это что-то странное, недоступное для понимания… Чтобы все встало на свои места, достаточно признать, что во Вселенной мы существуем не в одном экземпляре. Шонов Кэрроллов бесконечно много. Как и каждого из нас. Тысячи раз в секунду во Вселенной возникают все новые и новые наши копии. Каждый раз, когда происходит квантовое событие, мир дублируется, создавая копию, в которой квантовое событие так и не произошло. В квантовой механике нет ничего мистического или необъяснимого. Это просто физика.
Читать дальше →

Работа с кучей в Rust

Reading time4 min
Views8.5K

Продолжаем изучать Rust нетрадиционным способом. В этом раз будем разбираться в нюансах работы с кучей, для их понимания понадобятся: сырые указатели, выделение памяти в куче, размер экземпляра типа, запись значений в кучу и чтение из нее, const и static, unit-like структуры, переопределение глобального аллокатора.


Это, определенно, overkill для одной статьи, а вот половину списка вполне можно освоить.


Читать дальше →

Понять кубик Рубика

Reading time7 min
Views43K

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

То же самое со сборкой этой головоломки: миллионы людей умеют делать это по формулам, но сколько из них понимают, что они делают? А ведь начать чувствовать кубик Рубика не так сложно!

Но сперва давайте договоримся, зачем нам такая головоломка нужна и чем полезна. Вы же уже слышали шутки про то, что кубик Эрно Рубика – штука многогранная? А видите параллели между кубиком Рубика, шахматами и, например, пианино или гитарой?

Читать далее

Разработка стековой виртуальной машины и компилятора под неё (итог)

Reading time16 min
Views11K

Для завершения реализации компилятора потребовалось около месяца времени (вечерами), чтобы на практике познакомиться с такими темами как BNF (Backus Naur Form), Abstract Syntax Tree (AST), Symbol Table, способами генерации кода, разработки самого компилятора (front-end, back-end), а также модификации виртуальной машины CVM. Ранее с этими темами был не знаком, но благодаря комментаторам погрузился. Хоть затрагиваемых тем много, постараюсь рассказать очень лаконично. Но обо всём по порядку.

Читать далее

Инженерное искусство как образ жизни

Reading time23 min
Views9.4K
На прошлой неделе в наших соцсетях выступил Артём Кашканов, автор проекта BrainfuckPC.

Артем окончил НГТУ им Р.Е.Алексеева. В университетские годы занимался исследованиями в области энергосбережения. Призер федеральных грантов МСП по программе СТАРТ. Впоследствии дважды бросил аспирантуру.
Последние пять лет работает на позиции Senior software developer в компании Intel. Занимается разработкой инструментов анализа производительности операционных систем и программного обеспечения. В частности — работает над улучшением System Overview Hardware Tracing анализа в Intel VTune Profiler.

В интернете Артем известен как автор youtube-канала, где он выкладывает ролики про создание безумных электронных устройств из того, из чего в 21 веке делать этого уже и не стоило бы. Самый его известный проект — релейный компьютер BrainfuckPC. Сейчас Артем занимается созданием компьютера на электронных лампах, а также компьютера на элементах струйной логики.

Делимся с вами расшифровкой и записью эфира .

Популярная лингвистика. Часть 2. Шедевры языкостроения

Reading time6 min
Views8.5K

Habr Arrival


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


Откуда есть пошел дотракийский язык


Начнем с языков мира "Песни льда и пламени" Джорджа Мартина. Сам Мартин свои языки не прорабатывал и они так и остались бы воображаемыми, но на помощь пришла телевизионная сеть HBO с идеей высокобюджетного сериала "Игра престолов". И так как в любой области есть свои специалисты, то решено было обратиться за помощью к Обществу создания языков. Конкурс выиграл Дэвид Питерсон, американский лингвист, который уже имел богатый опыт в создании искуственных языков.

Хо-хо, парниша!

Объектно-ориентированное программирование на Си без плюсов. Часть 2. Таймер

Reading time12 min
Views9.9K

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

    Для Linux в Си в настоящее время есть следующие функции:

unsigned int sleep(unsigned int __seconds); ,

объявленная в файле <unistd.h> и

int nanosleep(const struct timespec *req, struct timespec *rem); ,

объявленная в файле <time.h>

    Обе выполняют одну задачу, приостанавливают работу потока в котором была вызвана функция на заданное время, поэтому с данными функциями очевидным является простое решение (как говорится «решение в лоб») выделить для таймера отдельный поток.

    Есть ещё функция clock_nanosleep(), можно включить режимы SHED_FIFO или SCHED_RR для более точной работы, всё это конечно хорошо, но я решил ограничиться только выше указанными.

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

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

Читать далее

[Личный опыт] Эстония: почему сюда нанимают много разработчиков из-за рубежа и что делает страну идеальной для россиян

Reading time10 min
Views46K

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




Первое фото в Таллине после приезда, 18 ноября
Читать дальше →

Как хакнуть когнитивные искажения через левое ухо

Reading time9 min
Views18K
image


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

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

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

Начало работы с MongoDB и Redis на Rust

Reading time13 min
Views13K

В этой статье будет показано как создать Rust бэкэнд, который использует MongoDB, документо-ориентированную БД, для хранения данных и Redis для кэширования, ограничения количества HTTP запросов и нотификаций пользователя. Для большей наглядности созданное приложение также будет предоставлять REST API. В итоге будет получена следующая архитектура:


architecture


MongoDB является хранилищем, в то время как Redis используется для следующего:


Читать дальше →

Объектно ориентированное программирование на Си без плюсов. Часть 1. Введение

Reading time5 min
Views32K

Приветствую! 

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

Статья рассчитана на тех кто уже знаком с Си, а все примеры ориентированы на ОС Linux. Мои познания Windows закончились на «WinXP», после которой в Windows стало уже очень много политики ("безопасности") и коммерческой составляющей, но я сейчас не об этом и надеюсь, что здесь вы найдёте для себя полезные моменты, а если я в чём-то не прав или заблуждаюсь, то поправите.

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

Так сложилось, что изучать традиции ООП я начал с Delphi и Java, являющихся, как считается, на 100% объектно ориентированными языками программирования, а потому аналогия решений у меня ассоциируется именно с ними. И далее в тексте я иногда буду на них ссылаться, что надеюсь не испортит суть полного понимания.

Читать далее

Неопределенное поведение, пронесенное сквозь года

Reading time8 min
Views6K

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

Можно выделить несколько стадий поиска бага:

• удивление (не знаю как вы, но я каждый раз как в первый раз удивляюсь когда что-то вдруг в моем коде работает не так, как ожидается);

• обвинение всех кругом в баге (коллег по проекту, github, сторонние либы, компилятор), но только не себя;

• смирение с тем, что возможно баг появился из-за меня и поиск бага: анализ выдаваемого результата, локализация ошибки, эксперименты с входными данными; в общем, все, что делает нормальный детектив, только в сфере программирования;

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

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

Читать далее

Теория графов. Термины и определения в картинках

Reading time5 min
Views240K

В этой статье мы познакомимся с основными терминами и определениями Теории графов. Каждый термин схематично показан на картинках.

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

Теория графов

С++ на практике

Reading time11 min
Views47K


Все мы знаем, что С++ — мощный язык, у которого много сторонников. Но чем могут быть недовольны даже сторонники? Где сталкиваешься с неудобствами и чем они вызваны? Почему в примитивном приложении могут вылезти неожиданные сложности и чего не хватает в стандартной библиотеке? А главное, что можно сделать для улучшения ситуации?


Антон Полухин (antoshkka), состоящий в комитете по стандартизации C++ и работающий в «Яндекс.Такси», рассказал обо всём этом в докладе «C++ на практике». Сам доклад появился ещё в 2019-м, и с выходом C++20 что-то изменилось, но главные тезисы и вывод остались актуальны. Поэтому теперь, готовя новую конференцию C++ Russia 2021, мы решили сделать для Хабра пост на основе этого доклада. Под катом — и текст, и видеозапись. Далее повествование идёт от лица Антона.

Читать дальше →

Собираем 8-битный компьютер

Reading time16 min
Views49K

Привет! Я всегда хотел собрать свой компьютер — не только в теории понять как «бегают» биты, складываются числа, работают прерывания, как программный код превращается в нули и единицы. У меня получилось и я хотел бы поделиться своим опытом. Это заняло у меня 140 часов и $400 на все компоненты и их доставку. Если вам интересно узнать о проекте, спускайтесь под кат.

Читать далее

Свод правил по работе с целыми числами в C/C++

Reading time11 min
Views60K

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

Генератор фракталов и математика внутри нас

Reading time8 min
Views9.1K

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

Приглашаю отведать салат из разнородных, но неожиданно связанных друг с другом тем:

- Почему нам нравится симметрия и фракталы? И как это влияет на выживаемость?

- Как математика связана с эмбриональным развитием?

- Сколько старинных программ ещё надо спасти от неумолимого времени?

- Конкурс красоты среди фракталов.

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

Читать далее

«Образование для образованных». Проработка книги

Reading time4 min
Views7.7K

На неделе прочитал книгу "Образование для образованных 2020", написанную Левенчуком А.И. Впечатление о ней у меня сложилось двоякое. Статья будет полезна людям, желающим её прочитать. Дальше я расскажу, чего ожидать от прочтения, а чего не стоит.

Читать далее

Из студента-юриста в программисты на C/C++: личный опыт

Reading time14 min
Views25K

Привет. В данной статье я поделюсь своим опытом становления программистом, от зарождения идеи стать инженером программного обеспечения до первых офферов, а также расскажу об опыте прохождения собеседований на позицию С/С++ разработчика в Санкт-Петербурге и выводах, сделанных мною в процессе. Данная статья будет полезна преимущественно студентам, ищущим свою первую работу программистом, либо свитчерам, то есть людям, имеющим желание "войти в IT", а именно в разработку ПО.

Читать далее

Information

Rating
7,428-th
Registered
Activity