Пользователь
Ссылки и ссылочные типы в C++
Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Это пятая статья из серии, список предыдущих статей приведен в конце в разделе 6. Серия ориентирована на программистов, имеющих определенный опыт работы на C++. Эта статья посвящена ссылкам и ссылочным типам в C++.
Термин «ссылка» широко используется и в обыденной жизни, в компьютерных и других науках и поэтому его смысл сильно зависит от контекста использования. В языках программирования под ссылкой понимают небольшой объект, главная задача которого обеспечить доступ к другому объекту, расположенному в другом месте, имеющему другой размер и т.д. Объекты ссылки удобно использовать на стеке, они легко копируются, что позволяет получить доступ к объекту, на который эта ссылка ссылается, из разных точек кода. В той или иной форме ссылки поддерживаются во всех языках программирования. В ряде языков программирования, таких как C#, Java, Pyton и многих других, ссылки, по существу, являются концептуальным ядром.
В C роль ссылок играют указатели, но работать с ними не очень удобно и в C++ появилась отдельная сущность — ссылка (reference). В C++11 ссылки получили дальнейшее развитие, появились rvalue-ссылки, универсальные (передаваемые) ссылки, которые играют ключевую роль в реализации семантики перемещения — одном из самых значительных нововведений C++11.
Итак, попробуем рассказать о ссылках в C++ максимально подробно.
Ещё 20+ игр, которые прокачивают логику, алгоритмы и радуют умный мозг [по следам комментариев на Habr]

Я выложила вчера подборку «15 игр, которые прокачивают логику, алгоритмы, ассемблер и силу земли». И столько классных ссылок в комментарии накидали, что я чуток опухла, но сделала отдельную подборку, по горячим следам. Спасибо большое всем, кто внес свой вклад.

Разумная слизь? Тварь, способная решать сложные задачи, что не под силу даже существам, обладающим развитым мозгом

Автор Лысый Камрад (@LKamrad)
При этом у нее нет не то чтобы мозга, а хотя бы намека на самую примитивную нервную систему. Разрезанная на части, она снова сольется в единый организм, а если части разнести друг от друга, они будут функционировать как отдельные вполне полноценные особи. Такое невозможно, воскликните вы, и... будете неправы – мать-природа круче любой фантастики.
Знакомьтесь, Physarum polycephalum – не животное, не растение и даже не гриб...
Примечание: данную публикацию можно использовать для начала ознакомления учащихся с принципами динамического программирования.
ИТ-сотрудник с Reddit автоматизировал свою работу и получает зарплату ни за что

Анонимный ИТ-сотрудник стал героем Реддита после того, как автоматизировал всю свою работу и теперь проводит дни, играя в видеоигры. Его пост с названием «Я автоматизировал свою работу больше года назад и никому об этом не сказал» на сабреддите r/antiwork набрал 80 000 апвоутов и больше 5 000 комментариев за один день.
15 игр, которые прокачивают логику, алгоритмы, ассемблер и силу земли

Есть «Super Mario», признанная классика видео игр. Есть «Doom», который запускают на чайниках и тестах на беременность. Есть супер-популярные по статистике twitch.tv игры («League of Legends», «GTA V», «Fortnite», «Apex Legends») которые стримят пятая часть всех стриммеров.
А есть игры, на которые очень мало обзоров, но они супер крутые — игры про алгоритмы. Игры, в которых можно кодить на ретро-компьютере; игры, которые надо взламывать; игры, где можно программировать контроллеры или поведение персонажей; игры, где можно создавать свою игру внутри игры.
Под катом подборка классных игр про алгоритмы за последние 10 лет. Если что-то упустила — буду рада дополнениям.

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

Сегодня я хочу поделиться небольшим количеством локаций в Азии, Европе и Латинской Америке, которые я рассматриваю в качестве потенциальных мест проживания для себя и своей семьи, рассказать о плюсах каждой из них. В первую очередь я буду обращать внимание на визовые и налоговые особенности т. к. все остальное очень индивидуально. Это далеко не исчерпывающий список интересных локаций!
Текст будет щедро усыпан ссылками на сторонние ресурсы, при желании читатель может продолжить самостоятельное исследование заинтересовавшей его локации.
В конце статьи делюсь своим личный рейтингом городов для релокации!
Аллокаторы внутри
После прошлого поста про базовые концепции аллокаторов хотелось бы всё-таки посмотреть на что-то настоящее, из жизни и заодно доказать, что ни Андрей Александреску, ни я не врём, и что-то из рассказанного и правда используется в продакшене. Потому посмотрим на несколько популярных аллокаторов и попытаемся что-нибудь в них понять.
Базовые концепции аллокаторов
Находясь в поисках какой-то агрегированной информации о стандартных приёмах, используемых при проектировании кастомных аллокаторов, я обнаружил, что существует достаточное количество статей о том, как аллокаторы работают в C++, каких-то базовых вариантах или наоборот очень специфических версиях, но ничего достаточно общего. Попался только замечательный доклад замечательного Андрея Александреску про неправильную архитектуру std::allocator
и собственно базовые концепции построения своего нового самого крутого в мире аллокатора. Эта статья является довольно вольным переводом второй части его выступления с моими небольшими дополнениями. Конечно же, категорически рекомендую посмотреть оригинальный доклад, но, если вы любитель текстовых версий, прошу под кат.
Муравей Лэнгтона — загадочный клеточный автомат

