4 ms·
For me it was about 2012. Herb Sutter (at MS) wrote his famous "Welcome to the jungle" article (http://herbsutter.com/welcome-to-the-jungle http://herbsutter.c
by petke 11y ago
For me it was about 2012.
Herb Sutter (at MS) wrote his famous "Welcome to the jungle" article (http://herbsutter.com/welcome-to-the-jungle http://herbsutter.com/welcome-to-the-jungle).
It seemed if anyone was adapting, their platform, development tools, and languages to match the revolution in hardware, it was MS.
(Given this revolution, on the language side MS changed focus from managed languages to the previously neglected native C++)
- _pmf_ 11y ago> It seemed if anyone was adapting, their platform, development tools, and languages to match the revolution in hardware, it was MS. C#'s async/await certainly the most accessible way of doing asynchronous operations in any mainstream language. The same for PLINQ and (simple) parallelism. Clojure, a language that supposedly has concurrency as a main focus, is awkward and arcane in comparison.
- petke 11y agoAs I understand it some things managed languages have against them; The garbage collector. Even lock free garbage collectors require some synchronization. That doesn't scale well to many cores. Another things is that low level memory layout and alignment matters for users, to avoid false sharing etc. In managed languages you end up fighting a system that tries to hide low level things like this from you. Finally managed languages have ref semantic and therefore use a lot of pointers under the hood. However the data layout that is the cache friendliest is contiguous memory, so the core can predict and pre fetch the next values into cache. A core that has to chase down pointers all over the memory address get a lot of cache misses.