Рубрика «С++» - 18

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

А двое только планируют свои школы программирования.

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

image
Это реальный вопрос, заданный ребенком Григорию Бакунову месяц назад. Мы до сих пор ходим улыбаемся

Интересные штуки, касающиеся, в первую очередь, Android и Java вы можете посмотреть в первом выпуске.

А сегодня мы поговорим о C/С#/С++, геймдеве, Ruby, Linux, Arduino, курсах для ваших детей, племянников и детей ваших знакомых. И – PHP.
Читать полностью »

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

На днях я получил баг репорт, что мой код неправильно работает, если его скомпилировать при помощи pgcpp.

Начав разбираться, я нашел место, где происходит ошибка. Оказалось, что если код компилируется с O2 или O3 оптимизацией, то std::sort может начать дублировать часть вектора и заменять этими дубликатами другие части.

Вот простой C++ код, который поможет воссоздать это ужасное поведение (обратите внимание на число 3193 в выводе):
Читать полностью »

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

Аннотация к «Effective Modern C++» Скотта Майерса - 1
Пару месяцев назд Скотт Майерс (Scott Meyers) выпустил новую книгу Effective Modern C++. Последние годы он безусловно является писателем №1 «про это», кроме того он блестящий лектор и каждая его новая книга просто обречена быть прочитана пишущими на С++. Более того, именно такую книгу я ждал давно, вышел стандарт С++11, за ним С++14, уже виднеется впереди С++17, язык стремительно меняется, однако нигде так и не были описаны все изменения в целом, взаимосвязи между ними, опасные места и рекомендуемые паттерны.
Тем не менее, регулярно просматривая Хабр, я так и не нашел публикации о новой книге, похоже придется писать самому. На полноценный перевод меня конечно не хватит, поэтому я решил сделать краткую выжимку, скромно назвав ее аннотацией. Еще я взял на себя смелость перегруппировать материал, мне кажется для короткого пересказа такой порядок подходит лучше. Все примеры кода взяты прямо из книги, изредка с моими дополнениями.
Читать полностью »

Потоки ввода-вывода в стандартной библиотеке C++ просты в использовании, типобезопасны, устойчивы к утечке ресурсов, и позволяют простую обработку ошибок. Однако, за ними закрепилась репутация «медленных». Этому есть несколько причин, таких как широкое использование динамической аллокации и виртуальных функций. Вообще, потоки — одна из самых древних частей STL (они начали использоваться примерно в 1988 году), и многие решения в них сейчас воспринимаются как «спорные». Тем не менее, они широко используются, особенно когда надо написать какую-то простую программу, работающую с текстовыми данными.

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

Сегодня в комментариях у посту возникло обсуждение о медленности iostreams. В частности, freopen пишет

Забавно смотреть на ваши оптимизации, расположенные по соседству со считыванием через cin :)

а aesamson даёт такую рекомендацию

Можно заменить на getchar_unlocked() для *nix или getchar() для всех остальных.
getchar_unlocked > getchar > scanf > cin, где ">" означает быстрее.

В этом посте я развею и подтвержу некоторые мифы и дам пару рекомендаций.
Читать полностью »

image
(типичное утро понедельника)

Однажды, я решил сделать маленький костылик, чтобы не пичкать свой код free вызовами. Было решено написать аналог auto-release pool’a для чистого С (который может далее быть портирован куда угодно). Читать полностью »

Не так давно Facebook объявил про открытие доступа к своему проекту Proxygen. Этот проект включает базовый код на C++ и абстракции HTTP, используемые в Facebook.
Компания открыла лишь малую часть своего кода за последние месяцы, большинство из него ориентировано на мобильных разработчиков. Данный анонс довольно интересен по многим причинам так как будет полезен широкому кругу разработчиков.

Facebook открывает доступ к проекту Proxygen - 1Читать полностью »

Доброго времени суток,

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

Предыстория

В своем проекте мы активно используем отечественное геометрическое ядро C3D Kernel. Эта библиотека предоставляет большое количество классов для работы с кривыми, телами, поверхностями и т.п. Эти классы имеют сложную структуру и в процессе отладки приложения, используя стандартные средства визуализации Visual Studio, трудно понять, какая, например, поверхность хранится в конкретной переменной. А при отладке сложных алгоритмов очень важно понимать, что происходит с объектом на каждом шаге алгоритма.

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

Продолжая хорошую традицию «раскрытия секретов» победителей ежегодного конкурса Russian AI Cup от Mail.Ru, представляю вниманию всех интересующихся эту статью. Описывать механику игрового мира и прочие правила я не буду, если же вдруг найдутся интересующиеся данной статьей, но не знающие правил, то они смогут найти их на официальной странице чемпионата.

Russian AI Cup 2014: стратегия победителя

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

image
(здесь должна быть картинка со строками, наверное)

RCString– это мини-контейнер для хранения 0-терминированных С-строк.
Сегодня для меня маленький праздник, т.к. число строк в RCString.c стало 533, т.е. это побило мой рекорд с RArray в 491 строку. Теперь RCString.c самый длинный файл в foundation.
Далее лирика (и исходники конечно же) о том, что я хотел сделать, и что я сделал.
Читать полностью »


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