C++ дайджест № 3: Управління пам’яттю та алгоритми
Про управління пам’яттю, алгоритми та структури даних, а також трошки історії алгоритмів та ОС Unix, CppCon 2015 та інше.
Алгоритми та структури даних
Як написати константний вираз для обчислення натурального логарифма на C++.
Gorilla — архітектура швидкої, масштабованої бази даних для роботи з часовими рядами в пам’яті — наукова стаття від працівників Facebook Inc.
Відео
Jonathan Blow — роздуми про те, яким повинна бути нова мова програмування для ігор. Відео достатньо старе, але варте уваги. Автор дискутує про фундаментальні проблеми C++, а також аналізує, які альтернативи пропонують «нові» мови програмування.
CppCon 2015: Scott Wardle: «Пам’ять та відлагоджування коду на C++ в Electronic Arts».
Frameworks, Tools & Services
Amazon випустив AWS SDK для C++ після багатьох років розробки. Як заявляють програмісти — для розробників ігор. SDK інтегрується з STL, підтримує стандарт C++11 та багато іншого.
ConcurrencyKit — бібліотека, що реалізує примітиви, неблокуючі структури даних та безпечний доступ до пам’яті на С.
Jim Springfield про те, як Microsoft збирається «омолодити» свій C/C++ компілятор.
Модульне тестування Embedded C додатків за допомогою Ceedling.
Нарешті і в C++ світі почали з’являтись достойні менеджери пакетів. Прикладом є свіжий qpm.io — Qt Package Manager. А тут — анонс.
Object-Oriented Design
Реалізація шаблону проектування Dependency Injection на C++ з використанням Variadic Templates.
Техніки об’єктно-орієнтованої розробки на С, а також генератор boilerplate-коду.
Stupid Template Tricks: Template Assembler.
Управління пам’яттю
ManagedC — цікава наукова стаття про те, як організувати memory-safe виконання C коду на JVM.
Joint Allocations in C++ - стаття про те, як уникати сегментації пам’яті при роботі з комплексними об’єктами.
Нові елементи С++ - конструктори переміщення та оператор присвоєння з переміщенням.
Eli Bendersky про організацію видалення деструкторів та віртуальну таблицю операторів в картинках.
Linux Insights — як Linux запускає і виконує програму. Четверта стаття циклу. Там же є посилання на інші статті (будуть корисні системним розробникам та просто розробникам додатків під Linux).
buldozer00: Stack, Heap, and Pool — реалізація пула пам’яті на C++11.
Alexander Krizhanovskiy: Швидкі алокатори пам’яті: Boost, nGinX, та Tempesta FW.
Nicole Hemsoth про те, що немає такої речі, як продуктивність роботи пам’яті.
Pet Monster Projects
Pierre Langlois з презентацією про те, як інтегрувати KDBus в Android.
Folly Futures — реалізація Futures для concurrency від Facebook.
Вступ до розробки ядра Linux, або стаття про те, як долучитись до проекту.
На Cassandra Summit показали ScyllaDB — Cassandra, переписана на С++, що працює в 10 разів швидше.
Трошки історії
Кращі алгоритми
Для цінувальників антикваріату: «відреставровані» коди першої версії ОС Unix.
Інше
C++ Frequently asked Questions & Answers опубліковані на Github.
C++ Core Guidelines — рекомендації по розробці на C++ під редакцією Bjarne Stroustrup та Herb Sutter.
Andrew Chambers: Calling Conventions are hard та невеличка утиліта ABIFUZZ.
Часткове виконання байт-коду з використанням C++ шаблонів.
Herb Sutter: CppCon 2015, day 2: «Writing Good C++14... By Default».
Benny Kerr для MSDN magazine про корутіни в Visual C++ 2015.
Шютки
— Why do you call this version of software ’beta’?
— Coz it’s beta than nothing.
Bud представив холодильник, в якому не закінчується пиво :)
← Попередній випуск: C++ дайджест #2