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

Интероперабельность между С++ и Rust

Уровень сложности Сложный
Время на прочтение 13 мин
Количество просмотров 2.2K
Блог компании Timeweb Cloud Open source *Программирование *C++ *Rust *
Обзор
Перевод
image

image

Этот пост основан на презентации, с которой автор выступил на конференции EuroRust 2022 в Берлине. Доступны слайды и видеозапись.

Автор, работающий в компании Slint, участвует в создании UI-инструментария, написанного на Rust. Этот UI-инструментарий может использоваться и с другими языками и экосистемами, кроме той, для которой был написан, поэтому в Slint предусмотрены API для C++ и даже для Javascript. Естественно, эти API должны восприниматься как совершенно нативные для разработчиков, имеющих дело с этими языками. Именно поэтому ребром стоит вопрос о том, как создать нативно воспринимаемые API к коду Rust для пользователей, привыкших работать с C++.

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

В этом посте хотелось бы исследовать оба направления интеграции между Rust и C++ и представить некоторые инструменты, используемые в Slint.
Читать дальше →
Всего голосов 21: ↑19 и ↓2 +17
Комментарии 0

Вышла версия 6.0 фреймворка Qt

Время на прочтение 2 мин
Количество просмотров 18K
Программирование *


Во вторник, 8 декабря, компания Qt Company обновила свой фреймворк для кроссплатформенной разработки. Если сравнить с пятой версией 2012 года, в Qt 6.0 появились новые API для 3D-графики, улучшенная поддержка С++17 и система сборки cmake. Полный список изменений компания публикует на странице в вики.
Читать дальше →
Всего голосов 16: ↑15 и ↓1 +14
Комментарии 11

Программисты создали проект «Этот код не существует»

Время на прочтение 1 мин
Количество просмотров 12K
Open source *Программирование *C++ *C *Машинное обучение *


23 февраля 2021 года разработчики из MESS Lab (университет Нью-Йорка) открыли в общий доступ проект «Этот код не существует» (this code does not exist). На сайте doesnotexist.codes выводится листинг части кода на C/C++. Пользователю предлагается угадать — это настоящий код или его фрагменты были получены в результате работы нейросети GPT-2, обученной на 774 млн строк кода из 10 тыс. самых популярных пакетов Debian. Настоящие фрагменты кода также были взяты из того же набора пакетов.
Читать дальше →
Всего голосов 24: ↑23 и ↓1 +22
Комментарии 20

VK приглашает студентов в программу Tarantool для работы над исследовательскими задачами

Время на прочтение 1 мин
Количество просмотров 1.7K
Блог компании VK Программирование *C++ *Учебный процесс в IT Карьера в IT-индустрии

Друзья, мы начали набирать участников в студенческую программу Tarantool. Вы узнаете о методиках разработки ПО и получите опыт работы в технологическом проекте. Решение задач в рамках программы оплачивается.

Программа Tarantool целиком состоит из практики разработки. Участвовать могут студенты со всей страны: программа проходит удалённо. Начало 1 июля. В первую неделю менторы из сотрудников Tarantool познакомят участников с проектом и технологиями, и вы сможете выбрать задачи, с которыми будете работать — средней или повышенной сложности.

Читать далее
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 3

В рейтинге языков программирования от TIOBE Software за январь 2023 года С++ обошёл Java

Время на прочтение 1 мин
Количество просмотров 21K
Программирование *Статистика в IT IT-компании


В рейтинге языков программирования от TIOBE Software за январь 2023 года С++ обошёл Java и поднялся на третье место.
Читать дальше →
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 9

Бьёрн Страуструп ответил АНБ США по поводу рекомендации ведомства отказаться от использования языков C и C++

Время на прочтение 3 мин
Количество просмотров 61K
Информационная безопасность *Программирование *C++ *C *IT-компании


Изобретатель языка программирования C++ Бьёрн Страуструп ответил Агентству национальной безопасности (АНБ) США по поводу рекомендации ведомства отказаться от использования языков C и C++, перекладывающих управление памятью на разработчика, в пользу современных языков программирования (C#, Go, Java, Ruby, Rust и Swift), которые обеспечивают автоматическое управление памятью или выполняющие проверки безопасной работы с памятью во время компиляции кода.
Читать дальше →
Всего голосов 74: ↑71 и ↓3 +68
Комментарии 349

CEE-SECR 2010 ищет таланты

Время на прочтение 1 мин
Количество просмотров 972
Блог компании Softkey.ru
Друзья!

Спешим сообщить, что сроки приема заявок на выступления с докладами на конференцию CEE-SECR 2010 («Разработка ПО 2010») продлили до 9 августа 2010 г.

image

Хотите поделиться своими знаниями и опытом? Тогда заполняйте специальную форму на сайте CEE-SECR 2010.
Читать дальше →
Всего голосов 9: ↑7 и ↓2 +5
Комментарии 2

Qt+OpenGL — Основы. Часть 1

Время на прочтение 5 мин
Количество просмотров 119K
C++ *
Данная cтатья вводная, рассчитана на знакомство с Qt+OpenGL для новичков, которые планируют изучать Qt (как кросс-платформенный инструментарий разработки ПО на языке программирования C++) + OpenGL (как графическую библиотеку).

Что потребуется новичку:
1) Qt Creator (имеет хорошую встроенную документацию и подсказки во время набора кода). Скчаать
2) doc.qt.nokia.com — официальная документация на английском языке
3) doc.crossplatform.ru — документация на русском языке
4) Обязательно прочесть про Qt и OpenGL
5) Отличная статья для начала изучения

