Обновить
256K+

C++ *

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

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

Топ 10 ошибок в проектах C++ за 2019 год

Время на прочтение8 мин
Охват и читатели17K

Picture 7

Ещё один год стремится к окончанию, поэтому настало время заварить себе кофе и перечитать обзоры ошибок за прошедший год. Конечно, на это уйдёт много времени, поэтому эта статья и была написана. Предлагаю взглянуть на наиболее интересные темные места проектов, которые встретились нам в 2019 году в проектах, написанных на C и C++.
Читать дальше →

Основа любого программирования на… пазлах

Время на прочтение8 мин
Охват и читатели12K
Приветствую, Хабровчане!

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

Как подружить PyTorch и C++. Используем TorchScript

Время на прочтение12 мин
Охват и читатели26K

Около года назад разработчики PyTorch представили сообществу TorchScript — инструмент, который позволяет с помощью пары строк кода и нескольких щелчков мыши сделать из пайплайна на питоне отчуждаемое решение, которое можно встроить в систему на C++. Ниже я делюсь опытом его использования и постараюсь описать встречающиеся на этом пути подводные камни. Особенное внимание уделю реализации проекта на Windows, поскольку, хотя исследования в ML обычно делаются на Ubuntu, конечное решение часто (внезапно!) требуется под "окошками".


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


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

C++ Russia: прошлое, настоящее и будущее

Время на прочтение8 мин
Охват и читатели3.9K


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

В 2019-м конференция C++ Russia сильно изменилась организационно — и отзывы говорят, что к лучшему. Конец года — подходящее время, чтобы и подытожить результаты, и заглянуть в будущее: хотя до C++ Russia 2020 Moscow ещё четыре месяца, кое-что о ней уже известно.


Поэтому этот пост состоит из трёх частей:


  • «Прошлое»: как конференция развивалась и что изменилось с этого года
  • «Настоящее»: как прошла недавняя C++ Russia 2019 Piter (и какие из её лучших докладов уже доступны онлайн)
  • «Будущее»: что готовит 2020-й
Читать дальше →

Рефакторинг игры на SFML

Время на прочтение6 мин
Охват и читатели6.8K
В прошлой статье я рассказал как сделать простую игру с использованием библиотеки SFML. В конце статьи я пообещал, что продолжу и покажу как привести код программы в более правильный вид. Итак, время для рефакторинга пришло.

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

C++ vtables. Часть 2 (Virtual Inheritance + Compiler-Generated Code)

Время на прочтение10 мин
Охват и читатели20K

Перевод статьи подготовлен специально для студентов курса «Разработчик С++». Интересно развиваться в данном направлении? Смотрите запись мастер-класса «Практика использования Google Test Framework»!



Часть 3 — Виртуальное наследование


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

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

Rust превосходит по производительности C++ согласно результатам Benchmarks Game

Время на прочтение3 мин
Охват и читатели26K
В начале этого месяца случилась маленькая победа. Согласно последним результатам популярного бенчмарка, сравнивающего производительность языков программирования, Rust занимает второе место, разместившись между C и С++:

image

Для сравнения производительности используется геометрическое среднее времени выполнения 10 различных программ. Согласно последним результатам Rust превзошел С++ в 6 задачах из 10.

Под катом некоторое детали и мнение о дальнейших перспективах.
Читать дальше →

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

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

Часть 8. Именование
Часть 9. Комментарии
Часть 10. Форматирование



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

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

Время на прочтение4 мин
Охват и читатели88K
Часть 1. Вступление
Часть 2. Заголовочные файлы
Часть 3. Область видимости
Часть 4. Классы
Часть 5. Функции
Часть 6. Специфика Google
Часть 7. Ещё возможности C++
Часть 8. Именование
Часть 9. Комментарии
Часть 10. Форматирование
Часть 11. Исключения из правил

Изменения 2019-2024


Все мы при написании кода пользуемся правилами оформления кода. Иногда изобретаются свои правила, в других случаях используются готовые стайлгайды. Хотя все C++ программисты читают на английском легче, чем на родном, приятнее иметь руководство на последнем.
Эта статья является переводом части руководства Google по стилю в C++ на русский язык.
Исходная статья (fork на github), обновляемый перевод.
Это вступительная часть руководства, в которой рассматриваются общие вопросы «Зачем?»
Также после перевода будет несколько ответов на возможные вопросы.
Читать дальше →

Затирание файлов в Java

Время на прочтение5 мин
Охват и читатели14K

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

Уроки по SDL 2: Урок 7 — Viewport

Время на прочтение3 мин
Охват и читатели9K
Всем привет! Я вернулся с новым уроком для вас! А если вам вдруг надоест ждать урока от меня, вы всегда сможете найти эти уроки на английском здесь.

Что ж, давайте начнем 7-й по счету уроку с названием

Viewport

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

Создание сайта с помощью C++

Время на прочтение7 мин
Охват и читатели71K

Возможно ли это?