В мире существует около 14 000 видов муравьёв, каждый из которых имеет собственное название. Но, даже если вы зададитесь такой целью, вы не найдёте ни в одном биологическом справочнике муравья Лэнгтона. Дело в том, что этот муравей — математическая абстракция, модель для описания поведения динамической системы.
Невесёлая жизнь у муравья Лэнгтона, но, как мы увидим, он не готов мириться с такой возмутительной ситуацией и всеми силами старается сбежать.
Просто о шаблонах C++

Статья для тех, кто боится слова template в C++. Вводная информация с примерами и их подробным разбором.
Самые интересные блоги и сайты для C++ программистов
Наверняка у читателя есть свои любимые сайты и блоги, посвящённые программированию на языке С++. Сегодня ваша коллекция пополнится.
Рефлексия в C++Next на практике

Определение понятия "рефлексия" из Википедии:
In computer science, reflective programming or reflection is the ability of a process to examine, introspect, and modify its own structure and behavior.
В последние годы разрабатываются варианты ввода рефлексии в стандарт C++.
В этой статье мы напишем код на C++ с рефлексией для решения разных задач, скомпилируем и запустим его на форке компилятора с рабочей реализацией рефлексии.
Нельзя копировать код с помощью memcpy, всё намного сложнее

В своё время один из клиентов сообщил нам, что на Itanium его программа завершалась аварийно.
Постойте, не закрывайте статью!
На Itanium клиент выявил проблему, но она свойственна и всем остальным архитектурам, так что продолжайте чтение.
С++: работа с таблицами

Хочу предложить к обозрению небольшую коллекцию функций, для удобной работы со списком структур. Такие списки представляются как таблицы, к ним со временем у меня приработался своеобразный функционал.
Разработка под Flipper Zero: быстрый старт и первое приложение

Итак, это случилось. Я добыл Flipper Zero в бою (ну, на самом деле мне его выдали на хакатоне), и естественно, что интереснее всего не играть в него, используя уже сделанные кем-то функции, а писать что-то новое. Примерно так же я развлекался с Pebble. Тут, кстати, все очень похоже — МК, RTOS, небольшой монохромный экранчик, си.
Поэтому давайте попробуем что-нибудь под него написать. Для начала, что-то совсем простое, чтобы освоиться с SDK, не закапываясь в отладку и сложности RTOS, но функциональное. Есть кнопки, есть экранчик, давайте напишем счетчик-кликер. Нажимаете кнопку — число увеличивается. Подойдет считать посетителей, круги на стадионе, взломанные домофоны или сообщения в чате русскоязычного комьюнити флиппера (по утрам, в особенно активное время там их бывает до 2к, так что я бы на вашем месте подумал, прежде чем нажимать кнопку Join).
Как найти удаленную работу в США с прицелом на релокацию: описания виз, списки ~1000 компаний, полезные инструменты

Поиск работы в американских компаниях, особенно с прицелом на будущий переезд – это всегда актуальная тема. Я сам живу в США уже более пяти лет, прошел все стадии профессиональной эмиграции, запустил здесь не один бизнес и нанял немало людей.
В этой статье я собрал материалы для тех, кто задумывается о поиске сначала удаленной работы в США, а затем и о переезде. В тексте есть описания виз, списки компаний, нанимающих на remote, инструменты для подготовки к собеседованиям. Надеюсь, будет полезно!
Простой backend на C++: это возможно?

Была у меня мечта - писать backend на C++. А вот разбираться в unix socket'ах, TCP, многопоточной/асинхронной обработке запросов и во многом другом совсем не хотелось. Не верил я, что до сих пор нет каких-то минималистичных фреймворков. И сегодня я вам расскажу, как можно просто сделать HTTP API микросервис на C++ с помощью фреймворка Drogon.
Когнитивистика 101: Predictive Processing

Сегодня пост об уже не очень новом, но резонансном направлении в когнитивных науках – предиктивной обработке, также известной как предиктивное, предсказательное или прогнозное кодирование (Predictive Processing/Coding, далее PP). Свои истоки PP берет из (зрительного) восприятия, но с каждым годом основные принципы PP находят применение в новых областях, например восприятии языка, психиатрии и даже высшей когнитивной деятельности. Публикаций по PP в последние годы несметное количество, и все чаще можно встретить заявление, что PP — это первая глобальная современная парадигма об архитектуре человеческого разума. Тем не менее, суждения насчет подхода разнятся. Кто-то считает, что PP – революция в области, кто-то, что PP практически ничего не объясняет, а только создает иллюзию радикальной новизны и отвлекает людей от настоящей революционной борьбы продуктивной научной работы. На мой взгляд, PP подход нащупал что-то очень верное о работе мозга, хотя конечная история окажется намного сложнее и пестрее.
Под катом ознакомительный пост о PP, описывающий базовые принципы, предиктивное восприятие и действие, попытки применить эту парадигму к разным когнитивным процессам + немного критики.
Information
- Rating
- 7,515-th
- Registered
- Activity