Что мы будем делать
Поскольку данная статья посвящена конкретно основам, в нашей задаче будет следующее:
1) Разобрать как создается приложение
2) Как рисовать объекты
3) Как работать с указателем мыши и событиями(нажатие клавиш на клавиатуре и на мышке)
4) Работа с таймером
5) Создадим нашу первую банальную игру. Будем с помощью таймера, случайным образом перемещать квадрат. После наведения на квадрат указателя и кликнув по нему левой кнопки мышки, в случае попадания по квадрату, будем прибавлять к полученным очкам +1.

Этапы построения
Всего голосов 59: ↑47 и ↓12 +35
Комментарии 51

Ветвления. Что с ними можно сделать

Время на прочтение 11 мин
Количество просмотров 8K
C++ *
Мой прошлый пост вызвал огромный резонанс. Комментариев было не много, но я получил множество писем, а некоторые читатели выступили даже с открытыми заявлениями (там, правда, преобладают наезды на меня лично и на хабр в целом, но есть и мысли по существу вопроса). Поэтому я решил продолжить писать в жанре «мои мысли по поводу вопросов известной компании». Этим постом я постараюсь решить две задачи: (i) ответить на вопросы и возражения читателей предыдущего поста и (ii) толкнуть в некотором смысле философскую мысль о безIFовом программировании. Букв получилось довольно много, но те, кому интересно только что-то одно из поста, могут пропустить половину.

И ещё: этот топик (как и прошлый) — не наезд ни на кого. Просто интересно порассуждать об интересных вопросах. Здесь нет подтекста, намёка, вызова. Параноиков и сторонников теорий заговоров попрошу расслабиться.

В этот раз хотел бы взглянуть на вопрос 4.
Читать дальше →
Всего голосов 60: ↑49 и ↓11 +38
Комментарии 35

Утечки памяти в С++: Visual Leak Detector

Время на прочтение 1 мин
Количество просмотров 37K
C++ *
В этой короткой заметке хочу рассказать о прекрасной программе для поиска утечек памяти под Visual Studio--Visual Leak Detector.
Она удивительно проста в использовании и выдает подробную информацию о найденных утечках, а на хабре пока не упоминалась.
Читать дальше
Всего голосов 39: ↑34 и ↓5 +29
Комментарии 18

Кодировки

Время на прочтение 6 мин
Количество просмотров 59K
C++ *

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

Читать дальше
Всего голосов 76: ↑73 и ↓3 +70
Комментарии 61

Уж такой элементарный C/С++: может->является

Время на прочтение 3 мин
Количество просмотров 2.6K
C++ *
Вопрос на пять: что напечатает эта простая программа:
    #include <stdio.h>

    typedef int a;
    a b = 5;

    int main()
    {
       a(b);
       printf("%d\n", b);
       return 0;
    }
Уже натерпевшиеся от своего любимого языка, но ещё не прошерстившие всех бизонов gcc, почувствуют подвох — и правильно. Подсказка номер ноль: это скушает С++, но и простой С не подавится.
Если не догадались, милости прошу!
Всего голосов 121: ↑80 и ↓41 +39
Комментарии 79

Проблема глобального переопределения new/delete в C++/CLI

Время на прочтение 4 мин
Количество просмотров 6.1K
C++ *
Как известно, C++ позволяет глобально переопределять операторы new и delete. Обычно такое переопределение используется для диагностики, поиска утечек памяти и более эффективного распределения памяти.

Все это мы используем в нашем крупном проекте. Однако у нас есть часть, написанная на C#, которая с помощью C++/CLI взаимодействует с основной частью на C++. И вот тут появились проблемы. У нас получались утечки памяти там, где их быть ну никак не могло.
Читать дальше →
Всего голосов 39: ↑33 и ↓6 +27
Комментарии 20

Анонс C++ AMP — открытой платформы построения гетерогенных (GPU+CPU) приложений на C++

Время на прочтение 2 мин
Количество просмотров 12K
Блог компании Microsoft
image

Привет, Хабрапользователи! Сейчас я нахожусь в США, город Белвью, на конференции AMD Fusion 11 Developer Summit. Про впечатления о городе и конференции я напишу позднее, когда обобщу все накопленные материалы. Пока же мне хотелось рассказать вам про важный анонс, который был сделан сегодня в ходе пленарного доклада Microsoft.

Microsoft представила свое видение разработки приложений для работы в гетерогенной среде с использованием всех возможностей многоядерных процессоров и GPU. Была представлена новая платформа, которая станет частью следующей версии Visual Studio.