Да.

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

Будет не только интересно, но также полезно и очень практично.
Читать дальше →
13 декабря 2058. В этот день вся земная история разделилась на два этапа: до и после Контакта. На орбите нашей планеты появился объект внеземного происхождения. Незваного гостя засекли около Марса, а еще раньше «странно движущуюся комету» заметили астрономы в разных странах. Пришельцы оказались механической формой жизни, которая, впрочем, не проявляла враждебности.
Продолжение истории — под катом

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

Отличия между C++ /Visual Basic и Java на общем уровне (для начинающих и учащихся)

Время на прочтение4 мин
Охват и читатели11K
C++ и Java являются одними из очень популярных языков программирования. Их можно сопоставлять очень детально, сравнивая скорость, типизацию, компиляторы и т.д, но для обычного обывателя это слишком, и гораздо проще будет рассмотреть их отличия на общем, базовом уровне, чтобы выводы для себя мог сделать даже человек, далёкий от программирования и только присматривающийся к данной сфере. Уже на этом этапе можно сделать вывод, язык какой парадигмы вам подойдёт. И да, ситуация такого выбора вполне реальна — например, для студентов в учебных целях.

Для этого попытаюсь рассмотреть вкратце основные конструкции языков программирования а именно:
Читать дальше →

Clang-format тормозит работу программы

Время на прочтение11 мин
Охват и читатели5.7K
Сегодня мы будем измерять производительность разных реализаций функции toupper, ведь именно этим и занимаются по вторникам.

Вообще-то мне нет никакого дела до функции toupper, просто я недавно писал другой пост и мне нужен был какой-то общий сюжетный стержень, а toupper кажется вполне интересным и безобидным кандидатом в бенчмарки. Я старался выбрать что-то максимально простое, что не увело бы меня в сторону, но так уж получилось, что в этом тесте я столкнулся со странной проблемой.
Читать дальше →
В 2017 году мы в НТЦ ПРОТЕЙ начали разработку пакетного ядра частных 4G-сетей для корпоративных заказчиков. О главных задачах, которые нам пришлось решать, и основных сложностях, с которыми мы столкнулись при работе над полностью отечественным продуктом, рассказано в этой статье.
Читать далее

C++ vtables. Часть 1 (basics + multiple Inheritance)

Время на прочтение9 мин
Охват и читатели43K

Всем привет! Перевод статьи подготовлен специально для студентов курса «Разработчик С++». Интересно развиваться в данном направлении? Приходите онлайн 13 декабря в 20:00 по мск. на мастер-класс «Практика использования Google Test Framework»!



В этой статье мы рассмотрим, как clang реализует vtables (таблицы виртуальных методов) и RTTI (идентификацию типа времени исполнения). В первой части мы начнем с базовых классов, а затем рассмотрим множественное и виртуальное наследование.

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

Сверточный слой: быстрая свертка по методу Шмуэля Винограда

Время на прочтение8 мин
Охват и читатели13K

Введение


Данная статья является продолжением серии статей описывающей алгоритмы лежащие в основе
Synet — фреймворка для запуска предварительно обученных нейронных сетей на CPU.

В предыдущей статье я описал методы, основанные на матричном умножении. Эти методы с минимальными усилиями позволяют достичь во многих случаях более 80% от теоретического максимума. Казалось бы, ну куда тут можно еще дальше улучшать? Оказывается можно! Существуют математически методы, которые позволяют сократить число операций, необходимых для свертки. С одним из таких методов — алгоритму свертки по методу Винограда мы и ознакомимся в настоящей статье.

image

Шмуэль Виноград (Shmuel Winograd) 1936.01.04 — 2019.03.25 — выдающийся израильский и американский ученый в области компьютерных наук, создатель алгоритмов быстрого матричного умножения, свертки и преобразования Фурье.
Читать дальше →

Свой стек навигации. Лучше чем у ROS?

Время на прочтение17 мин
Охват и читатели9.2K
Это вторая статья команды setUP про наш опыт создания автономных роботов для соревнований Eurobot Open и использования для этого ROS.

Первая статья про механику и общую архитектуру роботов.

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

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


Гетерогенное программирование и oneAPI Toolkit. Импровизированная лекция эксперта Intel отвечает на ваши вопросы

Время на прочтение11 мин
Охват и читатели3.6K


В рамках рубрики «Задайте вопрос эксперту Intel» мы попросили ведущего специалиста Intel Константина Владимирова ответить на вопросы, связанные с гетерогенным программированием, тулкитом oneAPI и смежными интересными вещами. Результат превзошел все наши ожидания. Константин не пожалел времени и дал развернутые и обоснованные ответы, не опасаясь быть полемичным. По сути, получилась небольшая лекция о кросс-архитектурном программировании во всех его ипостасях: нюансах оффлоада, оптимизациях, стандартах и так далее.
Передаем микрофон эксперту. Ну а комментарии отданы аудитории.
Читать дальше →