
Life 3.0: Being Human in the Age of Artificial Intelligence
Max Tegmark, Rob Shapiro, et al.
4.5 on Amazon
12 HN comments

Quantum Computing: An Applied Approach
Jack D. Hidary
4.5 on Amazon
11 HN comments

UNIX and Linux System Administration Handbook
Evi Nemeth, Garth Snyder, et al.
4.7 on Amazon
11 HN comments

Practical Malware Analysis: The Hands-On Guide to Dissecting Malicious Software
Michael Sikorski and Andrew Honig
4.7 on Amazon
11 HN comments

Trust Me, I'm Lying: Confessions of a Media Manipulator
Ryan Holiday and Penguin Audio
4.4 on Amazon
11 HN comments

Building Microservices: Designing Fine-Grained Systems
Sam Newman
4.5 on Amazon
10 HN comments

C++ Concurrency in Action
Anthony Williams
4.7 on Amazon
10 HN comments

Serious Cryptography: A Practical Introduction to Modern Encryption
Jean-Philippe Aumasson
4.7 on Amazon
10 HN comments

Theory of Fun for Game Design
Raph Koster
4.3 on Amazon
10 HN comments

The Model Thinker: What You Need to Know to Make Data Work for You
Scott E. Page, Jamie Renell, et al.
4.5 on Amazon
10 HN comments

Making Things Happen: Mastering Project Management (Theory in Practice)
Scott Berkun
4.4 on Amazon
10 HN comments

Sandworm: A New Era of Cyberwar and the Hunt for the Kremlin's Most Dangerous Hackers
Andy Greenberg, Mark Bramhall, et al.
4.7 on Amazon
10 HN comments

Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services
Brendan Burns
4.3 on Amazon
9 HN comments

High Performance Python: Practical Performant Programming for Humans
Micha Gorelick and Ian Ozsvald
4.8 on Amazon
9 HN comments

JavaScript: The Definitive Guide: Master the World's Most-Used Programming Language
David Flanagan
4.7 on Amazon
9 HN comments
percentceronApr 6, 2020
lenkiteonSep 7, 2020
nisaonFeb 23, 2014
rramadassonJuly 4, 2019
I am ambivalent on "Modern C++"(they have made it more complicated and invented a new language) and still ramping up on its features and nuances. Haven't really found any insightful book so far (except for "C++ Concurrency in Action" by Anthony Williams which of course is specialized).
However i recently found "Modern C++ Programming Cookbook" by Marius Bancila which seems like a very nice catalog of all the C++11/14/17 features. This seems to go well together with Stroustrup's book.
ndesaulniersonMay 20, 2015
Agree.
At which point, C gives you a huge advantage. Sure, you can hand write assembly, but I bet the libc implementation you're linking against has optimized to death with intimate knowledge of timing sequences and inner state of the processor from the processor vendor. I would expect a company like Intel to contribute patches to glibc (GNU libc) based on running functions from the standard library on a very very expensive FPGA (or just expensive-software simulation of hardware).
Memory ordering operations are an advanced topic; I have a copy of C++ Concurrency in Action, currently sitting on my bookshelf, that has a chapter explaining the concepts. Should be a fascinating read!
habermanonJan 24, 2016
You mention of caches makes me realize that a single-reader single-writer queue can probably also be optimized by putting the head pointer and the tail pointer on different cache lines. The reader and writer can cache the other's value on their own page, and only reload it when the queue otherwise looks full or empty, respectively. This should allow the reader and writer to act without needing to synchronize cache lines for many operations.
DavidbrczonJuly 20, 2016
- Accelerated C++: Practical Programming. A good quick tour of C++98
- Effective C++, More Effective C++,Exceptional C++, C++ Coding Standard
Many patterns to follow or be aware of. More generally, any book by Herb Sutter.
Good recent books (msut have !!):
- Effective Modern C++ (same as previous, but more focused on C++11 and 14)
- Programming: Principles and Practice Using C++ (A general introduction book by Stroustrup on programming using C++)
- C++ Primer (The spiriual son of Accelerated C++, the best introduction book about C++ I know)
The textbook and more specific books :
- The C++ Programming Language (the ultimate C++ textbook)
- C++ Template the complete Guide (focused on templates)
- C++ Concurrency in Action (focused on threading)
In a second time, have also a look at some libraries like boost (many specific purpose components), Qt (huge framework for making GUI), Poco.
- Website
https://isocpp.org/ (the official website for the language).
- Have a look at usenet (comp.lang.c++ and comp.lang.c++.moderated), CppCon's videos, Meeting C++ videos and Channel 9
ndesaulniersonDec 29, 2015
"If there's other threads working here, atomic compare and swap this pointer to the free list, otherwise last one out clean up."
Take a look at some of the code from Chapter 7 from Anthony Williams "C++ Concurrency in Action" [0].
[0] https://manning-content.s3.amazonaws.com/download/0/78f6c43-...
gusmdonDec 8, 2017
My point of view is that, where I'm using Qt anyway, I might as well use its threading library for the very nice support it provides for other things such as signal-slot connections across threads.
alpattersonOct 18, 2012
Anthony William's book "C++ Concurrency in Action" gave me the impression that implementations of std::async would stop spawning new threads at some implementation defined limit based on harware concurrency levels. Instead, delay execution or switch to serial for extra tasks.