Новая платформа получила название C++ Accelerated Massive Parallelism или C++ AMP. Цели данной платформы следующие: дать возможность использовать преимущества параллельных вычислений и GPU однвременно на языке C++, так же как сегодня эти преимущества используются на языке С (или его подобии) в разных платформах разработки: OpenCL, CUDA, DirectCompute.

В ходе пленарного доклада было наглядно продемонстрировано использование новой платформы для разработки приложений, которым требуются высокие вычислительные мощности. Так с помощью возможностей, которыми обладает C++ AMP были достигнуты отличные результаты по использованию имеющихся GPU и многоядерных CPU даже на нетбуке, который смог выдать десятки гигафлопс для решения демонстрационной задачи рассчета взаимодействия множества тел в пространстве. Более мощная система с двумя GPU позволила использовать тому же коду уже сотни гигафлопс ресурсов (был продемонстрирован результат в 800+ гигафлопс).

Читать дальше →
Всего голосов 44: ↑40 и ↓4 +36
Комментарии 24

libral – слой абстракции доступа к библиотекам сжатия

Время на прочтение 2 мин
Количество просмотров 1.2K
C++ *
Привет Хабр! Хочу представить свою С/С++ библиотеку libral, которая с недавних пор стала open source под лицензией GPL3. Возможно кому-то она будет полезна. Библиотека предоставляет единый интерфейс к различным алгоритмам сжатия данных без потерь.
На данный момент поддерживаются библиотеки:

Читать дальше →
Всего голосов 45: ↑38 и ↓7 +31
Комментарии 34

Как безопасно разрушить объект. И другие мысли

Время на прочтение 5 мин
Количество просмотров 12K
C++ *
Недавно разглядывал вакансии одной известной конторы, задумывался над вопросам (которые, кстати, на всех их вакансиях одинаковые). И решил написать заметку по самому интересному (на мой взгляд) аспекту первого же вопроса. Может быть доберусь и до других, а пока предлагаю задуматься, надо ли делать деструкторы виртуальными?

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

Каким же должен быть полный ответ на вопрос про деструкторы?
Читать дальше →
Всего голосов 67: ↑52 и ↓15 +37
Комментарии 51

Обнаружены ошибки в библиотеках C++Builder

Время на прочтение 7 мин
Количество просмотров 14K
Блог компании PVS-Studio C++ *Компиляторы *
Мы проверили заголовочные файлы, входящие в состав Embarcadero C++Builder XE3. Фактически, это означает только проверку небольшого числа inline-функций. Соответственно найдено совсем немного подозрительных мест, но достаточно для небольшой заметки.
Читать дальше →
Всего голосов 52: ↑44 и ↓8 +36
Комментарии 33

Оптимизация времени выполнения программы на С++ (убираем условные переходы)

Время на прочтение 5 мин
Количество просмотров 31K
Программирование *C++ *Алгоритмы *
Из песочницы
При оптимизации времени выполнения алгоритма, использующего LDPC декодер, профайлер привел к функции, вычисляющей следующее значение:
image
где a и b — целые числа. Количество вызовов шло на миллионы, а реализация ее была достаточно
проста и бесхитростна...
Всего голосов 65: ↑59 и ↓6 +53
Комментарии 60

SIMD без SIMD, или ищем на С почти в два раза быстрее чем на С++

Время на прочтение 4 мин
Количество просмотров 24K
Программирование *C++ *
Из песочницы
Прочитал статьи про комбинаторную кодогенерацию на С++ в контексте линейного поиска в базе данных: Возможности оптимизации в языках C и C++ и Скорости разработки и исполнения не достижимые на С. Попробуем достигнуть скоростей разработки и исполнения на C?

После того, как я запустил компиляцию С++ кода из второй статьи, мне стало интересно — успею ли я написать аналог на С, который будет работать быстрее, пока код… компилируется? Не успел, код скомпилировался через 5 минут, а аналог на С писался все 15.

Итак, постановка задачи — есть структура из нескольких полей, есть фильтр, который проверяет, находится ли каждое поле в указанном диапазоне. Или не проверяет — для каждого поля. Нужен код который эту проверку по фиксированному фильтру делает очень быстро. Данные случайные, так что чем меньше условных переходов тем лучше — предсказание переходов на случайных данных работает так себе.
Читать дальше →
Всего голосов 107: ↑103 и ↓4 +99
Комментарии 31

Ищем на java, оптимизация во время исполнения

Время на прочтение 4 мин
Количество просмотров 15K
Java *
Из песочницы
С большим удовольствием ознакомился со статьями: Возможности оптимизации в языках C и C++ и Скорости разработки и исполнения не достижимые на С. В них детально разобрана оптимизация во время компиляции. Основным условием такой оптимизации является доступность значений большинства переменных на этапе компиляции. В реальном мире, к сожалению, такое встречается не всегда.

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

Продолжение
Всего голосов 28: ↑27 и ↓1 +26
Комментарии 21
1