Как стать автором
Обновить
219.27

C++ *

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

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

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

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

image


NewLang — это язык программирования высокого уровня в котором можно сочетать стандартные алгоритмические конструкции с декларативным программированием и тензорными вычислениями для задач машинного обучения.


Основной особенностью языка является простой, логичный и не противоречивый синтаксис, который основан не на использовании зарезервированных ключевых слов, а на строгой системе грамматических правил с использованием знаков препинания (в список которых входят и операторы языка).


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

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

Межмодульный анализ C и C++ проектов в деталях. Часть 2

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

В первой части статьи мы рассматривали основы теории компиляции C и C++ проектов, в частности особое внимание уделили алгоритмам компоновки и оптимизациям. Во второй части мы погрузимся глубже и покажем ещё одно применение межмодульного анализа. Но в этот раз не для оптимизаций исходного кода, а для улучшения качества статического анализа на примере PVS-Studio.

Читать далее

Пишем внешнюю компоненту для 1С, NativeAPI на С++, для ОС Linux, с использованием Qt Creator

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

Аннотация

В статье рассмотрен процесс создания внешней компоненты для 1С в среде Qt Creator для операционной системы Linux (ubuntu, debian, mint и им подобных). На примере компоненты для сбора данных от внешней аппаратуры и сохранение их в базе, посредством 1С. В качестве внешней аппаратуры в данном примере будем использовать Arduino UNO.

Для создания внешней компоненты понадобятся

Читать далее

Flutter каналы платформы

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

Перевод статьи одного из инженеров команды Flutter, посвященной каналам платформы, и иже с ним.

Читать далее

Судьба баг-репорта

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

Довольно частый (и логичный) вопрос к нашим статьям с проверкой открытых проектов: отправляются ли разработчикам баг-репорты? Так вот, ответ – да. Более того, мы на этом не останавливаемся и иногда отслеживаем прогресс. Сегодня хотелось бы рассказать об одном из случаев, где именно эта педантичность предотвратила фиктивное исправление бага.


0921_destiny_of_a_bug_report_ru/image1.png

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

Разработка веб приложений на C/С++

Время на прочтение6 мин
Количество просмотров16K
В этой статье я бы хотел рассказать про создание веб приложений на С/С++ с использованием стека Nginx+fastcgi. Если быть более точным, то статья больше относится к сайтам, то есть к отдаче контента. Есть достаточно старая, но хорошая статья habr.com/ru/post/154187 Хотя тех пор прошло много времени, вышли новые стандарты С++. Я хочу в этой статье описать некоторое логическое продолжение, так как думаю, что тема будет многим интересна.
Читать дальше →

Режим шифрования AEAD-MGM

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

В 2017 году российской компанией КриптоПро был предложен новый AEAD режим шифрования Multilinear Galois Mode (MGM). Спустя некоторое время он был принят в российские и международные стандарты. Так как в интернете я смог найти только общее описание работы этого режима шифрования без конкретной реализации, то я решил попробывать свои силы и реализовать очень упрощённую версию своими руками...

Читать далее

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

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

Часть 6. Специфика Google
Часть 7. Ещё возможности C++
Часть 8. Именование


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

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

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

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

Читать далее

Как я писал Биномиальную кучу

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

Я сейчас изучаю продвинутые структуры данных и в один прекрасный вечер я решил собирать алгоритмы и структуры данных к себе на гитхаб (и до сих пор это делаю). Захотел я сделать так, чтобы сделать всё шаблонным, если что-то мне резко понадобится, то я смог за считанные секунды добавить себе шаблонный класс структуры данных или шаблонную функцию алгоритма и использовать. Звучит замечательно, особенно на контесты с codeforces.

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

Читать далее

Сеттер или геттер-ссылка — как сделать правильный выбор?

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

Когда вы создаете класс, вам часто приходится реализовывать методы доступа к одному или нескольким атрибутам этого класса для того, чтобы можно было редактировать их.

Читать далее

Модульное программирование в C++. Статические и динамические плагины

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

Модульное программирование в C++. Статические и динамические плагины


Плагины на С++

На тему модульности программ в С++, в Интернете, теоретических материалов много, а практических – мало. Поэтому, не найдя подходящего прототипа для собственного проекта, пришлось изобретать очередной «велосипед», из чего-то, ведь, исходить надо.

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

