Обновить
296.34

C++ *

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

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

Rust и C++ при создании астродинамической библиотеки

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели7.3K

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

Изначально я планировал еще привести сравнение производительности, но сейчас понимаю, что будет это не совсем корректно. «Почему?» – спросите Вы меня. Давайте разбираться вместе. Да, пока не начали, оговорюсь сразу, что в данной статье я решил не рассказывать о смысле приводимого кода, т.к. это сразу усложнит восприятие.

Читать далее

Алгоритмы диапазонов C++20 — 7 немодифицирующих операций

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


Библиотека Ranges для C++20 предлагает альтернативы для большинства алгоритмов. На этот раз я хочу показать вам десять немодифицирующих операций. Мы сравним их со «старой» стандартной версией и увидим их преимущества и ограничения.


Подробности — к старту нашего курса по разработке на C++.

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

Используем Objective-C в C++ без проблем

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

Интегрируем Objective-C код из Apple SDK в C++ проект, без переписывания всего проекта на Objective-C++, с использованием PIMPL идиомы. Также, сборка всего проекта вместе с использованием Makefile и CMake (для генерации .xcodeproject).

Читать далее

Как настроить библиотеку SFML в Visual Studio динамическая компоновка

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

Следующая тема

В этой статье объясняется, как настроить ваши проекты SFML с динамической компоновкой, если Вы используете интегрированную среду разработки программного обеспечения Visual Studio (компилятор Visual Studio С++).

Читать далее

Как устроена работа thread_local переменных: разбираемся и добавляем поддержку в учебную ОС

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

Эта статья написана по мотивам моей курсовой работы, основной смысл которой описан здесь. В процессе работы над ней мне понадобилось добавить в учебной ОС, над которой я работал, поддержку thread_local переменных, о чём я и хочу здесь рассказать в надежде что кому-то это окажется полезно.

Здесь рассмотрен совсем простой случай: поддержки динамической загрузки других бинарников не будет, а способ реализации рассмотрен только один.

Код расположен в двух репозиториях.

Читать далее

Релиз языка программирования NewLang 0.3

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

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


NewLang находится в процессе активного развития. Это третий публичный релиз в который добавлены новые существенные возможности по сравнению с предыдущей версией.

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

Первый опыт написания полноценной программы

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

Каждый начинающий программист мечтает реализовать свой собственный проект. Не написать простенький код, по заданию преподавателя, а воплотить в жизнь свои идеи. Так и я, изучая C++ 3-4 месяца, решился попробовать разработать макет электронного журнала для преподавателей.

Читать далее

IEC 61499 и решения с открытым исходным кодом для разработки систем управления

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

Традиционно мир разработки для встраиваемых решений делится на программирование ПЛК, где используются среды стандарта IEC 61131 и разработку на С/С++ для микроконтроллеров и embedded Linux. Стандарт IEC 61499 является наследником стандарта IEC 61131 и предназначенн для разработки распределенных систем управления. Основным строительным элементов IEC 61499 является функциональный блок похожий на конструкцию языка FBD. Опенсорсные инструменты Eclipse 4diac IDE и Eclipse 4diac forte позволяют разработать распределенную систему управления из нескольких Raspberry PI или компьютеров с Linux, Windows или Freertos. Доступна работа с распространенными полевым шинами и возможность расширения библиотек блоков на С++.

Читать далее

Эмоциональный код

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

Я зарабатываю программированием с 1979 года, и большую часть этого времени мне приходится работать с чужим кодом. Поначалу было: "Добавьте эту маленькую функцию к тому, что у нас уже есть". Теперь — "как мы можем стать лучше" и " стоит ли сохранять данный код?". Прочтение кода всегда было огромной составляющей в моей работе, и по этой причине для меня очень важно, какой код пишу я (и люди, с которыми работаю). Конечно, хочется, чтобы он был быстрым — в конце концов, я программист на C++. Кроме того, он должен быть корректным. Но есть нечто большее, помимо этих двух вещей: я хочу, чтобы код был читабельным, понятным, разумным и даже приятным.

Читать далее

DINS C++ EVENING: принципы разработки высокопроизводительных сетевых приложений и типовые проблемы Threadpool и Numa

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

Андрей Новохатько из DINS расскажет, как устроены современные NIC, основные идеи DPDK фреймворка и то, как это можно использовать для оптимизации своих высоконагруженных backend-сервисов, а Александр Боргардт поделится из «ВКонтакте» поделится о типовых проблемах Threadpool и Numa.

Участие бесплатное, но нужно зарегистрироваться. Подробная программа и информация о спикерах — под катом.

Читать далее

Мультиплеер в Unreal Engine: Игровой процесс

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

Привет Хабр!
В данной статье я бы хотел разобрать мультиплеер со стороны игрового процесса. Опорой для написания статьи выступает популярный Network Compendium.

