Все потоки
Поиск
Написать публикацию
Обновить
195.01

C++ *

Типизированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Маленькая библиотека для работы с графами

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

Хочу рассказать об одном интересном решении для работы с небольшими графами (несколько сотен или тысяч вершин с несколькими ребрами каждый) над которыми нужно выполнять довольно много разнообразных вычислений. Я постарался изложить материал максимально просто, чтобы было понятно даже начинающим разработчикам, и последовательно, начиная с самых первых простых решений в начале работы и дальше в строну усложнения. Тем не менее для поминания необходимо знание С++, в частности базовое понимание шаблонов и рекурсивных функций. Статья скорее про реализацию на С++, чем про графы.

Читать далее

Уроки по SDL 2: Урок 13 ввод текста и прокрутка экрана

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

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

код:

Читать далее

С++23 — feature freeze близко

Время на прочтение6 мин
Количество просмотров22K
Прошло четыре месяца с прошлой онлайн-встречи ISO-комитета, а значит, настало время собраться опять.



В этот раз в черновик нового стандарта C++23 добавили весьма полезные и вкусные новинки:

  • operator[](int, int, int)
  • монадические интерфейсы для std::optional
  • std::move_only_function
  • std::basic_string::resize_and_overwrite
  • больше гетерогенных перегрузок для ассоциативных контейнеров
  • std::views::zip и zip_transform, adjacent, adjacent_transform

Подробности об этих и других (даже более интересных!) вещах, а также о том, что за диаграмма стоит в шапке, ждут вас под катом.
Читать дальше →

Заводим трактор: QMake -> CMake

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

Заводим трактор: переезжаем с QMake на CMake?

По дороге заглянем на улицу "Кросс компиляторщиков", в сквер "Систем сборки" и посидим в баре "Управления зависимостями". Заодно увидим тех, кто использует Qt в embedded linux.

Поехали

TypeScript Native (AOT) Compiler

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

TypeScript Native (AOT) Compiler

Имплементация нативного Ahead-of-Time компилятора для языка TypeScript

Читать далее

Тайные знания: библиотеки для С++

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

Рун не должен резать
Тот, кто в них не смыслит.
В непонятных знаках
Всякий может сбиться.
Десять знаков тайных
Я прочел и знаю...(Сага об Эгиле)

Многие начинающие программисты, уже освоив синтаксис C++, обнаруживают, что нет простого способа, как подключить библиотеку, так и собрать программу для другой ОС, или чего хуже, под другим компьютером с той же ОС. Эта проблема отчасти порождается спорной практикой обучения, когда код учат писать и запускать лишь средствами IDE, таких как Visual Studio, Code::Blocks, и других.
Поначалу такой подход работает, но лишь до первой реальной задачи сделать что-то, что запустится не только на вашей машине. Тут-то новички и сталкиваются с отсутствием стандартной системы сборки и менеджера зависимостей. После осознания этой сложности, большинство студентов, как правило, переходят на другие языки, попутно тиражируя в индустрии миф о том, что C++ де не кроссплатформенный язык, а вот мой Python/Java/C# - да.
Между тем нас окружает множество замечательных кроссплатформенных программ написанных на C++. Если вы обучаетесь C++ и хотите понять как создавать такое ПО, то эта статья для вас.

Узнать заклинания кроссплатформености

Дизайн и эволюция constexpr в C++

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

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

У constexpr с каждым годом становится больше возможностей. Сейчас использовать в compile-time вычислениях можно почти всю стандартную библиотеку. Пример вычисления числа до 1000 с наибольшим количеством делителей: ссылка на код.

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

Эта статья подходит как тем, кто еще не знает, что такое constexpr, так и тем, кто уже долгое время его использует.

Назад в будущее

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

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

Недавно мне задали задачку, в обсуждения всё свелось к следующему: - есть объект, в нём есть методы. Каждый метод/ы требует загрузки какой-то логики в рантайме. Мы хотим точно знать - какие методы мы вызвали, после в рантайме затребовать загрузки только нужной функциональности.

Читать далее

Уроки по SDL 2: Урок 12 Музыка и мышь

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

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

Читать далее

Xeus-lua — интерактивные виджеты Lua в Jupyter Notebook

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

Торстен Бейер — программист из QuantStack, в Open Source он работал над nifty и vigra на C++, а также над inferno, kipoi и ilastik — на Python. Делимся материалом о новом ядре Lua от Торстена Бейера из блога разработчиков Jupyter, пока у нас начинается флагманский курс Data Science.

Читать далее

Безопасное использование C++

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

От переводчика. Данный текст является переводом документа Safer Usage Of C++, выложенного в общий доступ командой Chromium/Chrome из компании Google. Текст активно обсуждался на Reddit, и команда PVS-Studio решила, что аудитории Habr-а может быть интересно познакомиться с его русскоязычным вариантом. Для перевода использован текст от 20 сентября 2021, и на момент его чтения он может отличаться от текста по ссылке.

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

CWE Top 25 2021. Что такое, с чем едят и чем полезен при статическом анализе?

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

Впервые поддержка классификации CWE появилась в PVS-Studio с релизом 6.21, который состоялся 15 января 2018 года. С тех пор прошло уже очень много времени, и хотелось бы рассказать об улучшениях, связанных с поддержкой этой классификации в последних версиях анализатора.


https://import.viva64.com/docx/blog/0869_CWE_status_ru/image1.png


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

Ближайшие события

Темы оформления Visual Studio Code стали доступны в Visual Studio (+8 интересных тем)

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

Microsoft выпустила новый инструмент, который преобразует темы VS Code для работы в Visual Studio. Теперь есть возможность выбирать паттерн оформления IDE из встроенных тем и тем сообщества в Visual Studio 2022.

Компания создала возможности для синхронизации темы VS с темой Windows, новые способы управления вкладками и документами, а также возможности цветовой настройки рабочего пространства. Сейчас идет работа с авторами тем оформления из сообщества с целью протестировать новый инструмент преобразования тем.

Читать далее

Зачем нужен динамический анализ кода, на примере проекта PVS-Studio

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

В разговоре с Маршаллом Клоу на подкасте CppCast #300 ABI Stability была затронута достаточно давняя новость о поддержке компиляторами Visual Studio инструмента AddressSanitizer (ASan). Мы уже достаточно давно внедрили ASan в свою систему тестирования и хотим рассказать о паре интересных ошибок, которые он помог найти.


0868_PVS-Studio_ASan_ru/image2.png

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

Новости из жизни Haiku за август-сентябрь 2021

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

Здравствуйте, дорогие друзья. Продолжаю Вас знакомить на Хабре с новостями проекта Haiku.

Читать далее

Руководство Google по стилю в C++. Часть 5

Время на прочтение7 мин
Количество просмотров14K
Часть 1. Вступление

Часть 4. Классы
Часть 5. Функции
Часть 6. Специфика Google



Эта статья является переводом части руководства Google по стилю в C++ на русский язык.
Исходная статья (fork на github), обновляемый перевод.
Читать дальше →

Уроки по SDL 2: Урок 10 изменение цвета и прозрачность текстуры

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

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

приступим к коду:

Читать далее

Уроки по SDL 2: Урок 9 — Отрисовка части изображений

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

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

Читать далее

Vulkan. Руководство разработчика. Индексный буфер

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


Я продолжаю выкладывать переводы тьюториала к Vulkan на русский язык (оригинальный текст тьюториала можно найти здесь). В сегодняшней публикации представлен перевод заключительной статьи раздела Vertex buffers, которая называется Index buffer.

Содержание
Читать дальше →

Вклад авторов