Сканирование кода C++ с помощью GitHub Actions

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

В прошлом году GitHub выпустил фичу сканирования кода, которая позволяет разработчикам добавлять проверки безопасности в свою среду CI/CD и в целом в рабочую среду. В этом посте демонстрируются основы использования CodeQL, механизма анализа, лежащего в основе сканирования кода, в связке с GitHub Actions.

Читать далее

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

Лаконичный итератор для декларативного синтаксиса

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


Итератор (от англ. iterator ― перечислитель) — интерфейс, предоставляющий доступ к элементам коллекции (массива или контейнера) и навигацию по ним. В различных системах итераторы могут иметь разные общепринятые названия. В терминах систем управления базами данных итераторы называются курсорами.

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

Ну и судя по моим наблюдениям Хабр — ума палата, буду рад любым комментариям и предложениям, которые помогут протестировать или улучшить предлагаемое решение.
Читать дальше →

Создаём плагин Qt GeoServices на примере ОС Аврора, OpenStreetMap и Sight Safari

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

Привет, Хабр! Хотим рассказать о том, как создать плагин Qt GeoServices и использовать его в своём приложении на ОС Аврора. В этом посте мы подробно объясним, как научить приложение определять координаты устройства на карте и прокладывать оптимальные маршруты с помощью сервиса Sight Safari. Самые нетерпеливые могут пощупать готовый код плагина и демо-приложения на GitHub, всех остальных приглашаем под кат.

Читать далее

Conan.io – неварварские методы работы

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

Всем привет!

Сегодня мы хотим поговорить о нашем опыте работы с пакетным менеджером Conan.io. Если вы так же, как и наша команда разработки Efros Config Inspector столкнулись с вопросами сборки под различные операционные системы, включая отечественные, и используете сторонние библиотеки, возможно, этот материал будет вам интересен.

Conan.io или…?


Efros Config Inspector был разработан как Windows приложение, но впоследствии было принято решение обеспечить совместимость и с отечественными ОС, такими как Astra Linux и РЕДОС. В процессе реализации этой задачи мы столкнулись с рядом трудностей, решить которые могли, во-первых, смена системы сборки программного обеспечения, во-вторых, подключение пакетного менеджера.

Разработка продукта велась на основе технологий Microsoft (Visual Studio и Team Foundation Server), но, как известно, это не самое удобное решение для сборки проекта под *.nix-системы, поэтому появились инструменты CMake. Тема выбора CMake достойна отдельной статьи. Если она вам интересна, напишите в комментариях, и мы обязательно вернемся к обсуждению данного вопроса в следующих публикациях.
Читать дальше →

Обзор последних изменений в rotor'е (v0.10… v0.14)

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

actor system


rotorненавязчивый С++ акторный микрофремворк с возможностью создания иерархий супервайзеров, похожий на своих старших братьев — caf и sobjectizer. В последних релизах с момента последнего анонса накопились существенные улучшения, которые хотелось бы осветить.

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

Vulkan. Руководство разработчика. Image views

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


Кто еще со мной не знаком, я технический переводчик из ижевской компании CGTribe, и я занимаюсь переводом руководства к Vulkan API (vulkan-tutorial.com).

В этой публикации представлен перевод главы Image views из раздела Drawing a triangle, подраздела Presentation.

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

Автоматизация создания объектов при помощи конвейера

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

Привет, Хабр!

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

Введение

Предположим, у нас есть набор инструментов(сущностей) для обработки какого-то потока данных, или построения других комплексных сущностей.

На примере транспортных средств.

Есть у нас набор атомарных компонентов:

class EngineA;

class EngineB;

class wheelsA;

class wheelsB;

class FrameA;

class FrameB;

и т.д.

Если нам нужна машина - мы просто объявляем класс Car, в котором есть нужный корпус, колеса, двигатель и т.д. Аналогично с какой-нибудь лодкой лодкой, мы бы объявили класс Boat, и быстренько набросали агрегацию нужных частей лодки. Если же нам нужна и лодка, и машина, и даже самолет - мы можем без проблем воспользоваться паттерном фабрика, но что делать, если нам нужны машины, лодки, самолеты, и мы заранее не знаем сколько, когда, и в каком порядке.

Читать далее

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