Рубрика «c++» - 212

С момента выхода стандарта С++11 прошло уже больше двух лет. И большинство С++ разработчиков уже знакомы с основными его нововведениями и костылями. Одним из нововведений было добавление в стандартную библиотеку класса std::function.

Классы std::function и boost::function являются высокоуровневыми обертками над функциями и функциональными объектами. Объекты таких классов позволяют хранить и вызывать функции и функторы с заданной сигнатурой, что бывает удобно, например, при создании callback вызовов (например, мы можем регистрировать несколько обработчиков, и это могут быть как обычные функции, так и объекты с определенным оператором =)

©

Этого замечательного шаблонного класса давно не хватало нам. Однако, в погоне за универсальностью разработчикам стандартной библиотеки пришлось пойти на некоторые жертвы. Так как С++ используется в первую очередь там, где необходимо выжать максимальную скорость из железа, со больше всего разочаровывает любой overhead по скорости. В частности, к таким вещам можно отнести:

  1. При создании объекта std::function вызывается оператор new, как следствие того, что std::function позволяет сохранять в себя функтор произвольного размера.
  2. std::function имеет семантику копирования, которая, в принципе, редко когда бывает необходима в при действиях с функторами (в связи с появлением move-семантики), но стоит определенных ресурсов CPU.

Как от этого избавиться?
Читать полностью »

На прошлой неделе в мире С++ произошло интересное событие. Компания Microsoft объявила о выходе обновления к компилятору С++ в Visual Studio 2013. Само по себе обновление компилятора отдельно от Visual Studio или её сервис-пака — уже нетривиальное для Microsoft событие. Но ещё интереснее то, что вошло в это обновление. Полный список можно почитать по ссылке выше, а я остановлюсь только на одном моменте — resumable функции. Для полного понимания ситуации: Microsoft изрядно протроллила и комитет по стандартизации С++ и разработчиков gccclang, выпустив (тут надо внимательно) реализацию экспериментальной и не утверждённой ещё возможности будущего стандарта C++17, основанной на экспериментальных и не утверждённых ещё возможностях будущего стандарта C++14, которые в свою очередь являются исправлениями не сильно ещё вошедших в повседневное программирование возможностей С++11.

Достаточно гиковский ход, не находите?

А ниже будет перевод статьи с meetingcpp.com, рассказывающей о том, что это за фича и как её использовать.
Читать полностью »

Наконец-то вышел наш сборник рецептов про С++ разработку под Android.

image

Читать полностью »

Это перевод статьи Джошуа Блоха «Extra, Extra — Read All About It: Nearly All Binary Searches and Mergesorts are Broken» 2006 года.

Я живо помню первую лекцию Джона Бентли в университете Карнеги-Меллон, на которой он попросил нас, свежеиспечённых аспирантов, написать функцию двоичного поиска. Потом он взял одно из решений и разобрал его на доске, и разумеется, в нём оказалась ошибка, как и во многих других наших попытках. Этот случай стал для меня наглядной демонстрацией к его книге «Жемчужины программирования». Мораль в том, чтобы внимательно расставлять инварианты в программе.

И вот, теперь 2006 год. Я был потрясён, узнав, что программа двоичного поиска, корректность которой Бентли доказывал формально и тестами, содержит ошибку. Не подумайте, что я придираюсь; по правде сказать, эта такая ошибка, что вполне может ускользать от тестеров десятилетиями. Более того, двоичный поиск, который я написал для JDK, тоже был багнутым лет эдак девять. И только сейчас, когда она сломала кому-то программу, о ней сообщили в Sun.
Читать полностью »

Meeting C++, Dusseldorf

Так вышло, что у меня получилось принять участие в работе конференции, посвящённой C++. Уровень, конечно, не GoingNative: доклады были разного уровня. Как очень сильные и интересные, так и совсем пустые. Самым главным для меня была атмосфера — давно я ни с кем лично не обсуждал столько интересных тем. Это мне так понравилась, что я загорелся идеей создать в Санкт-Петербурге C++ User Group, чтобы больше общаться лично с коллегами по цеху. Но об этом как-нибудь потом, а пока о конференции. Не буду описывать и пересказывать все доклады, отмечу только наиболее интересные мне темы и темы, которые затрагивались почти в каждом докладе.
Читать полностью »

Введение

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

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

В этот раз речь пойдет о создании кроссплатформенных приложений с плагинами на C++ с использованием библиотеки wxWidgets. Рассматриваться будут операционные системы Windows, Linux и OS X, как наиболее популярные.

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

В своей предыдущей статье я затронул тему грамотной реализации потоков в Qt и предложил свой вариант. В комментариях мне подсказали более верное направление. Попробовал сделать — получилось и вправду легко и красиво! Я хотел было исправить старую статью, но Хабр повис — и все потерялось. В итоге я решил написать новую версию.
Читать полностью »

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

Когда встал вопрос о том как искать новостные сайты, пришла мысль о использовании сервиса new.google.com. От туда можно выдёргивать ссылки на новостные сайты, к тому же они постоянно добавляются и отсортированы по регионам, темам и т.д. Осталось пройтись по всем разделам news.google.com, выдернуть ссылки новостных сайтов, а затем найти все RSS каждого из них.
Читать полностью »

в 7:49, , рубрики: c++, game development

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

Мы расмотрим три вида взрывов разной сложности:

  • Нахождение тел в радиусе взрыва
  • Raycast – нахождения тел в радиусе лучей
  • Частицы – распространение многих маленьких тел от эпицентра взрыва

Читать полностью »

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

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

Сразу оговорюсь, что это будут лично мои выводы, с которыми многие могут быть и не согласны. Буду признателен за конструктивные и познавательные комментарии и описания фрагментов вашего опыта. Не хотелось бы попыток «священных войн» в комментариях. Помните объявления о работе в 90-х с фразой «Не Гербалайф»? Аналогично — «Не холивар».

В статье затрону три темы:

  • Взгляд на код и разработку.
  • Немного о поиске работы на московском IT-рынке.
  • Взгляд на проекты, в которых пришлось поработать сквозь призму времени и информацию, которая была позднее освоена.

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

Четкой идеологической линии «Делай так и будет тебе счастье» нет. Основная мысль, которую я хотел вложить в материал — не стоит что-то идеализировать.

Иногда смотришь на какую-то кляксу и, казалось бы, ничего она не изображает, но стоит немного обвести на ней контуры как сразу вырисовывается четкая и понятная фигура. Маловероятно что в статье вы найдете что-то особо новое. Это контур над кляксой своего опыта. Получилось весьма длинно, местами может показаться что слишком разжевано, но это всего лишь описание некоторого опыта, с примерами, какими-то размышлениями, которые идут от взглядов на кодирование до взглядов на проекты и их управление через такой немаловажный фактор, как поиск работы.

Итак, некоротко и местами несерьезно о серьезном…

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js