Читать далее

Опыт применения API SolidWorks для автоматизированного проектирования тары

Время на прочтение9 мин
Охват и читатели14K
В современных условиях для любого предприятия важно сокращение сроков проектирования новых изделий. Один из путей такого сокращения – это автоматизация процессов проектирования. Среди проектируемых изделий можно выделить стандартную тару. С помощью этой тары (комплектов ящиков) могут быть упакованы, например, комплексы радиоэлектронной аппаратуры. Задача проектирования таких комплектов ящиков в отдельных случаях может быть достаточно формализована и представлять собой монотонную работу.



Следует отметить, что задачами автоматизации проектирования тары занимался ряд ученых, разработчиков и организаций (см. например [1, 2, 3]). Однако не существует широко известных инструментов, предназначенных для решения узкоспециализированной задачи: проектирования ящиков типа VI по ГОСТ 5959-80 (см. рисунок выше) на основе API SolidWorks. Поэтому представляют интерес способы такого решения.

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

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

Vulkan. Руководство разработчика. Текстурирование

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


Привет! Я перевожу руководство Vulkan Tutorial на русский язык и выкладываю переводы на Хабр. Оригинал руководства можно найти здесь.

Сегодня я перехожу к новому разделу Текстурирование (Texture mapping). Первая глава раздела, переводом которой я собираюсь с вами поделиться, называется Images.

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

Нужна система с низкими задержками? Выбираем Java вместо C++

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

Все разработчики знают, что есть два способа сделать дело: первый — вручную, медленно, нервно, сложно, либо второй – автоматизировано, быстро и еще сложнее.

Например, я мог бы продолжить писать эту статью о том, почему стоит использовать Java вместо C++ при программировании систем с низкой задержкой. Либо мог бы обучить ИИ, чтобы он сделал это за меня. Второй подход, в конце концов, сэкономил бы мне массу времени – искусственный интеллект генерировал бы за меня тысячи статей в секунду – но редактор вряд ли обрадовался бы услышать, что на подготовку первой статьи мне нужно два года.

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

Читать далее

Результаты голосования комитета C++ по асинхронному программированию

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

Данный текст является переводом недавнего поста Бена Крейга - одного из членов комитета С++. TL;DR для нетерпеливых: Networking TS/Asio (P2444) не получает общего одобрения комитета, модель Senders/Receivers (P2300) становится основным направлением развития асинхронного программирования в С++.

Всем привет.

Возможно, вы слышали обо мне по моей работе над freestanding C++, но я также вице-председатель Library Evolution Working Group (LEWG). Хотел бы поделиться с вами результатами недавнего голосования комитета по поводу будущего асинхронного программирования в C++. Опрос касался "Senders and Receivers"/S&R (P2300) и Networking TS/Asio (P2444).

Читать далее

TypeScript Native (AOT) Compiler

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

TypeScript Native (AOT) Compiler

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

Читать далее

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

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


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

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

C++ — это замечательно, и вот почему

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

C++ — один из самых непонятных языков в современной поп-культуре разработчиков программного обеспечения. Люди часто сравнивают его с C, потому что это "низкоуровневый" язык. Следовательно, он получил репутацию эзотерического языка, который интересует только параноиков производительности. Это далеко не так. Я программирую на C++ в качестве основного языка уже некоторое время, и опыт разработчика на самом деле очень хорош — гораздо лучше, чем можно было себе представить.

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

Читать далее

История платформы Highload.Fun для соревнований в оптимизации кода

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

Привет Хабр! Сегодня я хочу рассказать о платформе, где люди соревнуются в том, кто больше сможет сэкономить тактов CPU для решения задач. Её история началась весной 2021 года, после очередного HighLoad Cup'а от Mail.ru. Мне очень нравится этот конкурс, но, к сожалению, он проходит довольно редко (2017, 2018, 2021 года) и наблюдается тренд ухода от оптимизации на уровне операционной системы и железа к массовости, чтобы в лидерах были решения не только на C/C++, но и на более медленных языках программирования. В 2017 году нужно было сделать HTTP сервер, реализующий простую бизнес логику, лидеры писали свои решения с использованием низкоуровневых вызовов функций ядра и только вызов функции epoll_wait со временем ожидания -1, вместо 0, не позволило мне подняться в TOP-6 с 9 места. Если интересны технические детали, то можно почитать эту статью. В 2021 году нужно было обращаться к серверу, в котором были искусственные ограничения и нужно было разобраться в них, а не выжать из железа всё возможное. После конкурса был созвон, на котором участники давали обратную связь, по итогам которого стало понятно, что есть небольшое количество людей, которым интересна именно низкоуровневая оптимизация, а не только улучшение алгоритмов на уровне Big O. Так и родилась идея этой платформы. Под катом история и устройство платформы, а также набитые шишки.

Читать далее

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