Search
Write a publication
Pull to refresh
4
0

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

Send message

Ссылки и ссылочные типы в C++

Level of difficultyMedium
Reading time47 min
Views142K

Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Это пятая статья из серии, список предыдущих статей приведен в конце в разделе 6. Серия ориентирована на программистов, имеющих определенный опыт работы на C++. Эта статья посвящена ссылкам и ссылочным типам в C++.


Термин «ссылка» широко используется и в обыденной жизни, в компьютерных и других науках и поэтому его смысл сильно зависит от контекста использования. В языках программирования под ссылкой понимают небольшой объект, главная задача которого обеспечить доступ к другому объекту, расположенному в другом месте, имеющему другой размер и т.д. Объекты ссылки удобно использовать на стеке, они легко копируются, что позволяет получить доступ к объекту, на который эта ссылка ссылается, из разных точек кода. В той или иной форме ссылки поддерживаются во всех языках программирования. В ряде языков программирования, таких как C#, Java, Pyton и многих других, ссылки, по существу, являются концептуальным ядром.



В C роль ссылок играют указатели, но работать с ними не очень удобно и в C++ появилась отдельная сущность — ссылка (reference). В C++11 ссылки получили дальнейшее развитие, появились rvalue-ссылки, универсальные (передаваемые) ссылки, которые играют ключевую роль в реализации семантики перемещения — одном из самых значительных нововведений C++11.



Итак, попробуем рассказать о ссылках в C++ максимально подробно.


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

Ещё 20+ игр, которые прокачивают логику, алгоритмы и радуют умный мозг [по следам комментариев на Habr]

Reading time9 min
Views139K
image

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

Еще я веду канал в Telegram: GameDEVils, делюсь там клевыми материалами (про геймдизайн, разработку и историю игр).
Читать дальше →

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

Reading time7 min
Views69K

Автор Лысый Камрад (@LKamrad)

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

Знакомьтесь, Physarum polycephalum  – не животное, не растение и даже не гриб...

Примечание: данную публикацию можно использовать для начала ознакомления учащихся с принципами динамического программирования.

Читать далее

ИТ-сотрудник с Reddit автоматизировал свою работу и получает зарплату ни за что

Reading time3 min
Views107K


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

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

15 игр, которые прокачивают логику, алгоритмы, ассемблер и силу земли

Reading time8 min
Views117K


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

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

Под катом подборка классных игр про алгоритмы за последние 10 лет. Если что-то упустила — буду рада дополнениям.

Еще я создала канал в Telegram: GameDEVils, буду делиться там клевыми материалами (про геймдизайн, разработку и историю игр).
Читать дальше →

О шаблонах в С++, чуть сложнее

Reading time40 min
Views39K

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

Потрогать здесь

Географический Арбитраж: лучшие страны для удалённой работы + мой топ локаций

Reading time9 min
Views32K

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

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

В конце статьи делюсь своим личный рейтингом городов для релокации!

Завести трактор!

Аллокаторы внутри

Reading time10 min
Views14K

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

Выделить знания

Базовые концепции аллокаторов

Reading time10 min
Views19K

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

Выделить знания...

Муравей Лэнгтона — загадочный клеточный автомат

Reading time5 min
Views19K

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

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

Читать далее

Самые интересные блоги и сайты для C++ программистов

Reading time4 min
Views17K

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

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

Рефлексия в C++Next на практике

Reading time24 min
Views17K

Определение понятия "рефлексия" из Википедии:

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++ с рефлексией для решения разных задач, скомпилируем и запустим его на форке компилятора с рабочей реализацией рефлексии.

Хочу программировать на C++Next

Нельзя копировать код с помощью memcpy, всё намного сложнее

Reading time4 min
Views18K

В своё время один из клиентов сообщил нам, что на Itanium его программа завершалась аварийно.

Постойте, не закрывайте статью!

На Itanium клиент выявил проблему, но она свойственна и всем остальным архитектурам, так что продолжайте чтение.
Читать дальше →

С++: работа с таблицами

Reading time12 min
Views18K

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

Читать далее

Разработка под Flipper Zero: быстрый старт и первое приложение

Reading time19 min
Views34K

Итак, это случилось. Я добыл Flipper Zero в бою (ну, на самом деле мне его выдали на хакатоне), и естественно, что интереснее всего не играть в него, используя уже сделанные кем-то функции, а писать что-то новое. Примерно так же я развлекался с Pebble. Тут, кстати, все очень похоже — МК, RTOS, небольшой монохромный экранчик, си.

Поэтому давайте попробуем что-нибудь под него написать. Для начала, что-то совсем простое, чтобы освоиться с SDK, не закапываясь в отладку и сложности RTOS, но функциональное. Есть кнопки, есть экранчик, давайте напишем счетчик-кликер. Нажимаете кнопку — число увеличивается. Подойдет считать посетителей, круги на стадионе, взломанные домофоны или сообщения в чате русскоязычного комьюнити флиппера (по утрам, в особенно активное время там их бывает до 2к, так что я бы на вашем месте подумал, прежде чем нажимать кнопку Join).

Читать далее

Как найти удаленную работу в США с прицелом на релокацию: описания виз, списки ~1000 компаний, полезные инструменты

Reading time5 min
Views35K

Поиск работы в американских компаниях, особенно с прицелом на будущий переезд – это всегда актуальная тема. Я сам живу в США уже более пяти лет, прошел все стадии профессиональной эмиграции, запустил здесь не один бизнес и нанял немало людей. 

В этой статье я собрал материалы для тех, кто задумывается о поиске сначала удаленной работы в США, а затем и о переезде. В тексте есть описания виз, списки компаний, нанимающих на remote, инструменты для подготовки к собеседованиям. Надеюсь, будет полезно!

Читать далее

Простой backend на C++: это возможно?

Reading time5 min
Views56K

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

Поехали!

Когнитивистика 101: Predictive Processing

Reading time14 min
Views7.5K

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

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

Читать далее

Information

Rating
7,515-th
Registered
Activity