Source blog: Sutter's Mill
Pre-ACCU interview video is live
On Friday, I sat down with Kevin Carpenter to do a short (12-min) interview about my ACCU talk coming up on April 17, and other topics. Apologies in advance for my voice quality: I’ve been sick with some bug since just after the Tokyo ISO meeting, and right after this interview I lost my voice … Continue reading Pre-ACCU interview video is live →
Effective Concurrency course & upcoming talks
With the winter ISO meeting behind us, it’s onward into spring conference season! ACCU Conference 2024. On April 17, I’ll be giving a talk on C++’s current and future evolution, where I plan to talk about safety based on my recent essay C++ safety, in context,” and progress updates on cppfront. I’m also looking forward … Continue reading Effective Concurrency course & upcoming talks →
Trip report: Winter ISO C++ standards meeting (Tokyo, Japan)
Moments ago, the ISO C++ committee completed the closing Saturday plenary session of its third meeting of C++26, held in Tokyo, Japan. No typo: It is now Saturday morning, Tokyo time. Many of you may see this on Friday in your time zone, and this blog post will likely be datestamped Friday. Thank you to … Continue reading Trip report: Winter ISO C++ standards meeting (Tokyo, Japan) →
C++ safety, in context
Scope. To talk about C++?s current safety problems and solutions well, I need to include the context of the broad landscape of security and safety threats facing all software. I chair the ISO C++ standards committee and I work for Microsoft, but these are my personal opinions and I hope they will invite more dialog … Continue reading C++ safety, in context →
Effective Concurrency: Live online course in April
I generally give one or two courses a year on C++ and related technologies. This year, on April 22-25, I’ll be giving a live online public course for four half-days, on the topic of high-performance low-latency coding in C++?? and the early registration discount is available for a few more days until this Thursday: Effective … Continue reading Effective Concurrency: Live online course in April →
Trip report: Autumn ISO C++ standards meeting (Kona, HI, USA)
Today, the ISO C++ committee completed its second meeting of C++26, held in Kona, HI, USA. Our hosts, Standard C++ Foundation and WorldQuant, arranged for high-quality facilities for our six-day meeting from Monday through Saturday. We had over 170 attendees, about two-thirds in-person and the others remote via Zoom, formally representing 21 nations. Also, at … Continue reading Trip report: Autumn ISO C++ standards meeting (Kona, HI, USA) →
My new CppCon talk is on YouTube: ?Cooperative C++ Evolution ? Toward a TypeScript for C++?
My Thursday CppCon talk is now online. Note: There’s already a Reddit thread for it, so if you want to comment on the video I suggest you use that thread instead of creating a new one. At CppCon 2022, I argued for why we should try to make C++ 10x simpler and 50x safer, and this … Continue reading My new CppCon talk is on YouTube: “Cooperative C++ Evolution – Toward a TypeScript for C++” →
cppfront: Autumn update
Since the 2022-12-31 year-end mini-update and the 2023-04-30 spring update, progress has continued on cppfront. (If you don?t know what this personal project is, please see the CppCon 2022 talk on YouTube for an overview, and the CppNow 2023 talk on YouTube for an interim update.) I’ll be giving a major update next week at CppCon. I hope … Continue reading cppfront: Autumn update →
My C++ Now 2023 talk is online: ?A TypeScript for C++?
Thanks again to C++ Now for inviting me to speak this year in glorious Aspen, Colorado, USA! It was nice to see many old friends again there and make a few new ones too. The talk I gave there was just posted on YouTube, you can find it here: At CppCon 2022, I argued for … Continue reading My C++ Now 2023 talk is online: “A TypeScript for C++” →
Trip report: Summer ISO C++ standards meeting (Varna, Bulgaria)
Minutes ago, the ISO C++ committee finished its meeting in-person in Varna, Bulgaria and online via Zoom, where we formally began adopting features into C++26. Our hosts, VMware and Chaos, arranged for high-quality facilities for our six-day meeting from Monday through Saturday. We had nearly 180 attendees, about two-thirds in-person and the others remote via … Continue reading Trip report: Summer ISO C++ standards meeting (Varna, Bulgaria) →
cppfront: Spring update
Since the year-end mini-update, progress has continued on cppfront. (If you don?t know what this personal project is, please see the CppCon 2022 talk on YouTube.) This update covers Acknowledgments, and highlights of what’s new in the compiler and language since last time, including: Acknowledgments: 267 issues, 128 pull requests, and new collaborators I want to … Continue reading cppfront: Spring update →
Interview on CppCast
A few days ago I recorded CppCast episode 357. Thanks to Timur Doumler and Phil Nash for inviting me on their show ? and for continuing CppCast, which was so wonderfully founded by Rob Irving and Jason Turner! This time, we chatted about news in the C++ world, and then about my Cpp2 and cppfront … Continue reading Interview on CppCast →
C++23 ?Pandemic Edition? is complete (Trip report: Winter ISO C++ standards meeting, Issaquah, WA, USA)
On Saturday, the ISO C++ committee completed technical work on C++23 in Issaquah, WA, USA! We resolved the remaining international comments on the C++23 draft, and are now producing the final document to be sent out for its international approval ballot (Draft International Standard, or DIS) and final editorial work, to be published later in … Continue reading C++23 ?Pandemic Edition? is complete (Trip report: Winter ISO C++ standards meeting, Issaquah, WA, USA) →
Cpp2 and cppfront: Year-end mini-update
As we close out 2022, I thought I’d write a short update on what’s been happening in Cpp2 and cppfront. If you don’t know what this personal project is, please see the CppCon 2022 talk on YouTube. Most of this post is about improvements I’ve been making and merging over the year-end holidays, and an … Continue reading Cpp2 and cppfront: Year-end mini-update →
Trip report: Autumn ISO C++ standards meeting (Kona)
A few minutes ago, the ISO C++ committee completed its second-to-last meeting of C++23 in Kona, HI, USA. Our host, the Standard C++ Foundation, arranged for high-quality facilities for our six-day meeting from Monday through Saturday. We currently have 26 active subgroups, nine of which met in six parallel tracks throughout the week; some groups … Continue reading Trip report: Autumn ISO C++ standards meeting (Kona) →
Weekend update: Operator and parsing design notes
Thanks again for all the bug reports and feedback for Cpp2 and cppfront! As I mentioned last weekend, I?ve started a wiki with ?Design notes? about specific aspects of the design to answer why I?ve made them they way they currently are? basic rationale, alternatives considered, in a nutshell, as quick answers to common questions I encounter repeatedly. … Continue reading Weekend update: Operator and parsing design notes →
Cpp2 design notes: UFCS, ?const?, ?unsafe?, and (yes) ABI
Thanks to everyone who has offered bug reports and constructive suggestions for Cpp2 and cppfront. To answer common questions I encounter repeatedly, I’ve started a wiki with “Design notes” about specific aspects of the design to answer why I’ve made them they way they currently are… basic rationale, alternatives considered, in a nutshell. There are … Continue reading Cpp2 design notes: UFCS, “const”, “unsafe”, and (yes) ABI →
Something I implemented today: ?is void?
[Edited to add pre-publication link to next draft of P2392, revision 2] Brief background As I presented at CppCon 2021 starting at 11:15, I’m proposing is (a general type or value query) and as (a general cast, for only the safe casts) for C++ evolution. The talk, and the ISO C++ evolution paper P2392 it’s … Continue reading Something I implemented today: “is void” →
My CppCon 2022 talk is online: ?Can C++ be 10x simpler & safer ? ??
It was great to see many of you at CppCon, in person and online! It was a really fun conference this year, and the exhibitor hall felt crowded again which was a good feeling as we all start traveling more again. The talk I gave on Friday is now on YouTube. In it I describe … Continue reading My CppCon 2022 talk is online: “Can C++ be 10x simpler & safer … ?” →
My CppCon 2021 talk video is online
Whew — I’m now back from CppCon, after remembering how to travel. My talk video is now online. If you haven’t already seen this via JetBrains’ CppCon 2021 video page or the Reddit post, here’s a link: Please direct technical comments to the Reddit thread and I’ll watch for them there and respond to as … Continue reading My CppCon 2021 talk video is online →
Trip report: Summer 2021 ISO C++ standards meeting (virtual)
On Monday, the ISO C++ committee held its third full-committee (plenary) meeting of the pandemic and adopted a few more features and improvements for draft C++23. We had representatives from 17 voting nations at this meeting: Austria, Bulgaria, Canada, Czech Republic, Finland, France, Germany, Israel, Italy, Netherlands, Poland, Russia, Slovakia, Spain, Switzerland, United Kingdom, and … Continue reading Trip report: Summer 2021 ISO C++ standards meeting (virtual) →
GotW #102 Solution: Assertions and ?UB? (Difficulty: 7/10)
This special Guru of the Week series focuses on contracts. Now that we have considered assertions, postconditions, and preconditions in GotWs #97-101, let?s pause and reflect: To what extent does a failed contract imply ?UB?? either the Hidden Dragon of Undefined Behavior, or the Crouching Tiger of Unspecified Behavior? 1. Briefly, what is the difference … Continue reading GotW #102 Solution: Assertions and ?UB? (Difficulty: 7/10) →
GotW #102: Assertions and ?UB? (Difficulty: 7/10)
This special Guru of the Week series focuses on contracts. Now that we have considered assertions, postconditions, and preconditions in GotWs #97-101, let?s pause and reflect: To what extent does a failed contract imply ?UB?? either the Hidden Dragon of Undefined Behavior, or the Crouching Tiger of Unspecified Behavior? JG Question 1. Briefly, what is … Continue reading GotW #102: Assertions and ?UB? (Difficulty: 7/10) →
GotW #101 Solution: Preconditions, Part 2 (Difficulty: 7/10)
This special Guru of the Week series focuses on contracts. We covered some basics of preconditions in GotW #100. This time, let?s see how we can use preconditions in some practical examples? 1. Consider these functions, expanded from an article by Andrzej Krzemie?ski: [1] ? How many ways could a caller of each function get … Continue reading GotW #101 Solution: Preconditions, Part 2 (Difficulty: 7/10) →
GotW #101: Preconditions, Part 2 (Difficulty: 7/10)
This special Guru of the Week series focuses on contracts. We covered some basics of preconditions in GotW #100. This time, let?s see how we can use preconditions in some practical examples? JG Question 1. Consider these functions, expanded from an article by Andrzej Krzemie?ski: [1] How many ways could a caller of each function … Continue reading GotW #101: Preconditions, Part 2 (Difficulty: 7/10) →
GotW #100 Solution: Preconditions, Part 1 (Difficulty: 8/10)
This special Guru of the Week series focuses on contracts. We?ve seen how postconditions are directly related to assertions (see GotWs #97 and #99). So are preconditions, but that in one important way makes them fundamentally different. What is that? And why would having language support benefit us even more for writing preconditions more than … Continue reading GotW #100 Solution: Preconditions, Part 1 (Difficulty: 8/10) →
Trip report: Winter 2021 ISO C++ standards meeting (virtual)
Today, the ISO C++ committee held its second full-committee (plenary) meeting of the pandemic and adopted a few more features and improvements for draft C++23. A record of 18 voting nations sent representatives to this meeting: Austria, Bulgaria, Canada, Czech Republic, Finland, France, Germany, Israel, Italy, Japan, Netherlands, Poland, Romania, Russia, Spain, Switzerland, United Kingdom, … Continue reading Trip report: Winter 2021 ISO C++ standards meeting (virtual) →
GotW #100: Preconditions, Part 1 (Difficulty: 8/10)
This special Guru of the Week series focuses on contracts. We?ve seen how postconditions are directly related to assertions (see GotWs #97 and #99). So are preconditions, but that in one important way makes them fundamentally different. What is that? And why would having language support benefit us even more for writing preconditions more than … Continue reading GotW #100: Preconditions, Part 1 (Difficulty: 8/10) →
GotW #99 Solution: Postconditions (Difficulty: 7/10)
This special Guru of the Week series focuses on contracts. Postconditions are directly related to assertions (see GotW #97)? but how, exactly? And since we can already write postconditions using assertions, why would having language support benefit us more for writing postconditions more than for writing (ordinary) assertions? 1. What is a postcondition, and how … Continue reading GotW #99 Solution: Postconditions (Difficulty: 7/10) →
GotW #99: Postconditions (Difficulty: 7/10)
This special Guru of the Week series focuses on contracts. Postconditions are directly related to assertions (see GotW #97)? but how, exactly? And since we can already write postconditions using assertions, why would having language support benefit us more for writing postconditions more than for writing (ordinary) assertions? JG Question 1. What is a postcondition, … Continue reading GotW #99: Postconditions (Difficulty: 7/10) →
GotW #98 Solution: Assertion levels (Difficulty: 5/10)
This special Guru of the Week series focuses on contracts. We covered basic assertions in GotW #97? but not all asserted conditions are created equal. Given some assertion facility that can be used like this: 1. Give one example each of an asserted condition whose run-time evaluation is: a) super cheap It?s hard to find … Continue reading GotW #98 Solution: Assertion levels (Difficulty: 5/10) →
GotW #98: Assertion levels (Difficulty: 5/10)
This special Guru of the Week series focuses on contracts. We covered basic assertions in GotW #97? but not all asserted conditions are created equal. JG Questions Given some assertion syntax: 1. Give one example each of an asserted condition whose run-time evaluation is: a) super cheap b) arbitrarily expensive Guru Questions 2. What does … Continue reading GotW #98: Assertion levels (Difficulty: 5/10) →
GotW #97 Solution: Assertions (Difficulty: 4/10)
Assertions have been a foundational tool for writing understandable computer code since we could write computer code? far older than C?s assert() macro, they go back to at least John von Neumann and Herman Goldstine (1947) and Alan Turing (1949). [1,2] How well do we understand them? exactly? 1. What is an assertion, and what … Continue reading GotW #97 Solution: Assertions (Difficulty: 4/10) →
GotW #97: Contracts, part 1 ? Assertions and postconditions
As WG21 continues work on contracts, I thought I?d join other WG21ers like Andrzej Krzemie?ski who are writing ?explainer? blog posts about various considerations related to contracts, and to draw attention to the existing work and papers like P0542. Assertions have been a foundational tool for writing understandable computer code since we could write computer … Continue reading GotW #97: Contracts, part 1 ? Assertions and postconditions →
Firsts in 2020 (or, A little dose of good news)
2020 has been mostly terrible. That includes for the C++ committee and many of our communities, where just this month we lost Beman Dawes. Beman was one of the most important and influential C++ experts in the world, and made his many contributions mostly behind the scenes. I and everyone else who has ever benefited … Continue reading Firsts in 2020 (or, A little dose of good news) →
Video: AMA @ C++ Russia
Back in early July, I did a wide-ranging “ask me anything” Q&A session at C++ Russia. The video is now available — I hope you enjoy it. Thanks again to C++ Russia for inviting me to their great online event!
Trip report: Autumn ISO C++ standards meeting (virtual)
On Monday, the ISO C++ committee completed its final full-committee (plenary) meeting of 2020 and adopted the first changes to the C++23 working draft, including a few new features. This was a first in several ways: It was our first-ever virtual plenary, held online via Zoom. It was also our first-ever plenary meeting that wasn?t … Continue reading Trip report: Autumn ISO C++ standards meeting (virtual) →
My CppCon 2020 talk video is online
This video actually posted about two weeks ago, but… busy! Sorry. Here it is, I hope you enjoy it. Note that as of this writing the Clang-based prototype implementation on Godbolt is not yet complete, in particular it still needs to implement out and forward parameters.
My plans at CppCon
It’s hard to believe CppCon 2020 is nearly here… in fact, pre-conference tutorials are already in progress. I’ll be at the conference throughout the week in the hallways and session rooms. Here are some of the times I’ll be participating on the actual program: Sunday 1300 MDT: Organizer’s Panel. In the middle of the Welcome … Continue reading My plans at CppCon →
C++20 approved, C++23 meetings and schedule update
A couple of interesting things happened in the ISO C++ world this week… C++20 passed unanimously, on track to publish later this year On Friday September 4, C++20’s DIS (Draft International Standard) ballot ended, and it passed unanimously. This means that C++20 has now received final technical approval and is done with ISO balloting, and … Continue reading C++20 approved, C++23 meetings and schedule update →
C++ on Sea video posted: Bridge to NewThingia (extended)
Two weeks ago, I had the privilege of speaking at the C++ on Sea 2020 virtual conference. The video of my talk has now been posted — it’s an extended version of the talk I gave at DevAroundTheSun in April. You can find it here: Thanks very much to Phil Nash and all the other … Continue reading C++ on Sea video posted: Bridge to NewThingia (extended) →
AMA @cpp_russia on July 2
C++ Russia is an online event this year, and I’m happy to be one of many C++ folks to be invited to participate. On July 2 I’ll be doing a Q&A session, which is the first time I’m doing an “AMA” — no talk, just Q&A and discussion. I’m looking forward to it, and to … Continue reading AMA @cpp_russia on July 2 →
Talk video available: Bridge to NewThingia @DevAroundTheSun
Last month, I gave a new talk “Bridge to NewThingia” at DevAroundTheSun. Using examples from the evolution of programming languages and a few other tech products, it analyzes some key design factors that let you confidently answer the question, “why will your NewThing succeed, when a lot of things that look like it have failed … Continue reading Talk video available: Bridge to NewThingia @DevAroundTheSun →
The New York ISO C++ meeting is postponed
A few minutes ago, I announced to the ISO C++ committee that all our meetings originally planned for 2020 have been postponed. We had already postponed the Varna meeting originally planned for June 1-6, and earlier today INCITS (the U.S. national body) announced that it was banning all face-to-face standards meetings for the rest of … Continue reading The New York ISO C++ meeting is postponed →
Of feedback, and little things
I try hard to always ask for feedback on drafts of my talks and articles, and I always learn important things from the responses, including especially things I omitted but should include so as to pre-answer audience questions. Just like the best support call is the one the customer doesn’t have to make because they … Continue reading Of feedback, and little things →
Speaking at DevAroundTheSun
Next week, I’m honored to be part of DevAroundTheSun, a live 24-hour global event for COVID-19 relief that starts on May 12 at 12:00 UTC. It’s like LiveAid or Lady Gaga’s recent One World: #TogetherAtHome, but for developers. You can watch on Twitch and YouTube, and all the talks are relatively short at 25 minutes… … Continue reading Speaking at DevAroundTheSun →
When the hot loop?s done: Four quick tips for high throughput
These short tips are useful to remember when writing high-throughput code. You may already know most of them, and if so then please spread the word ? friends don?t let friends write performance bottlenecks. In a high-throughput hot loop: Avoid holding locks or other resources, unless you know it won?t block another performance-sensitive thread. Definitely … Continue reading When the hot loop?s done: Four quick tips for high throughput →
The Varna ISO C++ meeting is postponed
Yesterday morning, I announced to the committee that the next ISO WG21 (C++) meeting originally planned for June 1-6 in Varna, Bulgaria, has been postponed due to the covid-19 pandemic. We appreciate very much all the hard work and expense that our hosts, VMware and Chaos Group, have invested in welcoming us to their beautiful … Continue reading The Varna ISO C++ meeting is postponed →
References, simply
References are for parameter passing, including range-for. Sometimes they’re useful as local variables, but pointers or structured bindings are usually better. Any other use of references typically leads to endless design debates. This post is an attempt to shed light on this situation, and perhaps reduce some of the time spent on unresolved ongoing design … Continue reading References, simply →
Move, simply
C++ “move” semantics are simple, but they are still widely misunderstood. This post is an attempt to shed light on that situation. Thank you to the following for their feedback on drafts of this material: Howard Hinnant (lead designer and author of move semantics), Jens Maurer, Arthur O’Dwyer, Geoffrey Romer, Bjarne Stroustrup, Andrew Sutton, Ville … Continue reading Move, simply →
Trip report: Winter ISO C++ standards meeting (Prague)
A few minutes ago, the ISO C++ committee completed its final meeting of C++20 in Prague, Czech Republic. Our host, Avast Software, arranged for spacious and high-quality facilities for our six-day meeting from Monday through Saturday. The extra space was welcome, because we had a new record of 252 attendees. We currently have 23 active … Continue reading Trip report: Winter ISO C++ standards meeting (Prague) →
Last night's talk video is online: Quantifying C++'s accidental complexity, and what we really can do about it
The ISO C++ committee is here in Prague this week to finish C++20, and the meeting hosts Avast Software also arranged a great C++ meetup last night where over 300 people came out to see Bjarne Stroustrup, Tony Van Eerd, and me give talks. The videos are already online, see below — they’re really high … Continue reading Last night's talk video is online: Quantifying C++'s accidental complexity, and what we really can do about it →
Trip report: Autumn ISO C++ standards meeting (Belfast)
A few minutes ago, the ISO C++ committee completed its autumn meeting in Belfast, Northern Ireland, hosted with thanks by clearpool.io, Archer-Yates, Microsoft, C++ Alliance, MCS Group, Instil, and the Standard C++ Foundation. As usual, we met for six days Monday through Saturday, and we had about 200 attendees. We now have 22 active subgroups, … Continue reading Trip report: Autumn ISO C++ standards meeting (Belfast) →
GotW-ish Solution: The ?clonable? patter
My CppCon 2019 talk video is online
My CppCon 2019 talk is now available on YouTube, and the slides will soon be available here. I hope you enjoy it.
GotW-ish: The ?clonable? pattern
Yesterday, I received this question from a distinguished C++ expert who served on the ISO C++ committee for many years. The email poses a decades-old question that still has the classic roll-your-own answer in C++ Core Guidelines #C.130, and basically asks whether we’ve made significant progress toward automating this pattern in modern C++ compared to … Continue reading GotW-ish: The ‘clonable’ pattern →
Q&A: Does string::data() return a pointer valid for size() elements, or capacity() elements?
A reader asked: In C++17, for std::string::data(), is the returned buffer valid for the range [data(), data() + size()), or is it valid for [data(), data + capacity())? The latter seems more intuitive and what I think most people would expect reserve() to create given the non-const version of data() since C++17. … and then … Continue reading Q&A: Does string::data() return a pointer valid for size() elements, or capacity() elements? →
My favorite work-week of 2019
I just can’t get enough of this short video, combining interviews shot at last year’s CppCon with shots of our new “home” location that we’ll be enjoying for the first time two weeks from now. Please enjoy it — this is an excellent representation of what CppCon is like. Those of you who know me … Continue reading My favorite work-week of 2019 →
My favorite work-week of 2019
I just can’t get enough of this short video, combining interviews shot at last year’s CppCon with shots of our new “home” location that we’ll be enjoying for the first time two weeks from now. Please enjoy it — this is an excellent representation of what CppCon is like. Those of you who know me … Continue reading My favorite work-week of 2019 →
Survey results: Your ?top five? ISO C++ feature proposals
Today I collated and analyzed the results of the survey I posted two weeks ago. I presented you with a daunting unsorted list of ~300 eye-numbing paper titles, and still 289 of you responded with ~1,200 total votes (not everyone picked five things) many of which contained thoughtful ?how I would use it? verbatims. Thank … Continue reading Survey results: Your “top five” ISO C++ feature proposals →
Survey results: Your ?top five? ISO C++ feature proposals
Today I collated and analyzed the results of the survey I posted two weeks ago. I presented you with a daunting unsorted list of ~300 eye-numbing paper titles, and still 289 of you responded with ~1,200 total votes (not everyone picked five things) many of which contained thoughtful ?how I would use it? verbatims. Thank … Continue reading Survey results: Your “top five” ISO C++ feature proposals →
Trip report: Summer ISO C++ standards meeting (Cologne)
Obligatory comment: The C++20 Eagle has wings. At noon today, July 20 2019, the ISO C++ committee completed its summer meeting in Cologne, Germany, hosted with thanks by Think-Cell, SIGS Datacom, SimuNova, Silexica, Meeting C++, Josuttis Eckstein, Xara, Volker Dörr, Mike Spertus, and the Standard C++ Foundation. As usual, we met for six days Monday … Continue reading Trip report: Summer ISO C++ standards meeting (Cologne) →
Trip report: Summer ISO C++ standards meeting (Cologne)
Obligatory comment: The C++20 Eagle has wings. At noon today, July 20 2019, the ISO C++ committee completed its summer meeting in Cologne, Germany, hosted with thanks by Think-Cell, SIGS Datacom, SimuNova, Silexica, Meeting C++, Josuttis Eckstein, Xara, Volker Dörr, Mike Spertus, and the Standard C++ Foundation. As usual, we met for six days Monday … Continue reading Trip report: Summer ISO C++ standards meeting (Cologne) →
Draft FAQ: Why does the C++ standard ship every three years?
WG21 has a strict schedule (see P1000) by which we ship the standard every three years. We don?t delay it. Around this time of each cycle, we regularly get questions about ?but why so strict??, especially because we have many new committee members who aren?t as familiar with our history and the reasons why we … Continue reading Draft FAQ: Why does the C++ standard ship every three years? →
Draft FAQ: Why does the C++ standard ship every three years?
WG21 has a strict schedule (see P1000) by which we ship the standard every three years. We don?t delay it. Around this time of each cycle, we regularly get questions about ?but why so strict??, especially because we have many new committee members who aren?t as familiar with our history and the reasons why we … Continue reading Draft FAQ: Why does the C++ standard ship every three years? →
Your ?top five? ISO C++ feature proposals
The ISO C++ committee now regularly receives many more proposals than we can/should accept. For the meeting that begins this coming Monday, we have about 300 active technical papers, most targeting post-C++20. I now regularly get asked, including again a few hours ago, “how do we know which of these customers actually want and will use? … Continue reading Your “top five” ISO C++ feature proposals →
Your ?top five? ISO C++ feature proposals
The ISO C++ committee now regularly receives many more proposals than we can/should accept. For the meeting that begins this coming Monday, we have about 300 active technical papers, most targeting post-C++20. I now regularly get asked, including again a few hours ago, “how do we know which of these customers actually want and will use? … Continue reading Your “top five” ISO C++ feature proposals →
Guy Steele on designing a programming language for library building (OOPSLA ?98 keynote)
Classic, and timeless. (HT: Peter Sommerlad) Note that when he says “growing a language” he doesn’t mean literally the language itself — it’s not a talk about language evolution. Rather, he’s talking about enabling users to write rich and powerful abstractions in that language without having to go beg their language designer and compiler vendor … Continue reading Guy Steele on designing a programming language for library building (OOPSLA ’98 keynote) →
Guy Steele on designing a programming language for library building (OOPSLA ?98 keynote)
Classic, and timeless. (HT: Patricia Aas, Tony Van Eerd and Peter Sommerlad) Note that when he says “growing a language” he doesn’t mean literally the language itself — it’s not a talk about language evolution. Rather, he’s talking about enabling users to write rich and powerful abstractions in that language without having to go beg … Continue reading Guy Steele on designing a programming language for library building (OOPSLA ’98 keynote) →
A theme: Simplifying C++ (& CppCast podcast)
This week I was happy to join Rob Irving and Jason Turner on their great CppCast podcast. I chose “Simplifying C++” as the theme, because all of the active work I’ve chosen to do on C++ these days is on the common theme of simplifying how we teach, learn, and use C++… the “C++ UX” … Continue reading A theme: Simplifying C++ (& CppCast podcast) →
A theme: Simplifying C++ (& CppCast podcast)
This week I was happy to join Rob Irving and Jason Turner on their great CppCast podcast. I chose “Simplifying C++” as the theme, because all of the active work I’ve chosen to do on C++ these days is on the common theme of simplifying how we teach, learn, and use C++… the “C++ UX” … Continue reading A theme: Simplifying C++ (& CppCast podcast) →
EuroLLVM Lifetime talk by Gábor Horváth and Matthias Gehre
At CppCon 2018, I gave an update of my Lifetime analysis work that makes common cases of pointer/iterator/range/etc. dangling detectable at compile time (the spec is here in the C++ Core Guidelines GitHub repo). During that talk, we mentioned and demo’d two implementations: as a Visual C++ extension by Kyle Reed and Neil MacIntosh, and … Continue reading EuroLLVM Lifetime talk by Gábor Horváth and Matthias Gehre →
EuroLLVM Lifetime talk by Gábor Horváth and Matthias Gehre
At CppCon 2018, I gave an update of my Lifetime analysis work that makes common cases of pointer/iterator/range/etc. dangling detectable at compile time (the spec is here in the C++ Core Guidelines GitHub repo). During that talk, we mentioned and demo’d two implementations: as a Visual C++ extension by Kyle Reed and Neil MacIntosh, and … Continue reading EuroLLVM Lifetime talk by Gábor Horváth and Matthias Gehre →
ACCU talk video posted
Two weeks ago, I gave a talk at ACCU based on my paper P0709. The talk video was posted today: De-fragmenting C++: Making exceptions more affordable and usable [ACCU 2019] Thanks again to ACCU for inviting me and recording the talk, and for all the fun interactions and conversations with everyone at the conference!
ACCU talk video posted
Two weeks ago, I gave a talk at ACCU based on my paper P0709. The talk video was posted today: De-fragmenting C++: Making exceptions more affordable and usable [ACCU 2019] Thanks again to ACCU for inviting me and recording the talk, and for all the fun interactions and conversations with everyone at the conference!
Trip report: Winter ISO C++ standards meeting (Kona)
A few minutes ago, the ISO C++ committee completed its winter meeting in Kona, HI, USA, hosted with thanks by Plum Hall, NVIDIA, and the Standard C++ Foundation. As usual, we met for six days Monday through Saturday, including most evenings. This and the previous meeting were the biggest ISO C++ meetings in our 29-year … … Continue reading →
Trip report: Winter ISO C++ standards meeting (Kona)
A few minutes ago, the ISO C++ committee completed its winter meeting in Kona, HI, USA, hosted with thanks by Plum Hall, NVIDIA, and the Standard C++ Foundation. As usual, we met for six days Monday through Saturday, including most evenings. This and the previous meeting were the biggest ISO C++ meetings in our 29-year … Continue reading Trip report: Winter ISO C++ standards meeting (Kona) →
Trip report: Fall ISO C++ standards meeting (San Diego)
On Saturday November 10, the ISO C++ committee completed its fall meeting in San Diego, California, USA, hosted with thanks by Qualcomm. This was the biggest ISO C++ meeting in our 29-year history, with some 180 people at the meeting, representing 12 nations. For more details about our size increase, including how we adapted organizationally to […]
Trip report: Fall ISO C++ standards meeting (San Diego)
On Saturday November 10, the ISO C++ committee completed its fall meeting in San Diego, California, USA, hosted with thanks by Qualcomm. This was the biggest ISO C++ meeting in our 29-year history, with some 180 people at the meeting, representing 12 nations. For more details about our size increase, including how we adapted organizationally to … Continue reading Trip report: Fall ISO C++ standards meeting (San Diego) →
Pre-trip report: Fall ISO C++ standards meeting (San Diego)
In one hour, our fall meeting will begin. I’ll still write a trip report at the end with the results of the meeting, but because this is an unusually (and historically) large meeting we’ve had to make a few adjustments. This post is combined from a couple of administrative emails I sent to the committee […]
Pre-trip report: Fall ISO C++ standards meeting (San Diego)
In one hour, our fall meeting will begin. I’ll still write a trip report at the end with the results of the meeting, but because this is an unusually (and historically) large meeting we’ve had to make a few adjustments. This post is combined from a couple of administrative emails I sent to the committee … Continue reading Pre-trip report: Fall ISO C++ standards meeting (San Diego) →
My CppCon 2018 talk is now online
My Thursday talk is now online. Thanks to Mark Bashian and his wonderful team at Bash Films for posting the plenary sessions so quickly… it was great to see each keynote posted the following morning, and the rest of the CppCon 2018 videos will be posted in the next few weeks as usual. Thanks again to everyone who […]
My CppCon 2018 talk is now online
My Thursday talk is now online. Thanks to Mark Bashian and his wonderful team at Bash Films for posting the plenary sessions so quickly… it was great to see each keynote posted the following morning, and the rest of the CppCon 2018 videos will be posted in the next few weeks as usual. Thanks again to everyone who … Continue reading My CppCon 2018 talk is now online →
Lifetime profile v1.0 posted
I love C++. I also love safe code and not having to worry about dangling pointers and iterators and views. So I?ve been doing some work to make my life less conflicted: As long promised, the Lifetime profile 1.0 paper is now posted in the C++ Core Guidelines repo. It aims to detect common local […]
Lifetime profile v1.0 posted
I love C++. I also love safe code and not having to worry about dangling pointers and iterators and views. So I?ve been doing some work to make my life less conflicted: As long promised, the Lifetime profile 1.0 paper is now posted in the C++ Core Guidelines repo. It aims to detect common local … Continue reading Lifetime profile v1.0 posted →
My CppCon 2018 talk title and abstract
In just 10 days, we’ll be at CppCon! I can hardly wait for Bjarne’s new opening keynote and the 100+ other sessions… we have a really great lineup of speakers again this year. I’ll be giving a talk as well, and here’s the title and abstract for what I’ll be covering this year. I hope […]
My CppCon 2018 talk title and abstract
In just 10 days, we’ll be at CppCon! I can hardly wait for Bjarne’s new opening keynote and the 100+ other sessions… we have a really great lineup of speakers again this year. I’ll be giving a talk as well, and here’s the title and abstract for what I’ll be covering this year. I hope … Continue reading My CppCon 2018 talk title and abstract →
Trip report: Summer ISO C++ standards meeting (Rapperswil)
On Saturday June 9, the ISO C++ committee completed its summer meeting in beautiful Rapperswil, Switzerland, hosted with thanks by HSR Rapperswil, Zühlke, Netcetera, Bbv, SNV, Crealogix, Meeting C++, and BMW Car IT GmbH. We had some 140 people at the meeting, representing 11 national bodies. As usual, we met for six days Monday through […]
Trip report: Summer ISO C++ standards meeting (Rapperswil)
On Saturday June 9, the ISO C++ committee completed its summer meeting in beautiful Rapperswil, Switzerland, hosted with thanks by HSR Rapperswil, Zühlke, Netcetera, Bbv, SNV, Crealogix, Meeting C++, and BMW Car IT GmbH. We had some 140 people at the meeting, representing 11 national bodies. As usual, we met for six days Monday through … Continue reading Trip report: Summer ISO C++ standards meeting (Rapperswil) →
Trip report: Winter ISO C++ standards meeting (Jacksonville)
[Edited to add C++20 schedule at end] On Saturday March 17, the ISO C++ committee completed its winter meeting in Jacksonville, Florida, USA, hosted with thanks by the Standard C++ Foundation and Perennial. We had some 140 people at the meeting, representing 8 national bodies. As usual, we met for six days Monday through Saturday, […]
Trip report: Winter ISO C++ standards meeting (Jacksonville)
[Edited to add C++20 schedule at end] On Saturday March 17, the ISO C++ committee completed its winter meeting in Jacksonville, Florida, USA, hosted with thanks by the Standard C++ Foundation and Perennial. We had some 140 people at the meeting, representing 8 national bodies. As usual, we met for six days Monday through Saturday, … Continue reading Trip report: Winter ISO C++ standards meeting (Jacksonville) →
Trip report: Fall ISO C++ standards meeting (Albuquerque)
A few minutes ago, the ISO C++ committee completed its fall meeting in Albuquerque, New Mexico, USA, hosted with our thanks by Sandia National Laboratories. We had some 140 people at the meeting, representing 10 national bodies. As usual, we met for six days Monday through Saturday, including several evenings. The following are some highlights […]
Trip report: Fall ISO C++ standards meeting (Albuquerque)
A few minutes ago, the ISO C++ committee completed its fall meeting in Albuquerque, New Mexico, USA, hosted with our thanks by Sandia National Laboratories. We had some 140 people at the meeting, representing 10 national bodies. As usual, we met for six days Monday through Saturday, including several evenings. The following are some highlights … Continue reading Trip report: Fall ISO C++ standards meeting (Albuquerque) →
Interview: On simplifying C++
I was also interviewed recently by Anastasia Kazakova for the CLion blog, and that interview is now live: Toward a more powerful and simpler C++ with Herb Sutter Topics include: Concepts and modules (and coroutines) as the true hot topics right now How my work on metaclasses was motivated and developed Obligatory aside on operator<=> […]
Interview: On simplifying C++
I was also interviewed recently by Anastasia Kazakova for the CLion blog, and that interview is now live: Toward a more powerful and simpler C++ with Herb Sutter Topics include: Concepts and modules (and coroutines) as the true hot topics right now How my work on metaclasses was motivated and developed Obligatory aside on operator<=> … Continue reading Interview: On simplifying C++ →
My Qt World Summit keynote video is now online
The Qt World Summit videos were just posted, including my talk which was a condensed (40-minute) version of my CppCon 2017 metaclasses talk with some small tweaks for a Qt-specific audience. Here it is below:
My Qt World Summit keynote video is now online
The Qt World Summit videos were just posted, including my talk which was a condensed (40-minute) version of my CppCon 2017 metaclasses talk with some small tweaks for a Qt-specific audience. Here it is below:
Interview with InfoQ: C++17, and beyond?
Last week I did an interview by email with InfoQ. It just went live: C++17 is Here: Interview with Herb Sutter Topics include: What parts of C++17 should developers get most excited about? Why didn’t concepts make it into C++17? What will be the major focus areas for C++20? What do you find interesting or […]
Interview with InfoQ: C++17, and beyond?
Last week I did an interview by email with InfoQ. It just went live: C++17 is Here: Interview with Herb Sutter Topics include: What parts of C++17 should developers get most excited about? Why didn’t concepts make it into C++17? What will be the major focus areas for C++20? What do you find interesting or … Continue reading Interview with InfoQ: C++17, and beyond… →
11 is the new 7: iOS designers, what is it with the motion fetish? Please stop making us motion sick
In my household, iOS 7 was sickening — literally. When it came out with its flashy parallax home screen and (IMO too often gratuitous) motion effects, my wife was one of the many people it immediately made motion-sick. After 30 years of loyally loving Apple products, my wife almost had to dump her iPhone. It […]
11 is the new 7: iOS designers, what is it with the motion fetish? Please stop making us motion sick
In my household, iOS 7 was sickening — literally. When it came out with its flashy parallax home screen and (IMO too often gratuitous) motion effects, my wife was one of the many people it immediately made motion-sick. After 30 years of loyally loving Apple products, my wife almost had to dump her iPhone. It … Continue reading 11 is the new 7: iOS designers, what is it with the motion fetish? Please stop making us motion sick →
My CppCon 2017 session is now on YouTube
My CppCon talk yesterday is now on YouTube. You can read more about in my July blog post on “Metaclasses: Thoughts on generative C++” which contains links to the current paper and some examples that work so far on the live prototype compiler cppx.godbolt.org. Thanks again to Bjarne Stroustrup for making C++ so general and powerful with […]
My CppCon 2017 session is now on YouTube
My CppCon talk yesterday is now on YouTube. You can read more about in my July blog post on “Metaclasses: Thoughts on generative C++” which contains links to the current paper and some examples that work so far on the live prototype compiler cppx.godbolt.org. Thanks again to Bjarne Stroustrup for making C++ so general and powerful with … Continue reading My CppCon 2017 session is now on YouTube →
C++17 is formally approved
[revised 9/8 to reflect that there is no need to wait till the next WG21 meeting] As I mentioned in my Kona (March) trip report, WG21 (the ISO C++ committee) completed work on C++17 at our March meeting. At that point it was technically finalized, and since then we have been in the final procedural […]
C++17 is formally approved
[revised 9/8 to reflect that there is no need to wait till the next WG21 meeting] As I mentioned in my Kona (March) trip report, WG21 (the ISO C++ committee) completed work on C++17 at our March meeting. At that point it was technically finalized, and since then we have been in the final procedural … Continue reading C++17 is formally approved →
Update on October seminar in London
As I mentioned earlier, part of my fall schedule is to give a repeat of this spring’s sold-out seminar: “High-Performance and Low-Latency C++” (October 9-11, London, UK). I am still getting mails about whether there are alternative/additional European dates for this seminar. Unfortunately, the answer is still no, but since I’m getting inquiries about it let […]
Update on October seminar in London
As I mentioned earlier, part of my fall schedule is to give a repeat of this spring’s sold-out seminar: “High-Performance and Low-Latency C++” (October 9-11, London, UK). I am still getting mails about whether there are alternative/additional European dates for this seminar. Unfortunately, the answer is still no, but since I’m getting inquiries about it let … Continue reading Update on October seminar in London →
Metaclasses: Thoughts on generative C++
I?ve been working on an experimental new C++ language feature tentatively called ?metaclasses? that aims to make C++ programming both more powerful and simpler. You can find out about it here: Current proposal paper: P0707R1. I hope the first ten pages give a readable motivation and overview. (The best two pages to start with are […]
Metaclasses: Thoughts on generative C++
I?ve been working on an experimental new C++ language feature tentatively called ?metaclasses? that aims to make C++ programming both more powerful and simpler. You can find out about it here: Current proposal paper: P0707R1. I hope the first ten pages give a readable motivation and overview. (The best two pages to start with are … Continue reading Metaclasses: Thoughts on generative C++ →
Trip report: Summer ISO C++ standards meeting (Toronto)
[This post will be updated with additional details as mentioned in the comments section at bottom.] A few minutes ago, the ISO C++ committee completed its summer meeting in Toronto, Ontario, Canada. We had some 120 people at the meeting, representing nine national bodies. As usual, we met for six days Monday through Saturday, including […]
Trip report: Summer ISO C++ standards meeting (Toronto)
[This post will be updated with additional details as mentioned in the comments section at bottom.] A few minutes ago, the ISO C++ committee completed its summer meeting in Toronto, Ontario, Canada. We had some 120 people at the meeting, representing nine national bodies. As usual, we met for six days Monday through Saturday, including … Continue reading Trip report: Summer ISO C++ standards meeting (Toronto) →
This fall: ACAT & CppCon (Seattle), High-Performance/Low-Latency C++ (London), Qt World Summit (Berlin)
[6/26: Updated to add ACAT] I can’t remember the last time I’ve gone to Europe twice in one year, but this is the year… up first are ACAT in August and CppCon in September, then a week later in early October I’ll be heading to London to give a single repeat of the three-day High-Performance and […]
This fall: ACAT & CppCon (Seattle), High-Performance/Low-Latency C++ (London), Qt World Summit (Berlin)
[6/26: Updated to add ACAT] I can’t remember the last time I’ve gone to Europe twice in one year, but this is the year… up first are ACAT in August and CppCon in September, then a week later in early October I’ll be heading to London to give a single repeat of the three-day High-Performance and … Continue reading This fall: ACAT & CppCon (Seattle), High-Performance/Low-Latency C++ (London), Qt World Summit (Berlin) →
Trip report: Winter ISO C++ standards meeting (Kona), C++17 is complete
The ISO C++ committee had its winter meeting in Kona, HI, USA from February 27 to March 4, hosted by Plum Hall and the Standard C++ Foundation. Over 100 people attended, officially representing 9 countries. C++17 is done! The big news is that we completed C++17, which dominated the work of the meeting: C++17 is now […]
Trip report: Winter ISO C++ standards meeting (Kona), C++17 is complete
The ISO C++ committee had its winter meeting in Kona, HI, USA from February 27 to March 4, hosted by Plum Hall and the Standard C++ Foundation. Over 100 people attended, officially representing 9 countries. C++17 is done! The big news is that we completed C++17, which dominated the work of the meeting: C++17 is now … Continue reading Trip report: Winter ISO C++ standards meeting (Kona), C++17 is complete →
Distinguishing between maybe-null vs never-null is the important thing
This discussion today on the Core Guidelines repo issues is probably of broad interest. It’s regarding why we chose to annotate not_null<T*> rather than the reverse in the Guidelines and the Guideline Support Library (GSL). Pasting here: I would take this interface reduction one step further and make an un-annotated T* implicitly “not null”. I […]
Distinguishing between maybe-null vs never-null is the important thing
This discussion today on the Core Guidelines repo issues is probably of broad interest. It’s regarding why we chose to annotate not_null<T*> rather than the reverse in the Guidelines and the Guideline Support Library (GSL). Pasting here: I would take this interface reduction one step further and make an un-annotated T* implicitly “not null”. I … Continue reading Distinguishing between maybe-null vs never-null is the important thing →
This spring: High-Performance and Low-Latency C++ (Stockholm) and ACCU (Bristol)
I don’t get to Europe very often apart from ISO C++ standards meetings, but this spring I’ve been able to accept invitations for two English-language European events in the last week of April. If you’re interested in attending, please check out the links, and I look forward to meeting and re-meeting many of you there. Tue-Thu […]
This spring: High-Performance and Low-Latency C++ (Stockholm) and ACCU (Bristol)
I don’t get to Europe very often apart from ISO C++ standards meetings, but this spring I’ve been able to accept invitations for two English-language European events in the last week of April. If you’re interested in attending, please check out the links, and I look forward to meeting and re-meeting many of you there. Tue-Thu … Continue reading This spring: High-Performance and Low-Latency C++ (Stockholm) and ACCU (Bristol) →
Trip report: Fall ISO C++ standards meeting (Issaquah)
[ETA: Mentioning specific TSes expected to be merged soon post-C++17.] On Saturday, the ISO C++ committee completed its fall meeting in Issaquah, WA, USA, hosted by Microsoft and the Standard C++ Foundation. We had over 110 people at the meeting, representing 10 national bodies. We also had more than usual local visitors ? note that […]
Trip report: Fall ISO C++ standards meeting (Issaquah)
[ETA: Mentioning specific TSes expected to be merged soon post-C++17.] On Saturday, the ISO C++ committee completed its fall meeting in Issaquah, WA, USA, hosted by Microsoft and the Standard C++ Foundation. We had over 110 people at the meeting, representing 10 national bodies. We also had more than usual local visitors ? note that … Continue reading Trip report: Fall ISO C++ standards meeting (Issaquah) →
My CppCon talk video is online
You can find it on YouTube here. [ETA: Slides are here.] Here’s an embed, below:
My CppCon talk video is online
You can find it on YouTube here. [ETA: Slides are here.] Here’s an embed, below:
To store a destructor
[edited to add notes and apply Howard Hinnant’s de-escalation to static_cast] After my talk on Friday, a couple of people asked me how I was storing destructors in my gcpp library. Since several people are interested, I thought I’d write a note. The short answer is to store two raw pointers: one to the object, and […]
To store a destructor
[edited to add notes and apply Howard Hinnant’s de-escalation to static_cast] After my talk on Friday, a couple of people asked me how I was storing destructors in my gcpp library. Since several people are interested, I thought I’d write a note. The short answer is to store two raw pointers: one to the object, and … Continue reading To store a destructor →
My talk tomorrow, and a little experimental library
Thanks to everyone who responded to the little puzzle for CppCon that I posted on the weekend. I’ll show a couple of answers in my talk tomorrow at the conference, which will be recorded and should be available on YouTube in a week or so. My talk will focus primarily on how to use the great […]
My talk tomorrow, and a little experimental library
Thanks to everyone who responded to the little puzzle for CppCon that I posted on the weekend. I’ll show a couple of answers in my talk tomorrow at the conference, which will be recorded and should be available on YouTube in a week or so. My talk will focus primarily on how to use the great … Continue reading My talk tomorrow, and a little experimental library →
A little puzzle for CppCon
As CppCon begins, Stevens Capital Management is running an SCM Challenge quiz with questions provided by some CppCon speakers.(Creating a little login is required, in part so you can save progress, but they promise not to spam you.) I’ve contributed a simple little question that’s directly related to my CppCon closing plenary session on Friday. By “simple little” I mean that my […]
A little puzzle for CppCon
As CppCon begins, Stevens Capital Management is running an SCM Challenge quiz with questions provided by some CppCon speakers.(Creating a little login is required, in part so you can save progress, but they promise not to spam you.) I’ve contributed a simple little question that’s directly related to my CppCon closing plenary session on Friday. By “simple little” I mean that my … Continue reading A little puzzle for CppCon →
Trip report: Summer ISO C++ standards meeting (Oulu)
On June 25, the ISO C++ committee completed its summer meeting in Oulu, Finland, hosted by Symbio and the Finnish national body. We again had some 100 experts officially representing nine national bodies. As usual, we met for six days Monday through Saturday, and around the clock from 8:30am till 11pm most days ? evening […]
Trip report: Summer ISO C++ standards meeting (Oulu)
On June 25, the ISO C++ committee completed its summer meeting in Oulu, Finland, hosted by Symbio and the Finnish national body. We again had some 100 experts officially representing nine national bodies. As usual, we met for six days Monday through Saturday, and around the clock from 8:30am till 11pm most days ? evening … Continue reading Trip report: Summer ISO C++ standards meeting (Oulu) →
CppCast interview about the Oulu ISO C++ meeting
On Saturday afternoon, at the ISO C++ meeting in Oulu, Finland, we completed the feature set of C++17 and approved sending out the feature-complete document for its primary international comment ballot (aka “CD” or Committee Draft ballot). An hour later, I sat down (via Skype) with Rob and Jason to do a CppCast interview about […]
CppCast interview about the Oulu ISO C++ meeting
On Saturday afternoon, at the ISO C++ meeting in Oulu, Finland, we completed the feature set of C++17 and approved sending out the feature-complete document for its primary international comment ballot (aka “CD” or Committee Draft ballot). An hour later, I sat down (via Skype) with Rob and Jason to do a CppCast interview about … Continue reading CppCast interview about the Oulu ISO C++ meeting →
Trip report: Winter ISO C++ standards meeting
On March 5, the ISO C++ committee completed its winter meeting in Jacksonville, FL, USA. We had record-tying attendance, with over 110 experts officially representing eight national bodies. As usual, we met for six days Monday through Saturday, and around the clock from 8:30am till 10pm most days, after which many people still went back […]
Trip report: Winter ISO C++ standards meeting
On March 5, the ISO C++ committee completed its winter meeting in Jacksonville, FL, USA. We had record-tying attendance, with over 110 experts officially representing eight national bodies. As usual, we met for six days Monday through Saturday, and around the clock from 8:30am till 10pm most days, after which many people still went back […]
Trip report: Fall 2015 ISO C++ standards meeting
Yesterday we just wrapped up our fall ISO C++ committee meeting in Kona, HI, USA. We normally meet in windowless rooms all week, but because of the committee’s current size we had to use the hotel’s largest space which was open-air (though technically still windowless). It was a busy week. During the days from 8:00am-5:00pm, […]
Trip report: Fall 2015 ISO C++ standards meeting
Yesterday we just wrapped up our fall ISO C++ committee meeting in Kona, HI, USA. We normally meet in windowless rooms all week, but because of the committee’s current size we had to use the hotel’s largest space which was open-air (though technically still windowless). It was a busy week. During the days from 8:00am-5:00pm, […]
My talk at CppCon
My talk at CppCon is now available online: “Writing Good C++14… By Default” (slides) It’s about type and memory safety for C++ — not a small target. Definitely watch Bjarne’s keynote first. This talk is largely designed to be “part 2” of his keynote. I’m very excited about the C++ Core Guidelines to promote modern C++14 style […]
My talk at CppCon
My talk at CppCon is now available online: “Writing Good C++14… By Default” (slides) It’s about type and memory safety for C++ — not a small target. Definitely watch Bjarne’s keynote first. This talk is largely designed to be “part 2” of his keynote. I’m very excited about the C++ Core Guidelines to promote modern C++14 style […]
CppCon program online
The CppCon 2015 program is up! If anything this is an even stronger program than last year, which is saying something. My name isn’t on it yet, but yes, I am giving a talk at CppCon. It should be announced this week.Filed under: Uncategorized
CppCon program online
The CppCon 2015 program is up! If anything this is an even stronger program than last year, which is saying something. My name isn’t on it yet, but yes, I am giving a talk at CppCon. It should be announced this week.
Trip report: Spring ISO C++ meeting
I just posted my Lenexa ISO C++ trip report over on isocpp.org covering our recent meeting. The ISO C++ committee is shipping more work sooner via concurrent Technical Specifications, but it?s still fairly new to find ourselves doing so much work that the ?new normal? is to issue an international ballot from every ISO C++ meeting. This […]
Trip report: Spring ISO C++ meeting
I just posted my Lenexa ISO C++ trip report over on isocpp.org covering our recent meeting. The ISO C++ committee is shipping more work sooner via concurrent Technical Specifications, but its still fairly new to find ourselves doing so much work that the new normal is to issue an international ballot from every ISO C++ meeting. This […]
Announcing a financial assistance policy for ISO C++ meetings
Today it was my pleasure to announce a financial assistance policy for ISO C++ meetings. You can read about it at the announcement here.
Announcing a financial assistance policy for ISO C++ meetings
Today it was my pleasure to announce a financial assistance policy for ISO C++ meetings. You can read about it at the announcement here.Filed under: Uncategorized
Reader Q&A: Why was implicit int removed?
Today, Vikram Ojha asked via email: I was just thinking why we removed “int” as default return type from C++ which was there in our traditional C type. Why we made such changes, is it to make language more safer? Short answer: Because it’s ‘inherently dangerous’ in the words of the C committee. For C++, see […]
Reader Q&A: Why was implicit int removed?
Today, Vikram Ojha asked via email: I was just thinking why we removed “int” as default return type from C++ which was there in our traditional C type. Why we made such changes, is it to make language more safer? Short answer: Because it’s ‘inherently dangerous’ in the words of the C committee. For C++, see […]
Reader Q&A: auto and for loop index variables
[Edit: I really like the ‘range of values’ several commenters proposed. We do need something like that in the standard library, and it may well come in with ranges, but as you can see there are several simple ways to roll your own in the meantime, and some third-party libraries have similar features already.] Today […]
Reader Q&A: auto and for loop index variables
Today a reader asked the following question: So Ive been reading all I can about c++11/c++14 and beyond when time permits. I like auto, I really do, I believe in it. I have a small problem Im trying to decide what to do about. So in old legacy code we have things like this: for […]
A quick poll about order of evaluation?
Consider this program fragment: std::vector<int> v = { 0, 0 }; int i = 0; v[i++] = i++; std::cout << v[0] << v[1] << endl; My question is not what it might print under today’s C++ rules. The third line runs afoul of two different categories of undefined and unspecified behavior. Rather, my question is […]
A quick poll about order of evaluation&
Consider this program fragment: std::vector<int> v = { 0, 0 }; int i = 0; v[i++] = i++; std::cout << v[0] << v[1] << endl; My question is not what it might print under today’s C++ rules. The third line runs afoul of two different categories of undefined and unspecified behavior. Rather, my question is […]
Updates to my trip report
(this is an echo of what I also just posted on isocpp.org) I wanted to add a few more things to my meeting trip report. I updated the trip report in-place, but for those who want to see the “diffs” I’ll also post just the new parts here as a standalone post: There were 106 […]
Updates to my trip report
(this is an echo of what I also just posted on isocpp.org) I wanted to add a few more things to my meeting trip report. I updated the trip report in-place, but for those who want to see the “diffs” I’ll also post just the new parts here as a standalone post: There were 106 […]
Trip Report: Fall ISO C++ Meeting
I just posted my ISO C++ meeting trip report over on isocpp.org covering our meeting in Urbana-Champaign earlier this month. The ISO C++ committee is shipping more work sooner via concurrent Technical Specifications, but it’s still fairly new to find ourselves doing so much work that the “new normal” is to issue an international ballot from every […]
Trip Report: Fall ISO C++ Meeting
I just posted my ISO C++ meeting trip report over on isocpp.org covering our meeting in Urbana-Champaign earlier this month. The ISO C++ committee is shipping more work sooner via concurrent Technical Specifications, but it’s still fairly new to find ourselves doing so much work that the “new normal” is to issue an international ballot from every […]
VS, Clang, cross-platform, and a short video
Today my team was part of the Visual Studio 2015 Preview announcement, and it’s nice to be able to share that Visual Studio is now going to support targeting Android and soon iOS, using the Clang compiler, from right inside VS. This is in addition to continued conformance and other improvements in our own VC++ compiler […]
VS, Clang, cross-platform, and a short video
Today my team was part of the Visual Studio 2015 Preview announcement, and it’s nice to be able to share that Visual Studio is now going to support targeting Android and soon iOS, using the Clang compiler, from right inside VS. This is in addition to continued conformance and other improvements in our own VC++ compiler […]
My CppCon talks
Also, my CppCon talks are all up on the CppCon YouTube channel. You can find them here: Back to the Basics! Essentials of Modern C++ Style: Loops, pointers and references, smart pointers, variable declarations, and parameter passing Lock-Free Programming (or, Juggling Razor Blades), Part 1: Lazy initialization with DCL vs. call_once vs. function local statics, […]
My CppCon talks
Also, my CppCon talks are all up on the CppCon YouTube channel. You can find them here: Back to the Basics! Essentials of Modern C++ Style: Loops, pointers and references, smart pointers, variable declarations, and parameter passing Lock-Free Programming (or, Juggling Razor Blades), Part 1: Lazy initialization with DCL vs. call_once vs. function local statics, […]
New Interview
While we were both at CppCon last month and had cameras around, Brian Overland interviewed me for InformIT. The video just went up a couple of days ago. You can find it here. If you’ve seen my interviews before, the first 14 minutes is stuff you’ve heard before, but I think you’ll find the last […]
New Interview
While we were both at CppCon last month and had cameras around, Brian Overland interviewed me for InformIT. The video just went up a couple of days ago. You can find it here. If you’ve seen my interviews before, the first 14 minutes is stuff you’ve heard before, but I think you’ll find the last […]
Next stop: Stuttgart
CppCon was a blast. I can’t wait till next year. But there’s something coming up sooner than that: In two weeks, Scott and Andrei and I will be holding the C++ and Beyond 2014 “Road Show” in Stuttgart, Germany. The key to this event is not new material, but a new location. Whereas all other […]
Next stop: Stuttgart
CppCon was a blast. I can’t wait till next year. But there’s something coming up sooner than that: In two weeks, Scott and Andrei and I will be holding the C++ and Beyond 2014 “Road Show” in Stuttgart, Germany. The key to this event is not new material, but a new location. Whereas all other […]
Trip Report: CppCon 2014
I just posted my CppCon trip report over at isocpp.org. I’ll repeat just the last part here: Huge thanks again to the 150+ speakers, planners, and volunteers without whom this wonderful “C++ festival” (as several people spontaneously called it) would not have been possible. I had guardedly high hopes for the event, but I think […]
Trip Report: CppCon 2014
I just posted my CppCon trip report over at isocpp.org. I’ll repeat just the last part here: Huge thanks again to the 150+ speakers, planners, and volunteers without whom this wonderful “C++ festival” (as several people spontaneously called it) would not have been possible. I had guardedly high hopes for the event, but I think […]
My CppCon Plenary (updated)
When we announced the CppCon conference program and I posted my final talk selection, the original plan for my Friday ‘endnote’ plenary was for it to focus on giving an update on future standardization plans. However, quite a few people immediately wrote me to express disappointment that I wouldn’t cover my Modern C++ Style material, […]
My CppCon Plenary (updated)
When we announced the CppCon conference program and I posted my final talk selection, the original plan for my Friday ‘endnote’ plenary was for it to focus on giving an update on future standardization plans. However, quite a few people immediately wrote me to express disappointment that I wouldn’t cover my Modern C++ Style material, […]
Trip report: Summer ISO C++ meeting
I just posted my isocpp.org trip report from the recently concluded ISO C++ meeting in Switzerland. We sent three documents out for ballot. This is the first time in ISO C++ history that we have sent three documents out for ballot out of a single meeting. Wow. See the full trip report for more details…
Trip report: Summer ISO C++ meeting
I just posted my isocpp.org trip report from the recently concluded ISO C++ meeting in Switzerland. We sent three documents out for ballot. This is the first time in ISO C++ history that we have sent three documents out for ballot out of a single meeting. Wow. See the full trip report for more details…Filed […]
My CppCon talks
A few weeks ago, here and here, I posted the five talks I submitted for CppCon. Good news (really): The CppCon program (posted today) is so strong that some of my talks legitimately fell below the cut line. Instead of giving five talks, I’ll be giving two ? one as I proposed it, one a […]
My CppCon talks
A few weeks ago, here and here, I posted the five talks I submitted for CppCon. Good news (really): The CppCon program (posted today) is so strong that some of my talks legitimately fell below the cut line. Instead of giving five talks, I’ll be giving two one as I proposed it, one a […]
CppCon: My Proposed Talks (Part 2)
Yesterday I posted three of my proposed talks for CppCon. These are the ones I’ve given publicly before, but they’re not retreads ? all are fresh and up to date, with refreshed or new material. But I’ve also proposed two brand new talks ? titles and abstracts are below. Note: The CppCon program committee will […]
CppCon: My Proposed Talks (Part 2)
Yesterday I posted three of my proposed talks for CppCon. These are the ones I’ve given publicly before, but they’re not retreads all are fresh and up to date, with refreshed or new material. But I’ve also proposed two brand new talks titles and abstracts are below. Note: The CppCon program committee will […]
CppCon: My Proposed Talks (Part 1)
I’ve been watching the talk proposals rolling in for CppCon, now well over 100 of them, and I was already looking forward to this conference but I just keep getting more jazzed. For my part, I’ve proposed five talks, with between 5 and 10 hours of material. I thought I’d share some of them here. […]
CppCon: My Proposed Talks (Part 1)
I’ve been watching the talk proposals rolling in for CppCon, now well over 100 of them, and I was already looking forward to this conference but I just keep getting more jazzed. For my part, I’ve proposed five talks, with between 5 and 10 hours of material. I thought I’d share some of them here. […]
Reader Q&A: How can I prevent a type from being instantiated on the stack?
Anubhav asked: An interesting question has come up in our project while debating operator new as a class member function. Specifically, the question is about whether such a class should be allowed to be instantiated on stack. The understanding is that a class providing its own operator new would likely have special layout considerations which […]
Reader Q&A: How can I prevent a type from being instantiated on the stack?
Anubhav asked: An interesting question has come up in our project while debating operator new as a class member function. Specifically, the question is about whether such a class should be allowed to be instantiated on stack. The understanding is that a class providing its own operator new would likely have special layout considerations which […]
C++ and Beyond ?Encore? in 2014: Sep 29 ? Oct 1, Stuttgart, Germany
A lot of you have been asking me whether there will be some sort of C++ and Beyond in 2014. Also, over the past few years many of you have also asked me if there will ever be a C&B outside North America. I’m pleased to report that we are doing a ‘European Encore’ event […]
C++ and Beyond Encore in 2014: Sep 29 Oct 1, Stuttgart, Germany
A lot of you have been asking me whether there will be some sort of C++ and Beyond in 2014. Also, over the past few years many of you have also asked me if there will ever be a C&B outside North America. I’m pleased to report that we are doing a ‘European Encore’ event […]
Yesterdays Build talk is now online
That was fast! Filed under: C++, Microsoft
Reader Q&A: Generic lambdas
Tim just added this comment on the GotW #3 Solution blog post from last year: Are you sure you can use auto in lambda like this?I can not compile the code and I’m pretty sure auto does not work here. If you mean auto as a lambda parameter type, such as [](auto& s){ use(s); } […]
Reader Q&A: Generic lambdas
Tim just added this comment on the GotW #3 Solution blog post from last year: Are you sure you can use auto in lambda like this?I can not compile the code and I’m pretty sure auto does not work here. If you mean auto as a lambda parameter type, such as [](auto& s){ use(s); } […]
Build talk tomorrow: Modern C++ ? What you need to know
If you’re at Build in San Francisco tomorrow afternoon, I invite you to swing by and spend an hour with us in session 2-661: Modern C++: What you need to know by Herb Sutter Build 2014, Room 20052:30-3:30 pm, Thursday April 3, 2014 If you’re new to C++, this talk is aimed directly at you. […]
Build talk tomorrow: Modern C++ What you need to know
If you’re at Build in San Francisco tomorrow afternoon, I invite you to swing by and spend an hour with us in session 2-661: Modern C++: What you need to know by Herb Sutter Build 2014, Room 20052:30-3:30 pm, Thursday April 3, 2014 If you’re new to C++, this talk is aimed directly at you. […]
CppCon 2014 Call for Submissions
More news about the first annual CppCon that was announced last week: CppCon 2014 Call for Submissions CppCon is the annual, week-long face-to-face gathering for the entire C++ community. The conference is organized by the C++ community for the community and so we invite you to present. Have you learned something interesting about C++, maybe a new technique […]
CppCon 2014 Call for Submissions
More news about the first annual CppCon that was announced last week: CppCon 2014 Call for Submissions CppCon is the annual, week-long face-to-face gathering for the entire C++ community. The conference is organized by the C++ community for the community and so we invite you to present. Have you learned something interesting about C++, maybe a new technique […]
We have CppCon?
I’m really excited about this event! Note that the first 100 registrations get a big discount ? pasting from the “registration” page: Regular registration fee is $995 but the first 100 attendees can take advantage of Super Early Bird registration and pay only $695. After that, the Early Bird registration fee is $845 and is […]
We have CppCon&
I’m really excited about this event! Note that the first 100 registrations get a big discount pasting from the “registration” page: Regular registration fee is $995 but the first 100 attendees can take advantage of Super Early Bird registration and pay only $695. After that, the Early Bird registration fee is $845 and is […]
S&S Postscript
PS on the previous post regarding Stroustrup & Sutter: I had asked the organizers whether it would be possible to get a piano in the room. I just learned a few minutes ago that they will be able to arrange a baby grand. Sweet! This is going to be fun&Filed under: C++
Stroustrup & Sutter on C++: Mar 31 Apr 1, San Jose, CA
It has occurred to me that I never announced this event here& In two weeks, Bjarne and I will be doing a two-day Stroustrup & Sutter on C++ seminar in the San Francisco Bay area. It has been several years since the last S&S event, so Bjarne and I are really looking forward to this. […]
Reader Q&A: Is std::atomic_compare_exchange_* implementable?
Quick answer: Yes. I see there was also a thread about this on StackOverflow, so I’ll echo this Q&A publicly for others’ benefit and hopefully to dispel confusion. Duncan Forster asked: I’m quite alarmed the C++ committee chose such a bad interface for std::atomic compare_exchange, i.e.: bool compare_exchange_???(T& expected, T desired, …);I notice you […]
Trip report: Winter ISO C++ meeting
I just posted my trip report from last week’s ISO C++ meeting over on isocpp.org. The meeting just wrapped up about 48 hours ago, on Saturday afternoon. This is a real milestone for C++. Not only did we finish C++14 (we think, assuming this coming ballot comes back clean so that we can skip the […]
GotW #96: Oversharing
Following on from #95, let’s consider reasons and methods to avoid mutable sharing in the first place& Problem Consider the following code from GotW #95′s solution, where some_obj is a shared variable visible to multiple threads which then synchronize access to it. // thread 1{ lock_guard hold(mut_some_obj); // acquire lock code_that_reads_from( some_obj ); // […]
GotW #95 Solution: Thread Safety and Synchronization
This GotW was written to answer a set of related frequently asked questions. So here’s a mini-FAQ on “thread safety and synchronization in a nutshell,” and the points we’ll cover apply to thread safety and synchronization in pretty much any mainstream language. Problem JG Questions 1. What is a race condition, and how serious […]
GotW #95: Thread Safety and Synchronization
This GotW was written to answer a set of related frequently asked questions. So here’s a mini-FAQ on “thread safety and synchronization in a nutshell,” and the points we’ll cover apply to thread safety and synchronization in pretty much any mainstream language. Problem JG Questions 1. What is a race condition, and how serious […]
GotW #7c Solution: Minimizing Compile-Time Dependencies, Part 3
Now the unnecessary headers have been removed, and avoidable dependencies on the internals of the class have been eliminated. Is there any further decoupling that can be done? The answer takes us back to basic principles of solid class design. Problem JG Question 1. What is the tightest coupling you can express in C++? […]
GotW #7c: Minimizing Compile-Time Dependencies, Part 3
Now the unnecessary headers have been removed, and avoidable dependencies on the internals of the class have been eliminated. Is there any further decoupling that can be done? The answer takes us back to basic principles of solid class design. Problem JG Question 1. What is the tightest coupling you can express in C++? … … Continue reading →
GotW #7b Solution: Minimizing Compile-Time Dependencies, Part 2
Now that the unnecessary headers have been removed, it’s time for Phase 2: How can you limit dependencies on the internals of a class? Problem JG Questions 1. What does private mean for a class member in C++? 2. Why does changing the private members of a type cause a recompilation? Guru Question 3. … … Continue reading →
Grace Hopper on Letterman, 1986
Google’s doodle today reminded me of Grace Hopper’s amazing contributions. I enjoyed this 10-minute video, and you might as well: Grace Hopper on Letterman in 1986 on the occasion of her (final) retirement. It’s not deep, but especially in the second half Amazing Grace demonstrates how to talk to a non-specialist audience. Good reminders for all of us who […]
Reader Q&A: Book recommendations
Vigen Isayan emailed me today to ask: What book(s) you would recommend for learning 1. design patterns, and 2. concurrency programming. Off the top of my head: 1. For Design Patterns, the greatest is still the original “Gang of Four” Design Patterns book. The design patterns are mostly universal, and the implementations happen to focus on […]
Visual C++ Compiler November 2013 CTP
We just shipped Visual C++2013 last month, but I announced at GoingNative in September that there would be more soon: another CTP (compiler preview) containing another batch of C++11/14 features, sometime in the fourth quarter. I’m happy to report that today we shipped the promised CTP. Compared to the “high probability in CTP” feature set I mentioned […]
(V)C++ recorded talks at VS 2013 Launch
As part of today’s VS 2013 launch, in addition to the live talks and Q&A we also have some recently recorded talks that are now also live. My talk is a quick 20-minute tour of the new ISO C++ conformance features in VC++ 2013 — nothing I haven’t said before, so if you’ve seen my […]
Live Visual C++ Q&A today
As part of the VS 2013 launch today, in a few hours I will be joining Tarek Madkour and Ale Contenti on camera for about half an hour to answer questions about VC++2013. Tarek and Ale are two of the three-manager triad who run our VC++ team. Visual C++ in 2013 and Beyond with Charles […]
Reminder: VC++2013 upgrade SKU available until end of January
Recap: Back in June, Microsoft: announced that were were moving to a faster cadence and shipped VS 2013 one year after VS 2012; announced that new ISO C++ conformance features from the November 2012 CTP (and more) would be available in VS 2013, but not in VS 2012 Updates; and didn’t announce pricing for VS […]
Reader Q&A: Acquire/release and sequential consistency
Reader Ernie Cohen emailed me this morning to ask a question about one slide in my atomic<> Weapons talk from last year’s C++ and Beyond: In your atomic weapons talk (part 1) (updated 2/15/2013) ,page 18, titled “Sc > Acq/Rel Alone: Some examples”, the first example listed “transitivity/causality”: T0: g = 1; x = 1; […]
Trip Report: Fall ISO C++ standards meeting
I just posted my trip report on isocpp.org. Also be sure to read the Current ISO C++ status page. We accomplished a lot last week — thanks to all the volunteers for making this a very productive and successful meeting! Just to visualize everything that’s going on, here’s a copy of the current ISO C++ […]
Bjarne and I are speaking in Chicago on Tuesday night
Bjarne Stroustrup and I are giving back-to-back talks on Tuesday night in Chicago, while we’re both in town for the standards meeting next week. Admission is free. Register by email here (and ignore the “it’s full note on the page” — see below.) Note that my talk will be 80% new material followed by the last […]
Reader Q&A: Will C++ remain indispensable&?
A reader wrote me today to ask the following. Since this is a FAQ, I thought I’d post the answer here. With the advent of C++11 and upcoming C++14 and C++1y, the language has strapped much of the digital electronics industry under its belt. High performance software, Libraries, Embedded, Research, Web backends, our everyday software, […]
My One C++ talk from GoingNative is now posted
I see the recording went live this morning. Thanks again to all the speakers and in-room and worldwide attendees for coming and watching! Day 2 Keynote: One C++ Herb Sutter My favorite part was seeing the response to the challenge to write a cool graphical interactive C++ program from scratch in 24 hours using a […]
Visual Studio 2013 RC is now available
At Build in June, we announced that VC++ 2013 RTM “later this year” would include the ISO conformance features in the June preview (explicit conversion operators, raw string literals, function template default arguments, delegating constructors, uniform initialization and initializer_lists, and variadic templates) plus also several more to be added between the Preview and the RTM: […]
Tomorrow
You will want to watch Chandler Carruth’s talk tomorrow at GoingNative. It will be livestreamed here starting at 2:30pm North American Pacific time. (See timeanddate.com for other time zones.) Watch for the Ghostbusters reference. That is all. Filed under: Uncategorized
Livestreamed talk at GoingNative this week: One C++
Don’t forget that the year’s great C++-fest GoingNative 2013 starts tomorrow morning and will be livestreamed on the Channel 9 home page. Don’t miss the opening keynote by Bjarne Stroustrup at 9:00am Seattle time on Wednesday. It will be followed by many other insightful and enlightening talks, from many of the gurus of C++. The […]
GotW #7b: Minimizing Compile-Time Dependencies, Part 2
Now that the unnecessary headers have been removed, it’s time for Phase 2: How can you limit dependencies on the internals of a class? Problem JG Questions 1. What does private mean for a class member in C++? 2. Why does changing the private members of a type cause a recompilation? Guru Question 3. Below […]
GotW #7a Solution: Minimizing Compile-Time Dependencies, Part 1
Managing dependencies well is an essential part of writing solid code. C++ supports two powerful methods of abstraction: object-oriented programming and generic programming. Both of these are fundamentally tools to help manage dependencies, and therefore manage complexity. It’s telling that all of the common OO/generic buzzwordsincluding encapsulation, polymorphism, and type independencealong with most design patterns, […]
Comment delays and spam
In recent months, more comment spam has been getting through. To deal with it, I’ve had to tighten up and hold more comments for moderation, which means some comments may be delayed in appearing until I manually approve them. Also, I’ve noticed that WordPress seems to have similarly tightened their settings for auto-identifying spam that […]
GotW #7a: Minimizing Compile-Time Dependencies, Part 1
GotW #7a: Minimizing Compile-Time Dependencies, Part 1 Managing dependencies well is an essential part of writing solid code. C++ supports two powerful methods of abstraction: object-oriented programming and generic programming. Both of these are fundamentally tools to help manage dependencies, and therefore manage complexity. It’s telling that all of the common OO/generic buzzwordsincluding encapsulation, polymorphism, […]
GotW #94 Solution: AAA Style (Almost Always Auto)
Toward correct-by-default, efficient-by-default, and pitfall-free-by-default variable declarations, using “AAA style”& where “triple-A” is both a mnemonic and an evaluation of its value. Problem JG Questions 1. What does this code do? What would be a good name for some_function? template<class Container, class Value>void some_function( Container& c, const Value& v ) { if( find(begin(c), end(c), […]
Recommended reading: Why mobile web apps are slow (Drew Crawford)
I don’t often link to other articles, but this one is worth reading. Why mobile web apps are slow by Drew Crawford & So if you are trying to figure out exactly what brand of crazy all your native developer friends are on for continuing to write the evil native applications on the cusp of […]
My //build/ talk on Friday @ noon PDT (webcast)
The session schedule for this week’s //build/ conference in San Francisco has now been posted. I have a talk on Friday at noon Pacific time, titled “The Future of C++.” Note this is a Microsoft conference, so the talk is specifically about the future of the Visual C++ product, but nevertheless it’s all about Standard […]
GotW #94 Special Edition: AAA Style (Almost Always Auto)
Toward correct-by-default, efficient-by-default, and pitfall-free-by-default variable declarations, using “AAA style”& where “triple-A” is both a mnemonic and an evaluation of its value. Problem JG Questions 1. What does this code do? What would be a good name for some_function? template<class Container, class Value>void some_function( Container& c, const Value& v ) { if( find(begin(c), end(c), […]
GotW #93 Solution: Auto Variables, Part 2
Why prefer declaring variables using auto? Let us count some of the reasons why& Problem JG Question 1. In the following code, what actual or potential pitfalls exist in each labeled piece of code? Which of these pitfalls would using auto variable declarations fix, and why or why not? // (a)void traverser( const vector<int>& […]
GotW #93: Auto Variables, Part 2
Why prefer declaring variables using auto? Let us count some of the reasons why& Problem JG Question 1. In the following code, what actual or potential pitfalls exist in each labeled piece of code? Which of these pitfalls would using auto variable declarations fix, and why or why not? // (a)void traverser( const vector<int>& […]
GotW #92 Solution: Auto Variables, Part 1
What does auto do on variable declarations, exactly? And how should we think about auto? In this GotW, we’ll start taking a look at C++’s oldest new feature. Problem JG Questions 1. What is the oldest C++11 feature? Explain. 2. What does auto mean when declaring a local variable? Guru Questions 3. In the […]
GotW #92: Auto Variables, Part 1
What does auto do on variable declarations, exactly? And how should we think about auto? In this GotW, we’ll start taking a look at C++’s oldest new feature. Problem JG Questions 1. What is the oldest C++11 feature? Explain. 2. What does auto mean when declaring a local variable? Guru Questions 3. In the […]
GotW #91 Solution: Smart Pointer Parameters
NOTE: Last year, I posted three new GotWs numbered #103-105. I decided leaving a gap in the numbers wasn’t best after all, so I am renumbering them to #89-91 to continue the sequence. Here is the updated version of what was GotW #105. How should you prefer to pass smart pointers, and why? […]
GotW #91: Smart Pointer Parameters
NOTE: Last year, I posted three new GotWs numbered #103-105. I decided leaving a gap in the numbers wasn’t best after all, so I am renumbering them to #89-91 to continue the sequence. Here is the updated version of what was GotW #105. How should you prefer to pass smart pointers, and why? […]
GotW #90 Solution: Factories
NOTE: Last year, I posted three new GotWs numbered #103-105. I decided leaving a gap in the numbers wasn’t best after all, so I am renumbering them to #89-91 to continue the sequence. Here is the updated version of what was GotW #104. What should factory functions return, and why? Problem While spelunking […]
GotW #90: Factories
NOTE: Last year, I posted three new GotWs numbered #103-105. I decided leaving a gap in the numbers wasn’t best after all, so I am renumbering them to #89-91 to continue the sequence. Here is the updated version of what was GotW #104. What should factory functions return, and why? Problem While spelunking […]
GotW #89 Solution: Smart Pointers
NOTE: Last year, I posted three new GotWs numbered #103-105. I decided leaving a gap in the numbers wasn’t best after all, so I am renumbering them to #89-91 to continue the sequence. Here is the updated version of what was GotW #103. There’s a lot to love about standard smart pointers in general, […]
GotW #89: Smart Pointers
NOTE: Last year, I posted three new GotWs numbered #103-105. I decided leaving a gap in the numbers wasn’t best after all, so I am renumbering them to #89-91 to continue the sequence. Here is the updated version of what was GotW #103. There’s a lot to love about standard smart pointers in general, […]
GotW #6b Solution: Const-Correctness, Part 2
const and mutable are powerful tools for writing safer code. Use them consistently. Problem Guru Question In the following code, add or remove const (including minor variants and related keywords) wherever appropriate. Note: Don’t comment on or change the structure of this program. It’s contrived and condensed for illustration only. For bonus points: In what […]
C++ and Beyond: My material for December, and early-bird registration (through June 9)
If you’re thinking of coming to C++ and Beyond this December, consider registering in the next two weeks to get the $300 discount. I’ve just announced that much (and possibly all) of my material will be in heavily interactive sessions about modern C++11/C++14 style and idioms, covering the “complete C++11 package” that we’re calling C++14. […]
Lost two comments
As mentioned in my GotW kickoff post, I’m experimenting with software and a workflow that lets me maintain a single source document and use it to produce the work in multiple targets, in particular to post to the blog here, to produce print books, and to produce e-books. However, there have been kinks. In particular, […]
GotW #6a: Const-Correctness, Part 1
const and mutable have been in C++ for many years. How well do you know what they mean today? Problem JG Question 1. What is a “shared variable”? Guru Questions 2. What do const and mutable mean on shared variables? 3. How are const and mutable different in C++98 and C++11? Solution 1. […]
GotW #6a: Const-Correctness, Part 1
const and mutable have been in C++ for many years. How well do you know what they mean today? Problem JG Question 1. What is meant by a “shared variable”? Guru Questions 2. What do const and mutable mean on shared variables? 3. How are const and mutable different in C++98 and C++11? […]
GotW #6b: Const-Correctness, Part 2
const and mutable are powerful tools for writing safer code. Use them consistently. Problem Guru Question In the following code, add or remove const (including minor variants and related keywords) wherever appropriate. Note: Don’t comment on or change the structure of this program. It’s contrived and condensed for illustration only. For bonus points: In what […]
GotW #6a: Const-Correctness, Part 1
const and mutable have been in C++ for many years. How well do you know what they mean today? Problem JG Question 1. What is a “shared variable”? Guru Questions 2. What do const and mutable mean on shared variables? 3. How are const and mutable different in C++98 and C++11? Solution 1. […]
GotW #6a: Const-Correctness, Part 1
const and mutable have been in C++ for many years. How well do you know what they mean today? Problem JG Question 1. What is a “shared variable”? Guru Questions 2. What do const and mutable mean on shared variables? 3. How are const and mutable different in C++98 and C++11? Filed under: GotW
GotW #5 Solution: Overriding Virtual Functions
Virtual functions are a pretty basic feature, but they occasionally harbor subtleties that trap the unwary. If you can answer questions like this one, then you know virtual functions cold, and you’re less likely to waste a lot of time debugging problems like the ones illustrated below. Problem JG Question 1. What do the […]
GotW #5: Overriding Virtual Functions
Virtual functions are a pretty basic feature, but they occasionally harbor subtleties that trap the unwary. If you can answer questions like this one, then you know virtual functions cold, and you’re less likely to waste a lot of time debugging problems like the ones illustrated below. Problem JG Question 1. What do the […]
GotW #4 Solution: Class Mechanics
How good are you at the details of writing classes? This item focuses not only on blatant errors, but even more so on professional style. Understanding these principles will help you to design classes that are easier to use and easier to maintain. Problem JG Question 1. What makes interfaces “easy to use correctly, […]
GotW #4: Class Mechanics (7/10)
How good are you at the details of writing classes? This item focuses not only on blatant errors, but even more so on professional style. Understanding these principles will help you to design classes that are easier to use and easier to maintain. Problem JG Question 1. What makes interfaces “easy to use correctly, […]
GotW #3 Solution: Using the Standard Library (or, Temporaries Revisited)
Effective reuse is an important part of good software engineering. To demonstrate how much better off you can be by using standard library algorithms instead of handcrafting your own, let’s reconsider the previous question to demonstrate how many of the problems could have been avoided by simply reusing what’s already available in the standard library. […]
GotW #3: Using the Standard Library (or, Temporaries Revisited) (3/10)
Effective reuse is an important part of good software engineering. To demonstrate how much better off you can be by using standard library algorithms instead of handcrafting your own, let’s reconsider the previous question to demonstrate how many of the problems could have been avoided by simply reusing what’s already available in the standard library. […]
GotW #2 Solution: Temporary Objects
Unnecessary and/or temporary objects are frequent culprits that can throw all your hard work and your program’s performance right out the window. How can you spot them and avoid them? Problem JG Question 1. What is a temporary object? Guru Question 2. You are doing a code review. A programmer has written […]
GotW #2: Temporary Objects (5/10)
Unnecessary and/or temporary objects are frequent culprits that can throw all your hard work and your program’s performance right out the window. How can you spot them and avoid them? Problem JG Question 1. What is a temporary object? Guru Question 2. You are doing a code review. A programmer has written […]
GotW #1 Solution: Variable Initialization or Is It? (3/10)
This first problem highlights the importance of understanding what you write. Here we have a few simple lines of codemost of which mean something different from all the others, even though the syntax varies only slightly. Problem JG Question 1. What is the difference, if any, among the following? widget w; // (a)widget w(); […]
GotW #1: Variable Initializationor Is It? (3/10)
This first problem highlights the importance of understanding what you write. Here we have a few simple lines of code most of which mean something different from all the others, even though the syntax varies only slightly. Problem JG Question 1. What is the difference, if any, among the following? widget w; // [...]
Guru of the Week and the Exceptional C++ Series
Its time for me to pick up Guru of the Week (GotW) again in earnest, as part of work on revising my three Exceptional C++ books for todays C++. Most Exceptional C++ Items are enhanced versions of GotW issues, after all, so the simplest and best place to start is with GotW. Its also much [...]
Guru of the Week and the Exceptional C++ Series
Its time for me to pick up Guru of the Week (GotW) again in earnest, as part of work on revising my three Exceptional C++ books for todays C++. Most Exceptional C++ Items are enhanced versions of GotW issues, after all, so the simplest and best place to start is with GotW. Its also much [...]
Trip Report: ISO C++ Spring 2013 Meeting
The Bristol meeting concluded a few hours ago, and I just posted my trip report on isocpp.org: This afternoon in Bristol, UK, the ISO C++ standards committee adopted generic lambdas, dynamic arrays (an improved version of C99 VLAs), variable templates, reader/writer locks, make_unique, optional<T>, standard library user-defined literals, and a number of other language and [...]
Complex initialization for a const variable
On std-discussion, Shakti Misra asked: I have seen in a lot of places code like int i; if(someConditionIstrue) { Do some operations and calculate the value of i; i = some calculated value; } use i; //Note this value is only used not changed. It should not be changed. But unfortunately in this case there [...]
Words of wisdom: Bjarne Stroustrup
Bjarne Stroustrup wrote the following a few minutes ago on the concepts mailing list: Let me take this opportunity to remind people that "being able to do something is not sufficient reason for doing it" and "being able to do every trick is not a feature but a bug" For the latter, remember Dijkstra’s famous [...]
atomic Weapons: The C++ Memory Model and Modern Hardware
Most of the talks I gave at C++ and Beyond 2012 last summer are already online at Channel 9. Here are two more. This is a two-part talk that covers the C++ memory model, how locks and atomics and fences interact and map to hardware, and more. Even though we’re talking about C++, much of [...]
Videos: Panel, and C++ Concurrency
Im about two weeks late posting this, but two more C++ and Beyond 2012 videos are now available online. The first is my 30-min concurrency talk: C++ and Beyond 2012: C++ Concurrency (Herb Sutter) Ive spoken and written on these topics before. Heres whats different about this talk: Brand new: This material goes beyond what [...]
Java vulnerabilities
With the help of friends Robert Seacord and David Svoboda of CERT in particular, I posted a note and link to their CERT post today because people have been misunderstanding the recent Java vulnerabilities, thinking theyre somehow really C or C++ vulnerabilities because Java is implemented in C and C++. From the post: Are the [...]
Video: You Dont Know const and mutable
At C++ and Beyond in August, I gave a 30 min talk on the changed meaning of const and mutable. The talk video is now online: You Dont Know [keyword] and [keyword] const means const. Bonus: mutable is useful and continues to mean already as good as const. This is another way C++ has become [...]
An implementation of generic lambdas is now available
For those interested in C++ standardization and not already following along at isocpp.org, here’s an item of likely interest: An implementation of generic lambdas (request for feedback)Faisal Vali This week, Faisal Vali shared an initial “alpha” implementation of generic lambdas in Clang. Faisal is the lead author of the proposal (N3418), with Herb Sutter and [...]
Compatibility
On yesterdays thread, I just wrote in a comment: @Jon: Yes, C++ is complex and the complexity is largely because of C compatibility. I agree with Bjarne that theres a small language struggling to get out Ive participated in private experiments to specify such a language, and you can do it in well under [...]
Perspective: Why C++ Is Not Back
John Sonmez wrote a nice article on the weekend both the article and the comments are worth reading. Why C++ Is Not Back by John Sonmez I love C++. [&] There are plenty of excellent developers I know today that still use C++ and teach others how to use it and there is nothing [...]
256 cores by 2013?
I just saw a tweet thats worth commenting on: Almost right, and we have already reached that. I said something similar to the above, but with two important differences: I said hardware threads, not only hardware cores it was about the amount of hardware parallelism available on a mainstream system. What I gave was [...]
Podcast: Interview on Hanselminutes
A few weeks ago at the Build conference, Scott Hanselman and I sat down to talk about C++ and modern UI/UX. The podcast is now live here: The Hanselminutes Podcast, Show #346 Why C++ with Herb Sutter Topics Scott raises include: 2:00 Scott mentions he has used C++ in the past. C++ has changed. We [...]
Reader Q&A: A good book to learn C++11?
Last night a reader asked one of the questions that helped motivate the creation of isocpp.org: I am trying to learn the new C++. I am wondering if you are aware of resources or courses that can help me learn a little. I was not able to find any books for C++11. Any help would [...]
Fridays Q&A session now online
My live Q&A after Fridays The Future of C++ talk is now online on Channel 9. The topics revolved around& & recent progress and near-future directions for C++, both at Microsoft and across the industry, and talks about some announcements related to C++11 support in VC++ 2012 and the formation of the Standard C++ Foundation. [...]
Our industry is young again, and its all about UI
Jeff Atwoods post two days ago inspired me to write this down. Thanks, Jeff. I can’t even remember the last time I was this excited about a computer. Jeff Atwood, November 1, 2012 Our industry is young again, full of the bliss and sense of wonder and promise of adventure that comes with youth. [...]
Talk now online: The Future of C++ (VC++, ISO C++)
Yesterday, many thousands of you were in the room or live online for my talk on The Future of C++. The talk is now available online. This has been a phenomenal year for C++, since C++11s publication just 12 months ago. And yesterday was a great day for C++. Yesterday I had the privilege of [...]
90 seconds @Build: Its a great week for C++
A few hours ago I sat down to give a short teaser for my webcast talk this Friday. Here it is. Feel free to forward. (I dont think they believed me when I said I could keep it to under two minutes.) Filed under: C++, Microsoft, Software Development, Talks & Events
The Future of C++: Live broadcast this Friday
In my talk on Friday, there will be announcements of broad interest to C++ developers on all compilers and platforms. Please help spread the word. The Future of C++ Friday, November 2, 2012 12:45pm (U.S. Pacific Time) This talk will give an update on recent progress and near-future directions for C++, both at Microsoft and [...]
Reader Q&A: volatile (again)
Sarmad Asgher asked a variant of a perennial question: I am implementing multi producer single consumer problem. I have shared variables like m_currentRecordsetSize which tells the current size of the buffer. I am using m_currentRecordsetSize in a critical section do i need to declare it as volatile. If youre in C or C++, and the [...]
CTP of Windows XP Targeting with C++ in Visual Studio 2012
The three by-far-most-requested missing features from Visual C++ 2012 were: Conformance: Keep adding more C++11 language conformance features. XP Targeting: Deliver the ability to build applications that could run on Windows XP, as well as Windows Vista, 7, and 8. Desktop Express: Deliver a free VC++ Express compiler that can be used to create traditional [...]
Poll: What features would you like to see added soonest in your favorite C++ compiler?
I just got back from teaching a class, and I’m always amazed at the breadth and diversity of C++ developers. As Bjarne Stroustrup famously says: “No one knows ‘what most C++ developers do.’” In particular, I’m surprised at how strongly some people feel about certain features, such as refactoring or safety or raw performance or [...]
Casablanca: C++ on Azure
Ive blogged about Casablanca before. Heres a related talk from TechEd Australia: Casablanca is a Microsoft incubation effort to support cloud-based client-server communication in native code using a modern asynchronous C++ API design. Think of it as Node.js, but using C++ from simple services, to JSON and REST, to Azure storage and deployment, and [...]
C&B 2012 panel posted: Ask Us Anything!
The second panel from C++ and Beyond 2012 is now available on Channel 9: Alexandrescu, Meyers and Sutter – Ask Us Anything Here is the Ask Us Anything panel from C++ and Beyond 2012. Andrei Alexandrescu, Scott Meyers and Herb Sutter take questions from attendees. As expected, great questions and answers& Table of contents (click [...]
VC++ 2012 Desktop Expres (Free)
Today Microsoft released another free Express version of Visual C++ 2012. In addition to the free Express Visual C++ compiler for building tablet applications, Visual Studio Express 2012 for Windows Desktop directly supports traditional Windows and command-line applications in C++. This a great free C++ compiler on Windows for everything from hobby development to [...]
Reader Q&A: How to write a CAS loop using std::atomics
The following is not intended to be a complete treatise on atomics, but just an answer to a specific question. A colleague asked: How should one write the following conditional interlocked function in the new C++ atomic<> style? // if (*plValue >= 0) *plValue += lAdd ; return the original value LONG MpInterlockedAddNonNegative(__inout LONG volatile* [...]
C&B Panel: Alexandrescu, Meyers, Sutter on Static If, C++11, and Metaprogramming
The first panel from C++ and Beyond 2012 is now available on Channel 9: On Static If, C++11 in 2012, Modern Libraries, and Metaprogramming Andrei Alexandrescu, Scott Meyers, Herb Sutter Channel 9 was invited to this year’s C++ and Beyond to film some sessions (that will appear on C9 over the coming months!)… At the [...]
Strong and weak hardware memory models
In Welcome to the Jungle, I predicted that weak hardware memory models will disappear. This is true, and its happening before our eyes: x86 has always been considered a strong hardware memory model that supports sequentially consistent atomics efficiently. The other major architecture, ARM, recently announced that they are now adding strong memory ordering in [...]
Late-Breaking C&B Session: A Special Announcement
At the end of the Monday afternoon session, I will be making a special announcement related to Standard C++ on all platforms. Be there to hear the details, and to receive an extra perk thats being reserved for C&B 2012 attendees only. Note: We sometimes record sessions and make them freely available online via Channel [...]
C&B Session: atomic<> Weapons The C++11 Memory Model and Modern Hardware
Heres another deep session for C&B 2012 on August 5-8 if you havent registered yet, register soon. We got a bigger venue this time, but as I write this the event is currently almost 75% full with five weeks to go. I know, Ive already posted three sessions and a panel. But theres just [...]
Reader Q&A: Why dont modern smart pointers implicitly convert to *?
Today a reader asked a common question: Why doesn’t unique_ptr (and the ilk) appear to have an operator overload somewhat as follows: operator T*() { return get(); }; The reason I ask is because we have reams of old code wanting raw pointers (as function parms), and I would like to replace the outer layers [...]
Talk Video: Welcome to the Jungle (60 min version + Q&A)
While visiting Facebook earlier this month, I gave a shorter version of my Welcome to the Jungle talk, based on the eponymous WttJ article. They made a nice recording and its now available online here: Facebook Engineering Title: Herb Sutter: Welcome to the Jungle In the twilight of Moore’s Law, the transitions to multicore processors, [...]
GotW #105: Smart Pointers, Part 3 (Difficulty: 7/10)
JG Question 1. What are the performance and correctness implications of the following function declaration? Explain. Guru Question 2. A colleague is writing a function f that takes an existing object of type widget as a required input-only parameter, and trying to decide among the following basic ways to take the parameter (omitting const): [...]
GotW #104: Solution
The solution to GotW #104 is now live. Filed under: C++, GotW
Facebook Folly OSS C++ Libraries
Ive been beating the drum this year that the biggest problem facing C++ today is the lack of a large set of de jure and de facto standard libraries. My team at Microsoft just recently announced Casablanca, a cloud-oriented C++ library and that we intend to open source, and were making other even bigger efforts [...]
Were hiring (again & more)
The Visual C++ team is looking for a number of people to do work on C++11, parallelizing/vectorizing, cloud, libraries, and more. All I can say is that theres a lot of cool stuff in the pipeline that directly addresses real needs, including things people regularly comment on this blog about that I cant answer specifically [...]
Two Sessions: C++ Concurrency and Parallelism 2012 State of the Art (and Standard)
Its time for, not one, but two brand-new, up-to-date talks on the state of the art of concurrency and parallelism in C++. Im going to put them together especially and only for C++ and Beyond 2012, and Ill be giving them nowhere else this year: C++ Concurrency 2012 State of the Art (and Standard) [...]
VC++ and Win8 Metro apps: May 18, livestream and on-demand
Reblogged from Sutters Mill: Want to know how to write cool tablet apps using Visual C++? On May 18, Microsoft is hosting a one-day free technical event for developers who want to write Metro apps for Windows 8 using Visual C++. Im giving the opening talk, and the rest of the day is full of [...]
VC++ and Win8 Metro apps: May 18, livestream and on-demand
Want to know how to write cool tablet apps using Visual C++? On May 18, Microsoft is hosting a one-day free technical event for developers who want to write Metro apps for Windows 8 using Visual C++. Im giving the opening talk, and the rest of the day is full of useful technical information on [...]
Looking for compiler engineers
Are you a compiler engineer or know one, and looking for interesting work on a top-notch team? Were hiring. (That particular link says two openings, but there are more.) Filed under: C++, Microsoft
Reader Q&A: What about VC++ and C99?
I occasionally get asked about whether, or how well, Visual C++ supports C99. This week, I just posted two replies to this questions on UserVoice (merged below). Last fall, I also answered it in an interview with Dr. Dobbs (recommended for some rationale discussion). The short answer is that Visual C++s focus is to support [...]
C++ Libraries: Casablanca
At GoingNative in February, I emphasized the need for more modern and portable C++ libraries, including for things like RESTful web/cloud services, HTTP, JSON, and more. The goal is to find or develop modern C++ libraries that leverage C++11 features, and then submit the best for standardization. Microsoft wants to do its part, and heres [...]
Worlds youngest C++ programmer?
Im seeing many younger programmers picking up C++. The average age at C++ events over the past year has been declining rapidly as the audience sizes grow with more and younger people in addition to the C++ veterans. But this one just beats all [Facebook link added]: A six-year-old child from Bangladesh is hoping to [...]
C++ and Beyond Panel: Modern C++ = Clean, Safe, and Faster Than Ever
I just posted the following panel announcement to the C++ and Beyond site. The three-day event (plus evening-before reception) with me, Scott Meyers, and Andrei Alexandrescu will be held on August 5-8, and early-bird registration is open until May 31. C++11 is kind of like C++ Dreamliner. Its built with world-class modern materials. It [...]
Mobile vs. PC?
In answering a reader question about Flash today, I linked to Adobes November press release and I commented: Granted, Adobe says its abandoning Flash only for new mobile device browsers while still supporting it for PC browsers. This is still a painful statement because [in part] & the distinction between mobile devices and PCs is [...]
Reader Q&A: Flash Redux
David Braun asked: @Tom @Herb: Whats so wrong with flash that it should be boycotted? Have I been being abused by it in some way Im not aware of? Also,does HTML5 have any bearing on the subject? Im not saying it should be boycotted, only that I avoid it. Here’s what I wrote two years [...]
Talk Video: Welcome to the Jungle
Last month in Kansas City I gave a talk on “Welcome to the Jungle,” based on my recent essay of the same name (sequel to “The Free Lunch Is Over”) concerning the turn to mainstream heterogeneous distributed computing and the end of Moores Law. Perceptive Software has now made the talk available online: Welcome to the Jungle In the [...]
GotW #104: Smart Pointers, Part 2 (Difficulty: 5/10)
While spelunking through the code of a new project you recently joined, you find the following factory function declaration: JG Question 1. Whats wrong with this return type? Guru Questions 2. What is the recommended return type? Explain your answer, including any tradeoffs. 3. Youd like to actually change the return type to [...]
GotW #103: Solution
The solution to GotW #103 is now live. Filed under: C++, GotW
Steve Jobs on Programmers (via Brent Schlender)
Earlier this week, Brent Schlender published selected Steve Jobs quote highlights from his interview tape archives. Heres one about us: The difference between the best worker on computer hardware and the average may be 2 to 1, if you’re lucky. With automobiles, maybe 2 to 1. But in software, it’s at least 25 to 1. [...]
Talk + panel online: (Not Your Fathers) C++ + Native Languages Panel
Last week at the Lang.NEXT 2012 conference in Redmond, I gave a 40-minute C++ talk and participated on a native languages panel. Both are now online at Channel 9. Heres the 40-min C++ talk, taken from the C9 site: (Not Your Fathers) C++ Herb Sutter What makes ISO C++11 "feel like a new language"? What [...]
What languages are used to build what software?
I’ve been meaning to post a link to Vincent Lextrait’s nice (and actively maintained) catalog of what languages are used to build what modern and major mainstream software: The Programming Languages Beacon This table contains a list of major software products or utilities, with details about the programming languages used to implement them. Information on [...]
We want await! A C# talk thats applicable to C++
A nice talk by Mads Torgersen just went live on Channel 9 about C#s non-blocking Task<T>.ContinueWith() library feature and await language feature, which are a big hit in C# (and Visual Basic) for writing highly concurrent code that looks pretty much just like sequential code. Mads is one of the designers of await. If youre [...]
The Of Course Principle of Design
Nicely put: Most companies (including web startups), he said, are looking to wow with their products, when in reality what they should be looking for is an of course reaction from their users. Simple and obvious beats flashy. So many great designs are obvious in retrospect. Hat tip to John Gruber. Filed under: Friday Thoughts
Reader Q&A: What does it mean for [[attributes]] to affect language semantics?
Followup on this earlier question, @bilbothegravatar asked: @Alf, @Herb I dont quite get the [[noreturn]] example. While it may (not) compile on VC++, (as far as I understand) it does not carry any semantic meaning, and, whats more, it is *perfectly* safe for any compiler that sees [[noreturn]] to just ignore it the [...]
Reader Q&A:
Motti asked: While youre dealing with readers Qs&. In your keynote in Going Native you mentioned that type inference should almost always be used, except for some obscure cases with expression templates. Yes. To give people context, the idea is when declaring local variables, prefer to use auto to deduce the type. For example: This [...]
Reader Q&A: When will better JITs save managed code?
In the comments on last weeks interview, MichaelTK asked: @Herb: You mentioned two things I dont fully understand in your talk. 1) Why would C++ be a better choice for very large scale applications than NET/Java? I mean the zero abstraction penalty (which is more a JIT compiler issue and not intrinsically hardwired into C#) [...]
Reader Q&A: Keywords and Attributes
Referring to C++ AMP, a reader emailed me to ask: Are you going to replace restrict keyword with new C++11 attribute feature [[]] ? No, because restrict is a language feature and [[attributes]] are specifically designed to be ignorable and shouldnt be used for things having language semantic meaning. During the ISO C++11 process, I [...]
Interview: C++A Language for Modern Times
Last week I spent 30 minutes with interviewer Robert Hess to talk about the differences between managed and native languages, and why modern C++ is clean, safe, and fast as clean and safe as any other modern language, and still the king of fast. The interview just went live today on Channel 9. Heres [...]
C++ and Beyond 2012: Aug 5-8, Asheville, NC, USA
February and March have been killer busy, so that I forgot to repeat an important announcement here: registration is open for C++ and Beyond 2012! Im looking forward to teaching for three days again with Scott Meyers and Andrei Alexandrescu as one of the top C++ conference highlights of the year. This year, C&B will [...]
Trip Report: February 2012 C++ Standards Meeting
The spring 2012 meeting of ISO/IEC JTC1/SC22/WG21 (C++) was held on February 6-10 in Kona, Hawaii, USA. Heres the major takeaway: This is going to be a busy year as investment in C++ across the industry continues to increase, and thats good news for C++. Here are some highlights from the meeting. Attendance This was [...]
Welcome to the Jungle in Kansas City March 20, 2012
Thanks to Perceptive Software who are bringing me to Kansas City in two weeks to give a free talk on Welcome to the Jungle. The talk will be based on my recent essay of the same name (sequel to The Free Lunch Is Over) concerning the turn to mainstream heterogeneous distributed computing and the end [...]
VC++11 Beta Available, Supported For Production Code
Earlier this month, I announced in my GoingNative talk C++11, VC++11 and Beyond that Visual C++ 11 Beta would be available in February. Todays the day: You can download Visual Studio 11 Beta here. Interestingly, VC++11 is being distributed under a go-live license, which means that Microsoft supports using this compiler to write production code. [...]
PR Night with the HEAT! Sunday, April 22.
PR Night with the HEAT! Sunday, April 22. Buy tickets early. Posted by oncallpr Back by Popular Demand&. Public Relations Night With the MIAMI HEAT Houston Rockets vs HEAT Sunday, April 22 Buy Your Tickets Early so You Dont Get Shut Out (last year we closed out): 6 p.m. @ American Airlines Arena $55 [...]
ANNOUNCEMENT: PR News Welcomed as Newest SFPRN Sponsor
PR News, an excellent resource for our industry professionals, is the newest sponsor to help support the South Florida Public Relations Network. Our sponsors make it possible to continue to provide this free member service and our low cost events and networking activities, along with student study recognitions. Please visit our SPONSOR page and take [...]
James Hamilton on reliability
Dont trust hardware or software; then you can build trustworthy hardware and software. James Hamilton on how to write reliable software in a world where anything that can fail, will fail. Filed under: Hardware, Software Development
VC++11 Beta on Feb 29
Three weeks ago, I announced in my GoingNative talk C++11, VC++11 and Beyond that Visual C++ 11 Beta would be available this month. With Somas announcement this morning, Im now happy to add a few more details: VC++11 Beta will be available on Feb 29. It will be under a go-live license, which means that [...]
Going Native Sessions Online
Thanks to everyone who came to Redmond and/or watched online to participate in Going Native 2012, last weeks global C++-fest. It was a lot of fun, and generated a lot of useful and important talks that we hope will help continue disseminate understanding of C++11 throughout the global C++ community. All the videos are now [...]
GoingNative 2012: Day 2 Tomorrow (Friday)
GoingNative 2012 Day 1 is just concluding, and were getting ready for Day 2 tomorrow with more C++11 information and panels. Day 2 kicks off tomorrow at 9:30am U.S. Pacific time, with the theme C++11 Today and Tomorrow. Day 1s focus was entirely about C++11 as it exists today; Day 2 is partly about C++11 [...]
GoingNative 2012: Minus 1 Day
GoingNative 2012 is a global live C++11-fest with unlimited free worldwide attendance both live and on demand. The goal is to make it interactive, and weve asked the speakers to reserve time at the ends of their talks for questions. Tweet questions to #ch9live or #GoingNative and we’ll try and get them asked. To [...]
GoingNative 2012: Minus 3 Days
Recap: GoingNative 2012 is a global live C++11-fest that kicks off this Thursday at 9:30am U.S. Pacific time. 350 live in the room. Unlimited free worldwide attendance both live and on demand. Note that because of technical limitations, watching the livestream requires Silverlight (watching the stored videos later on demand will not). Silverlight is [...]
GoingNative 2012: Minus 5 Days
Recap: GoingNative 2012, the worlds first globally simulcast C++ convention, starts with Bjarne Stroustrups opening keynote C++ Style this Thursday at 9:30am U.S. Pacific time (time zone converter). In-room attendance is sold out, but worldwide attendance is unlimited and free all sessions will be livestreamed, and later after a short processing delay will also [...]
GoingNative 2012: Minus One Week
GoingNative 2012 is sold out for in-person attendees, but online attendance is free and unlimited live-stream and on-demand. Watch the main page for links. GoingNative 2012 is a 48 hour technical event for those who push the boundaries of general purpose computing by exploiting the true capabilities of the underlying machine: C++ developers. Distinguished [...]
GotW #103: Smart Pointers, Part 1 (Difficulty: 3/10)
JG Question 1. When should you use shared_ptr vs. unique_ptr? List as many considerations as you can. Guru Questions 2. Why should you always use make_shared to allocate objects whose lifetimes will be managed by shared_ptr? Explain. 3. Whats the deal with auto_ptr? Filed under: C++
GotW #102: Solution
The solution to GotW #102 is now live. Filed under: C++
C++11 GoingNative 2012: Speakers and Sessions
The speakers and sessions for GoingNative 2012 (Feb 2-3, Redmond WA USA) have now been posted. With the focus squarely on C++11 on all compilers and platforms, I think this is going to be the C++ event of the first half of 2012, and Im very pleased with the caliber of our speakers and their [...]
Map of C++
Hilarious and apt. Nice work, Alena and Jim. Filed under: C++
Welcome to the Jungle
With so much happening in the computing world, now seemed like the right time to write Welcome to the Jungle a sequel to my earlier The Free Lunch Is Over essay. Heres the introduction: Welcome to the Jungle In the twilight of Moores Law, the transitions to multicore processors, GPU computing, and HaaS [...]
GotW #102: Exception-Safe Function Calls (Difficulty: 7/10)
JG Question 1. In each of the following statements, what can you say about the order of evaluation of the functions f, g, and h and the expressions expr1 and expr2? Assume that expr1 and expr2 do not contain more function calls. Guru Questions 2. In your travels through the dusty corners of your [...]
GotW #101: Solution
The solution to GotW #101 is now live. Filed under: C++
C++ Spring: GoingNative, Feb 2-3, 2012
Im very pleased to announce the C++ event of the first half of 2012: GoingNative 2012, to be held on February 2-3 in Redmond, WA, USA. (C++ and Beyond will also be great, but wont be till the second half of the year and there are other C++ conferences/events coming too. I cant remember [...]
C++ Spring: GoingNative, Feb 2-3, 2012
Im very pleased to announce the C++ event of the first half of 2012: GoingNative 2012, to be held on February 2-3 in Redmond, WA, USA. (C++ and Beyond will also be great, but wont be till the second half of the year and there are other C++ conferences/events coming too. I cant remember [...]
GotW 101: Compilation Firewalls, Part 2 (Difficulty: 8/10)
GotW #100 demonstrated the best way to express the Pimpl idiom using only standard C++11 features: Guru Question Is it possible to make the widget code easier to write by wrapping the Pimpl pattern in some sort of library helper? If so, how? Try to make the widget code as convenient and concise as possible [...]
GotW #101: Compilation Firewalls, Part 2 (Difficulty: 8/10)
GotW #100 demonstrated the best way to express the Pimpl idiom using only standard C++11 features: Guru Question Is it possible to make the widget code easier to write by wrapping the Pimpl pattern in some sort of library helper? If so, how? Try to make the widget code as convenient and concise as possible [...]
GotW #100: Solution
The solution to GotW #100 is now live. Filed under: C++, GotW
GotW #100: Solution
The solution to GotW #100 is now live. Filed under: C++, GotW
GotW #100: Compilation Firewalls
JG Questions 1. What is the Pimpl Idiom, and why is it useful? Guru Questions 2. What is the best way to express the basic Pimpl Idiom in C++11? 3. What parts of the class should go into the impl object? Some potential options include: put all private data (but not functions) into impl; put [...]
GotW #100: Compilation Firewalls
JG Questions 1. What is the Pimpl Idiom, and why is it useful? Guru Questions 2. What is the best way to express the basic Pimpl Idiom in C++11? 3. What parts of the class should go into the impl object? Some potential options include: put all private data (but not functions) into impl; put [...]
A Passing of Giants
I don’t normally blog poetry, but the passing of our giants this past month has put me in such a mood. What is built becomes our future Hand-constructed, stone by stone Quarried by our elders’ labors Fashioned with their strength and bone Dare to dream, and dare to conquer Fears by building castles grand [...]
A Passing of Giants
I don’t normally blog poetry, but the passing of our giants this past month has put me in such a mood. . What is built becomes our future Hand-constructed, stone by stone Quarried by our elders’ labors Fashioned with their strength and bone Dare to dream, and dare to conquer Fears by building castles grand [...]
Scott Meyers C++11 Materials: The Best Available Overview of C++11
People keep asking me where to find good information on C++11. Until now Ive had to point them to blogs, and say that were all working on revising our books but itll take a while. Its been an unsatisfying answer. Finally I have a C++11 book I can direct people to: Today Scott Meyers [...]
Scott Meyers C++11 Materials: The Best Available Overview of C++11
People keep asking me where to find good information on C++11. Until now Ive had to point them to blogs, and say that were all working on revising our books but itll take a while. Its been an unsatisfying answer. Finally I have a C++11 book I can direct people to: Today Scott Meyers [...]
Elements of Modern C++ Style
As Im getting ready to resume writing a few new (or updated) Guru of the Week Items for the C++11 era, Ive been looking through the wonderful features of C++11 and analyzing just which ones will affect the baseline style of how I write modern C++ code, both for myself and for publication. Ive gathered [...]
Elements of Modern C++ Style
As Im getting ready to resume writing a few new (or updated) Guru of the Week Items for the C++11 era, Ive been looking through the wonderful features of C++11 and analyzing just which ones will affect the baseline style of how I write modern C++ code, both for myself and for publication. Ive gathered [...]
Garbage Collection Synopsis, and C++
In response to my note about John McCarthys inventing automatic (non ref-counted) garbage collection, rosen4obg asked: OK, GC was invented half a century ago. When it is going to land in the C++ world? Heres a short but detailed answer, which links to illuminating reading and videos. The Three Kinds of GC The three major [...]
Garbage Collection Synopsis, and C++
In response to my note about John McCarthys inventing automatic (non ref-counted) garbage collection, rosen4obg asked: OK, GC was invented half a century ago. When it is going to land in the C++ world? Heres a short but detailed answer, which links to illuminating reading and videos. The Three Kinds of GC The three major [...]
John McCarthy
What a sad, horrible month. First Steve Jobs, then Dennis Ritchie, and now John McCarthy. We are losing many of the greats all at once. If you havent heard of John McCarthy, youre probably learning about his many important contributions now. Some examples: Hes the inventor of Lisp, the second-oldest high-level programming language, younger than [...]
John McCarthy
What a sad, horrible month. First Steve Jobs, then Dennis Ritchie, and now John McCarthy. We are losing many of the greats all at once. If you havent heard of John McCarthy, youre probably learning about his many important contributions now. Some examples: Hes the inventor of Lisp, the second-oldest high-level programming language, younger than [...]
Your First C Program
As a tribute in honor of Dennis Ritchies passing, Id like to invite you to share your thoughts in this posts comments about your first C program either the code if you remember it approximately, or a story about when you wrote it. Heres mine. I wrote my first C program in 1988 as [...]
Your First C Program
As a tribute in honor of Dennis Ritchies passing, Id like to invite you to share your thoughts in this posts comments about your first C program either the code if you remember it approximately, or a story about when you wrote it. Heres mine. I wrote my first C program in 1988 as [...]
Temporary Post Used For Theme Detection (a49628b6-b764-40c5-b98c-98945ca89832 3bfe001a-32de-4114-a6b4-4005b770f6d7)
This is a temporary post that was not deleted. Please delete this manually. (dc9f99c7-a6c2-4390-9891-b4562fbfb071 – 3bfe001a-32de-4114-a6b4-4005b770f6d7) Filed under: Uncategorized
2000 Interview: Dennis Ritchie, Bjarne Stroustrup, and James Gosling
Dennis Ritchie gave very few interviews, but I was lucky enough to be able to get one of them. Back in 2000, when I was editor of C++ Report, I interviewed the creators of C, C++, and Java all together: The C Family of Languages: Interview with Dennis Ritchie, Bjarne Stroustrup, and James Gosling [...]
2000 Interview: Dennis Ritchie, Bjarne Stroustrup, and James Gosling
Dennis Ritchie gave very few interviews, but I was lucky enough to be able to get one of them. Back in 2000, when I was editor of C++ Report, I interviewed the creators of C, C++, and Java all together: The C Family of Languages: Interview with Dennis Ritchie, Bjarne Stroustrup, and James Gosling This [...]
Dennis Ritchie
What a sad week. Rob Pike reports that Dennis Ritchie also has passed away. Ritchie was one of the pioneers of computer science, and a well-deserved Turing winner for his many contributions, notably the creation of C — by far the most influential programming language in history, and still going strong today. Aside: Speaking of [...]
Dennis Ritchie
What a sad week. Rob Pike reports that Dennis Ritchie also has passed away. Ritchie was one of the pioneers of computer science, and a well-deserved Turing winner for his many contributions, notably the creation of C — by far the most influential programming language in history, and still going strong today. Aside: Speaking of [...]
ISO C++11 Published
ISO has now published the new C++11 standard and issued a press release: English here, French here. Thanks again to everyone who made this happen, most especially Bjarne Stroustrup, who not only invented the language three decades ago, but as Evolution Working Group subgroup chair continues to be an active guiding force in its continued evolution. [...]
ISO C++11 Published
ISO has now published the new C++11 standard and issued a press release: English here, French here. Thanks again to everyone who made this happen, most especially Bjarne Stroustrup, who not only invented the language three decades ago, but as Evolution Working Group subgroup chair continues to be an active guiding force in its continued evolution. [...]
Why no container-based algorithms?
A few minutes ago, a colleague on another team asked: I really enjoyed your talk on Modern C++ from the Build conference, and have a quick question: Could there be a simpler syntax something like: foreach(collection, lambda_function) // or some other syntactic name for foreach which would expand to for_each(begin(collection), end(collection), lambda_function) Same for find_if, [...]
Why no container-based algorithms?
A few minutes ago, a colleague on another team asked: I really enjoyed your talk on Modern C++ from the Build conference, and have a quick question: Could there be a simpler syntax something like: foreach(collection, lambda_function) // or some other syntactic name for foreach which would expand to for_each(begin(collection), end(collection), lambda_function) Same for [...]
WordPress.com expertise
I’m generally satisfied with the look and feel of this blog, but would like to tweak it in a few small ways to get a cleaner look, nicer formatting for code examples, and such. If you or someone you know is familiar with WordPress.com blog customization, and is interested in a small project along these [...]
WordPress.com expertise
I’m generally satisfied with the look and feel of this blog, but would like to tweak it in a few small ways to get a cleaner look, nicer formatting for code examples, and such. If you or someone you know is familiar with WordPress.com blog customization, and is interested in a small project along these [...]
Steve Jobs
Today our industry is much less than it was yesterday. We have lost one of the great inventors. Even more importantly, Steve Jobs’ family has lost a husband and brother and father, and our thoughts are with them. What can be said that hasn’t been said? Steve has been arguably the single most influential driver [...]
Steve Jobs
Today our industry is much less than it was yesterday. We have lost one of the great innovators. Even more importantly, Steve Jobs’ family has lost a husband and brother and father, and our thoughts are with them. What can be said that hasn’t been said? Steve has been arguably the single most influential driver [...]
My two //build/ talks online
My two talks from last week’s //build/ conference are online. My personal favorite is Writing Modern C++ Code: How C++ Has Evolved Over the Years. The thesis is simple: Modern ISO Standard C++ code is clean, safe, and fast. C++ has got a bad rap over the years, partly earned, but that’s history. This talk [...]
My two //build/ talks online
My two talks from last week’s //build/ conference are online. My personal favorite is Writing Modern C++ Code: How C++ Has Evolved Over the Years. The thesis is simple: Modern ISO Standard C++ code is clean, safe, and fast. C++ has got a bad rap over the years, partly earned, but that’s history. This talk [...]
Ars: Searching Win8
Check out Ars’ choice of search term about 2/3 of the way down the page. Hi-res here. Filed under: C++, Microsoft, Software Development
Ars: Searching Win8
Check out Ars’ choice of search term about 2/3 of the way down the page. Hi-res here. Filed under: C++, Microsoft, Software Development
My C++ and Beyond Intro: C++ Renaissance
Channel 9 has just posted a recording of my intro talk at C++ and Beyond 2011 last month in Banff. Here’s the link: C++ and Beyond 2011: Why C++. It’s a keynote-y talk, not a technical talk, but we felt it was important to address an important trend involving the language. The goal is to share a [...]
My C++ and Beyond Intro: C++ Renaissance
Channel 9 has just posted a recording of my intro talk at C++ and Beyond 2011 last month in Banff. Here’s the link: C++ and Beyond 2011: Why C++. It’s a keynote-y talk, not a technical talk, but we felt it was important to address an important trend involving the language. The goal is to share a [...]
C9 interview with Scott Meyers, Andrei Alexandrescu, and me
After the end of the C++ and Beyond event earlier this month, Charles Torre interviewed all three of us for Channel 9. I thought it came out really well, and stayed firmly focused on C++ — including even during the parts we talked about D and other languages, where the focus was on how their best parts could be applied to [...]
C9 interview with Scott Meyers, Andrei Alexandrescu, and me
After the end of the C++ and Beyond event earlier this month, Charles Torre interviewed all three of us for Channel 9. I thought it came out really well, and stayed firmly focused on C++ — including even during the parts we talked about D and other languages, where the focus was on how their best parts could be applied to [...]
Trip Report: August 2011 C++ Standards Meeting
The spring 2011 ISO C++ meeting was held on August 15-19 in Bloomington, Indiana, USA on the wonderful Indiana University campus. The minutes will be available at the 2011 papers page in a couple of weeks. As previously announced, C++11 was unanimously approved just days before the standards meeting, so this was the first post-C++11 meeting. As [...]
Trip Report: August 2011 C++ Standards Meeting
The summer 2011 ISO C++ meeting was held on August 15-19 in Bloomington, Indiana, USA on the wonderful Indiana University campus. The minutes will be available at the 2011 papers page in a couple of weeks. As previously announced, C++11 was unanimously approved just days before the standards meeting, so this was the first post-C++11 meeting. As [...]
We have an international standard: C++0x is unanimously approved
The final ISO ballot on C++0x closed on Wednesday, and we just received the results: Unanimous approval. The next revision of C++ that we’ve been calling “C++0x” is now an International Standard! Geneva will take several months to publish it, but we hope it will be published well within the year, and then we’ll be [...]
We have an international standard: C++0x is unanimously approved
[Update: "C++11" is now the confirmed name -- Geneva informs me that they plan to have it published in a matter of weeks, and then we'll have ISO/IEC 14882:2011(E) Programming Languages -- C++, Third Edition. The second edition was C++03, a Technical Corrigendum, or bug patch, that contained no new features. This is the first [...]
C++ Renaissance: The Going Native Channel
I’m happy to report there’s a new show on Channel 9 that focuses on native code development in C++. It’s called “Going Native”… iTunes podcast here, Twitter @C9GoingNative. From the description: C9::GoingNative is a show dedicated to native development with an emphasis on C++ and C++ developers. Each episode will have a segment including an interview with a native [...]
C++ Renaissance: The Going Native Channel
I’m happy to report there’s a new show on Channel 9 that focuses on native code development in C++. It’s called “Going Native”… iTunes podcast here, Twitter @C9GoingNative. From the description: C9::GoingNative is a show dedicated to native development with an emphasis on C++ and C++ developers. Each episode will have a segment including an interview with a native [...]
My Final C++ and Beyond 2011 Sessions
I just posted two more sessions I’ll be giving next month at C++ and Beyond. (Aside: If you’re interested in coming, register soon; there are now only 11 seats left.) “C++ Renaissance.” I've been asked to give the opening “Welcome, Everyone!” keynote talk at C&B 2011, and it's time to cover an increasingly open secret: After [...]
My Final C++ and Beyond 2011 Sessions
I just posted two more sessions I’ll be giving next month at C++ and Beyond. (Aside: If you’re interested in coming, register soon; there are now only 11 seats left.) “C++ Renaissance.” Ive been asked to give the opening Welcome, Everyone! keynote talk at C&B 2011, and its time to cover an increasingly open secret: After [...]
Daniel Moth's C++ AMP session is now online
In my keynote on Wednesday, I highlighted just the top two important features in the C++ AMP programming model. That afternoon, my coding colleague and demo demigod Daniel Moth gave a 45-minute session covering the entire C++ AMP programming model that walked through all the features with more examples. Daniel’s talk is now also online [...]
Daniel Moths C++ AMP session is now online
In my keynote on Wednesday, I highlighted just the top two important features in the C++ AMP programming model. That afternoon, my coding colleague and demo demigod Daniel Moth gave a 45-minute session covering the entire C++ AMP programming model that walked through all the features with more examples. Daniel’s talk is now also online [...]
C++ AMP keynote is online
Yesterday I had the privilege of talking about some of the work we’ve been doing to support massive parallelism on GPUs in the next version of Visual C++. The video of my talk announcing C++ AMP is now available on Channel 9. The first 20 minutes has nothing to do with C++ in particular or [...]
C++ AMP keynote is online
Yesterday I had the privilege of talking about some of the work we’ve been doing to support massive parallelism on GPUs in the next version of Visual C++. The video of my talk announcing C++ AMP is now available on Channel 9. (Update: Here’s an alternate link; it seems to be posted twice.) The first 20 [...]
AFDS Keynote Live Stream
Just a reminder for those interested in using C++ to harness GPUs for fast code: My keynote at AMD Fusion Developer’s Conference will be webcast live. I’ll post another link when the recorded talk is available for on-demand viewing. The talk starts at 8:30am U.S. Pacific time tomorrow (Wed June 15). Today Jem Davies of ARM [...]
AFDS Keynote Live Stream
Just a reminder for those interested in using C++ to harness GPUs for fast code: My keynote at AMD Fusion Developer’s Conference will be webcast live. I’ll post another link when the recorded talk is available for on-demand viewing. The talk starts at 8:30am U.S. Pacific time tomorrow (Wed June 15). Today Jem Davies of ARM [...]
“Ask Me Anything” interview is now live on Channel 9
The “Ask Me Anything” interview is now live. Thanks again for all your questions; we took as many of the most popular ones as we could. I hope you enjoy it. Filed under: C++, Software Development, Talks & Events
Ask Me Anything interview is now live on Channel 9
The “Ask Me Anything” interview is now live. Thanks again for all your questions; we took as many of the most popular ones as we could. I hope you enjoy it. Filed under: C++, Software Development, Talks & Events
Reminder: Vote on AMA questions by tomorrow night
As promised, reminder: The followup interview on Channel 9 has been scheduled, and will be shot on Thursday, June 2. You have until midnight June 1 (North American Pacific time) to post new questions, and to vote others’ questions up/down. If you haven’t been back to the call for questions page for a few days, [...]
Reminder: Vote on AMA questions by tomorrow night
As promised, reminder: The followup interview on Channel 9 has been scheduled, and will be shot on Thursday, June 2. You have until midnight June 1 (North American Pacific time) to post new questions, and to vote others’ questions up/down. If you haven’t been back to the call for questions page for a few days, [...]
My lambdas talk @NWCPP is now online
Lloyd Moore of NWCPP did record some video and post slides of my C++ lambdas talk two days ago. The video and slides (PDF) are now online.You can see Lloyd’s friendly smile in the foreground of the final frame. The room lighting and layout weren’t great for video recording, but the audio is quite clear and you can refer [...]
My lambdas talk @NWCPP is now online
Lloyd Moore of NWCPP did record some video and post slides of my C++ lambdas talk two days ago. The video and slides (PDF) are now online. You can see Lloyd’s friendly smile in the foreground of the final frame. The room lighting and layout weren’t great for video recording, but the audio is quite clear and you can [...]
Post your questions for a followup C9 interview
The last Channel 9 video interview seems to have been well-received, and some people suggested Charles should have asked about additional topics. So here’s my idea: Let’s do another C9 interview, this time with your questions — hard or soft, big or small, just not too bizarre or personal please. :) Here’s how I’ll try [...]
Post your questions for a followup C9 interview
The last Channel 9 video interview seems to have been well-received, and some people suggested Charles should have asked about additional topics. So here’s my idea: Let’s do another C9 interview, this time with your questions — hard or soft, big or small, just not too bizarre or personal please. :) Here’s how I’ll try [...]
Lambdas Talk: Tomorrow night @ NWCPP, Redmond WA USA
For those of you who are local to the greater Seattle area, tomorrow night at 6:30pm in Redmond I’ll be giving a reprise of one my talks that premiered last fall at C++ and Beyond 2010. The talk I’ll be giving is Lambdas, Lambdas Everywhere about all the wild and wonderful uses of C++0x lambda functions. It’s [...]
Lambdas Talk: Tomorrow night @ NWCPP, Redmond WA USA
For those of you who are local to the greater Seattle area, tomorrow night at 6:30pm in Redmond I’ll be giving a reprise of one my talks that premiered last fall at C++ and Beyond 2010. The talk I’ll be giving is Lambdas, Lambdas Everywhere about all the wild and wonderful uses of C++0x lambda functions. It’s [...]
Interview on Channel 9
Channel 9 just posted a new interview with me about ISO C++0x, C++’s place in the modern world, and all things C++. The topics we talked about ranged pretty widely, as you can see from the questions below. Here’s the blurb as posted on Channel 9 with links to specific questions in the interview. Enjoy. Herb [...]
Interview on Channel 9
Channel 9 just posted a new interview with me about ISO C++0x, C++’s place in the modern world, and all things C++. The topics we talked about ranged pretty widely, as you can see from the questions below. Here’s the blurb as posted on Channel 9 with links to specific questions in the interview. Enjoy. Herb [...]
Two More C&B Sessions: C++0x Memory Model (Scott) and Exceptional C++0x (me)
Scott Meyers, Andrei Alexandrescu and I are continuing to craft and announce the technical program for C++ and Beyond (C&B) 2011, and two more sessions are now posted. All talks are brand-new material created specifically for C&B 2011. Here are short blurbs; follow the links for longer descriptions. Scott will give a great new talk [...]
Two More C&B Sessions: C++0x Memory Model (Scott) and Exceptional C++0x (me)
Scott Meyers, Andrei Alexandrescu and I are continuing to craft and announce the technical program for C++ and Beyond (C&B) 2011, and two more sessions are now posted. All talks are brand-new material created specifically for C&B 2011. Here are short blurbs; follow the links for longer descriptions. Scott will give a great new talk [...]
Keynote at the AMD Fusion Developer Summit
In a couple of months, I’ll be giving a keynote at the AMD Fusion Developer’s Summit, which will be held on June 13-16, 2011, in Bellevue, WA, USA. Here’s my talk’s description as it appears on the conference website: AFDS Keynote: “Heterogeneous Parallelism at Microsoft” Herb Sutter, Microsoft Principal Architect, Native Languages Parallelism is not [...]
Keynote at the AMD Fusion Developer Summit
In a couple of months, I’ll be giving a keynote at the AMD Fusion Developer’s Summit, which will be held on June 13-16, 2011, in Bellevue, WA, USA. Here’s my talk’s description as it appears on the conference website: AFDS Keynote: Heterogeneous Parallelism at Microsoft Herb Sutter, Microsoft Principal Architect, Native Languages Parallelism is not [...]
C++ and Beyond 2011
I’m very much looking forward to C++ and Beyond 2011 this August, again with Scott Meyers and Andrei Alexandrescu. All of my own talks will be brand-new material never given publicly before. This year’s program will be heavily oriented toward performance (first) and C++0x (second). There are two talks announced so far: Andrei will be giving [...]
C++ and Beyond 2011
I’m very much looking forward to C++ and Beyond 2011 this August, again with Scott Meyers and Andrei Alexandrescu. All of my own talks will be brand-new material never given publicly before. This year’s program will be heavily oriented toward performance (first) and C++0x (second). There are two talks announced so far: Andrei will be giving [...]
We Have FDIS! (Trip Report: March 2011 C++ Standards Meeting)
News flash: This afternoon, the ISO C++ committee approved the final technical changes to the C++0x standard. The new International Standard for Programming Language C++ is expected to be published in summer 2011. The spring 2011 ISO C++ meeting was held on March 21-25 in Madrid, Spain. As previously reported, the goal of this meeting was [...]
We Have FDIS! (Trip Report: March 2011 C++ Standards Meeting)
News flash: This afternoon, the ISO C++ committee approved the final technical changes to the C++0x standard. The new International Standard for Programming Language C++ is expected to be published in summer 2011. The spring 2011 ISO C++ meeting was held on March 21-25 in Madrid, Spain. As previously reported, the goal of this meeting was [...]
Book on PPL is now available
For those of you who may be interested in concurrency and parallelism using Microsoft tools, there’s a new book now available on the Visual C++ 2010 Parallel Patterns Library (PPL). I hope you enjoy it. Normally I don’t write about other people’s platform-specific books, but I happened to be involved in the design of PPL, [...]
Book on PPL is now available
For those of you who may be interested in concurrency and parallelism using Microsoft tools, there’s a new book now available on the Visual C++ 2010 Parallel Patterns Library (PPL). I hope you enjoy it. Normally I don’t write about other people’s platform-specific books, but I happened to be involved in the design of PPL, [...]
Interview on Channel 9
Over the holidays, Erik Meijer interviewed me on Channel 9. We covered a wide variety of topics, mostly centered on C++ with some straying into C#/Java/Haskell/Clojure/Erlang, but ranging from auto and closures to why (not?) derive future<T> from T, and from what the two most important problems in parallelism are in 2011 to why and how [...]
Interview on Channel 9
Over the holidays, Erik Meijer interviewed me on Channel 9. We covered a wide variety of topics, mostly centered on C++ with some straying into C#/Java/Haskell/Clojure/Erlang, but ranging from auto and closures to why (not?) derive future<T> from T, and from what the two most important problems in parallelism are in 2011 to why and how [...]
2010: Cyberpunk World
Speaking as a neutral observer with exactly zero opinion on any political question, and not even a cyberpunk reader given that I’ve read about two such novels in my life: Is it just me, or do the last few months’ global news headlines read like they were ghostwritten by Neal Stephenson? I wonder if we [...]
2010: Cyberpunk World
Speaking as a neutral observer with exactly zero opinion on any political question, and not even a cyberpunk reader given that I’ve read about two such novels in my life: Is it just me, or do the last few months’ global news headlines read like they were ghostwritten by Neal Stephenson? I wonder if we [...]
Trip Report: November 2010 C++ Standards Meeting
The fall 2010 ISO C++ meeting was held on November 8-13 in Batavia, IL, USA. The post-meeting mailing is now live, including meeting minutes and other information. I attended this meeting virtually, as I was still recovering from some shoulder surgery. Fermilab’s teleconference facilities are excellent — I think it’s safe to say they’re the best [...]
Trip Report: November 2010 C++ Standards Meeting
The fall 2010 ISO C++ meeting was held on November 8-13 in Batavia, IL, USA. The post-meeting mailing is now live, including meeting minutes and other information. I attended this meeting virtually, as I was still recovering from some shoulder surgery. Fermilab’s teleconference facilities are excellent — I think it’s safe to say they’re the best [...]
PDC Languages Panel and (Shortened) Lambdas Talk
At PDC 2010 this week, I participated in a panel and gave one talk. Both are now online for live on-demand viewing. Warning: The talks currently require Silverlight, though I’m told that non-Silverlight versions may be posted later on. Here they are: 1. Languages Panel I got to participate again this year on a fun [...]
PDC Languages Panel and (Shortened) Lambdas Talk
At PDC 2010 this week, I participated in a panel and gave one talk. Both are now online for live on-demand viewing. Note: The talks should work on any browser. They do not require Silverlight. If you get a message that Silverlight is needed, it just made a mistake in auto-detecting your browser (I’m told this happens [...]
C++0x Current Hot Issues
Anthony Williams has posted an excellent summary of the two major language design questions going into next month’s ISO C++ meeting in Batavia, IL, USA. As we wind down C++0x, we are still working on an ever-decreasing set of open issues. Unsurprisingly, they’re in the newest features, as we bake them and see how they [...]
C++0x Current Hot Issues
Anthony Williams has posted an excellent summary of the two major language design questions going into next month’s ISO C++ meeting in Batavia, IL, USA. As we wind down C++0x, we are still working on an ever-decreasing set of open issues. Unsurprisingly, they’re in the newest features, as we bake them and see how they [...]
Another New Talk: Elements of Design
At C++ and Beyond next week (and in December) I’ll also be giving a brand-new half-day talk on Elements of Design. I'm passionate about design, in part because it requires specific skills and taste, but most off all because it's so important for every programmer – whether building a new library or extending one, building [...]
Another New Talk: Elements of Design
At C++ and Beyond next week (and in December) I’ll also be giving a brand-new half-day talk on Elements of Design. Im passionate about design, in part because it requires specific skills and taste, but most off all because its so important for every programmer whether building a new library or extending one, building [...]
C++ and Beyond Session: Lambdas, Lambdas Everywhere
We’ll be posting abstracts (summaries) of the C++ and Beyond 2010 sessions over the coming days over at the C&B site. Below is the first, for my talk on “Lambdas, Lambdas Everywhere.” This is a brand new talk. I delivered a ‘sneak peek’ preview of a subset of this material in conjunction with the ISO [...]
C++ and Beyond Session: Lambdas, Lambdas Everywhere
We’ll be posting abstracts (summaries) of the C++ and Beyond 2010 sessions over the coming days over at the C&B site. Below is the first, for my talk on “Lambdas, Lambdas Everywhere.” This is a brand new talk. I delivered a ‘sneak peek’ preview of a subset of this material in conjunction with the ISO [...]
C++ and Beyond Encore: Public Registration Now Open
Public registration is now open for the overflow “Encore” showing of C++ and Beyond. The deadline for early-bird discount registration is November 14, but if you want to make sure you get a place it would probably be good to register sooner (the first showing sold out during the early-bird period). If you weren't able to [...]
C++ and Beyond Encore: Public Registration Now Open
Public registration is now open for the overflow Encore showing of C++ and Beyond. The deadline for early-bird discount registration is November 14, but if you want to make sure you get a place it would probably be good to register sooner (the first showing sold out during the early-bird period). If you werent able to [...]
Effective Concurrency: Know When to Use an Active Object Instead of a Mutex
This month’s Effective Concurrency column, “Know When to Use an Active Object Instead of a Mutex,” is now live on DDJ’s website. From the article: Let’s say that your program has a shared log file object. The log file is likely to be a popular object; lots of different threads must be able to write [...]
Effective Concurrency: Know When to Use an Active Object Instead of a Mutex
This month’s Effective Concurrency column, “Know When to Use an Active Object Instead of a Mutex,” is now live on DDJ’s website. From the article: Let’s say that your program has a shared log file object. The log file is likely to be a popular object; lots of different threads must be able to write [...]
C++ and Beyond Encore: December 13-16, 2010
If you couldn't get into October's C&B before it sold out, this is a second chance to participate.
C++ and Beyond Encore: December 13-16, 2010
If you couldn't get into October's C&B before it sold out, this is a second chance to participate.
John Gruber on IE9
Today, John Gruber wrote about Internet Explorer 9: The new UI removes most of the junk from the UI. Kind of interesting how web browsers have evolved to expose fewer UI elements. Most apps go the other way over time. Of course, that's because the page/site is the real app. And like most apps they [...]
John Gruber on IE9
Today, John Gruber wrote about Internet Explorer 9: The new UI removes most of the junk from the UI. Kind of interesting how web browsers have evolved to expose fewer UI elements. Most apps go the other way over time. Of course, thats because the page/site is the real app. And like most apps they [...]
Trip Report: August 2010 ISO C++ Standards Meeting
The summer 2010 ISO C++ meeting was held on August 2-7 in Rapperswil, Switzerland. The post-meeting mailing is now live, including meeting minutes and other information. In March (trip report), we voted the last set of feature changes into a Final Committee Draft (FCD) and, after two weeks of scurrying to apply the changes, the [...]
Trip Report: August 2010 ISO C++ Standards Meeting
The summer 2010 ISO C++ meeting was held on August 2-7 in Rapperswil, Switzerland. The post-meeting mailing is now live, including meeting minutes and other information. In March (trip report), we voted the last set of feature changes into a Final Committee Draft (FCD) and, after two weeks of scurrying to apply the changes, the [...]
Effective Concurrency: Prefer Using Futures or Callbacks to Communicate Asynchronous Results
This month’s Effective Concurrency column, “Prefer Using Futures or Callbacks to Communicate Asynchronous Results,” is now live on DDJ’s website. From the article: This time, we’ll answer the following questions: How should we express return values and out parameters from an asynchronous function, including an active object method? How should we give back multiple partial [...]
Effective Concurrency: Prefer Using Active Objects Instead of Naked Threads
This month's Effective Concurrency column, “Prefer Using Active Objects Instead of Naked Threads,” is now live on DDJ's website. From the article: ¿ Active objects dramatically improve our ability to reason about our thread’s code and operation by giving us higher-level abstractions and idioms that raise the semantic level of our program and let us [...]
Effective Concurrency Course: June and October
I forgot to blog about this until now because of focusing on the Effective Concurrency course in Stockholm a few weeks ago, but to answer those who wonder if I'll be giving it again in North America too: Yes, I'm also giving the public Effective Concurrency course again at the end of this month at [...]
Webinar Now Available On Demand
The webinar I did with James Reinders three weeks ago is now online for on-demand viewing. The link is the same as before: Five Years Since Free Lunches: Making Use of Multicore Parallelism Reflecting on the five years since "The Free Lunch is Over" article and the arrival of multicore processors, Sutter and Reinders will [...]
C++ and Beyond: About 2/3 Full
C++ and Beyond 2010 (October 24-27) is filling up quickly. As of this writing, nearly 40 of the 60 places have been taken since registration opened last month. If you're thinking of registering, it would probably be good to do it soon. 60 attendees is a hard limit; as I've written before, we want to [...]
Effective Concurrency: Associate Mutexes with Data to Prevent Races
This month's Effective Concurrency column, Associate Mutexes with Data to Prevent Races”, is now live on DDJ's website. From the article: Come together: Associate mutexes with the data they protect, and you can make your code race-free by construction Race conditions are one of the worst plagues of concurrent code: They can cause disastrous effects [...]
The “You Call This Journalism?” Department
The Inquirer isn't normally this silly, and it isn't even April 1. Nick Farrell writes: Why Apple might regret the Ipad [sic] THE IPAD HAS DOOMED Apple, according to market anlaysts [sic] that are expecting the tablet to spell trouble for its maker. ¿ Rather than killing off the netbook, the Ipad [sic] is harming [...]
May 12 Webinar on Multicore Parallelism
Next week, I'm giving a webinar with Intel's James Reinders, and we'll be available for a live Q&A session with you at the end: Five Years Since Free Lunches: Making Use of Multicore Parallelism May 12, 2010 at 8 a.m. PT/11 a.m. ET. Reflecting on the five years since "The Free Lunch is Over" article [...]
Links I enjoyed this week: Flash and HTML5
These are the two best links I've read in the wake of the Flash and HTML5 brouhaha(s). They discuss other informative points too, but their biggest value lies in discussing three things, to which I'll offer the answers that make the most sense to me: What is the web, really? “The web” is the cross-linked [...]
C++ and Beyond 2010: Registration Now Open
I'm happy to report that registration is now open for C++ and Beyond 2010 with me, Scott Meyers, and Andrei Alexandrescu. The event will start on the evening of Sunday October 24 with a reception, to be followed by three solid breakfast-to-bedtime days full of structured and unstructured technical content and learning opportunities in what [...]
“Readability”
If you like reading just about anything on the web, including my articles, in a pretty nicely rendered plain format with no ads or other distractions, you might want to try out arc90's Readability. All you do is drag a bookmarklet to your bookmark bar, and then on any article-like web page you can click on [...]
Links I enjoyed this week
C++ and C++0x C++0x Core Language Features in VC10 [Visual C++ 2010] (MSDN) This is the VC++ team's overview, side by side with the previous release. Includes handy links to the C++ committee paper numbers. See also Scott Meyers' C++0x feature availability tracker for gcc and VC++, which is fairly up to [...]
How anyone can comment on the FCD
Do you want to comment on the C++0x Final Committee Draft (that's the link where it just went live online and is freely publicly available), but you aren’t an official member of some ISO national body? Well, you can: UK is volunteering to channel your comment. Thanks, Anthony and the rest of the BSI panel! (Open process: [...]
Links I enjoyed, and iPad musings
Appetizers: Three cool links The Design of Design by Fred Brooks (Amazon) Yes, a new book by the Fred Brooks. Started reading it in Stanza on my iPhone today¿ A Turing Machine (aturingmachine.com) I'm in love. This is my favorite computer ever. I so want one. The [...]
Flash In the Pan
You’ve no doubt noticed the recent acceleration of the transition from Flash in favor of HTML5, thanks in large part to Apple’s refusal to support Flash on iPhone and iPad. First YouTube, and now TED, Vimeo, CBS, and Time and The New York Times are adding support for HTML5 in addition to, or instead [...]
C++0x FCD launches, will be freely available online in about a week
This morning, the C++0x FCD text was completed by our tireless project editor Pete Becker, approved by the review committee of Steve Adamczyk and Howard Hinnant, and sent to SC22 for FCD ballot. The SC22 secretariat has informed us that the FCD ballot will begin today and close on July 26. Thank you to everyone involved [...]
Links I enjoyed reading this week
Software-related PDF the Most Common Malware Vector (Schneier) It's almost non-news, because it's been obvious for years that this was coming. Malware writers target the common programs and formats. Several years ago, I talked to senior developers from a major software company on multiple occasions about memory safety and secure coding, [...]
Warren Buffett Rocks
Really. Direct link. Filed under: Friday Thoughts
Comment policy
On this blog, I've always been happy to follow a policy of not editor or censoring comments, and let comments stand whether the commenter agrees with me or not. However, recently a few comments have strayed into name-calling (e.g., I'd never heard the term “freetard” until last week), and I've decided to remove comments that [...]
Comment policy
[Updated 3/17 for clarity.] On this blog, I've always been happy to follow a policy of not editing or filtering comments, and to let comments stand whether the commenter agrees with me or not. However, recently a few comments have strayed into name-calling (e.g., I'd never heard the term “freetard” until last week), and I've decided [...]
Trip Report: March 2010 ISO C++ Standards Meeting
[Note: I usually post trip reports after the public post-meeting mailing goes live a few weeks after the meeting, so that I can provide links to minutes and papers. This time, I wanted to post the report right away to share the news. If you're interested in the post-meeting papers, including the official minutes, watch [...]
Trip Report: March 2010 ISO C++ Standards Meeting
[Note: I usually post trip reports after the public post-meeting mailing goes live a few weeks after the meeting, so that I can provide links to minutes and papers. This time, I wanted to post the report right away to share the news. If you're interested in the post-meeting papers, including the official minutes, watch [...]
Links I enjoyed reading this week
Concurrency-related (more or less directly) Samples updated for ConcRT, PPL and Agents (Microsoft Parallel Programming blog) Update to the samples for the Visual Studio 2010 Release Candidate. Hmm, I suppose I should include a link to that too: Visual Studio 2010 and .NET Framework 4 Release Candidate (Microsoft) [...]
Links I enjoyed reading this week
Concurrency-related (more or less directly) Samples updated for ConcRT, PPL and Agents (Microsoft Parallel Programming blog) Update to the samples for the Visual Studio 2010 Release Candidate. Hmm, I suppose I should include a link to that too: Visual Studio 2010 and .NET Framework 4 Release Candidate (Microsoft) [...]
Where can you get the ISO C++ standard, and what does “open standard” mean?
In my role as convener of the ISO C++ committee, I get to field a number of questions about the committee and its process. It occurred to me that some of them might be of more general interest, so I'll occasionally publish an edited version of my reply here in case other people have similar [...]
Where can you get the ISO C++ standard, and what does “open standard” mean?
In my role as convener of the ISO C++ committee, I get to field a number of questions about the committee and its process. It occurred to me that some of them might be of more general interest, so I'll occasionally publish an edited version of my reply here in case other people have similar [...]
Effective Concurrency Europe 2010
Last May, I gave a public Effective Concurrency course in Stockholm. It was well-attended, and a number of people have asked if it will be offered again. The answer is yes. I'm happy to report that Effective Concurrency Europe 2010 will be held on May 5-7, 2010, in Stockholm, Sweden. There's an early-bird rate available for [...]
Effective Concurrency Europe 2010
Last May, I gave a public Effective Concurrency course in Stockholm. It was well-attended, and a number of people have asked if it will be offered again. The answer is yes. I'm happy to report that Effective Concurrency Europe 2010 will be held on May 5-7, 2010, in Stockholm, Sweden. There's an early-bird rate available for [...]
Machine Architecture slides back online
A number of people reported that the PDF slides for my Machine Architecture talk were offline. It turns out that the NWCPP servers were recently moved and the link temporarily broken, but it's now been restored. Links: Google video PDF slides (back again) Filed under: Concurrency, Hardware, Software Development
Machine Architecture slides back online
A number of people reported that the PDF slides for my Machine Architecture talk were offline. It turns out that the NWCPP servers were recently moved and the link temporarily broken, but it's now been restored. Links: Google video PDF slides (back again) Filed under: Concurrency, Hardware, Software Development
Igor Ostrovsky and the Seven Cache Effects
My colleague Igor Ostrovsky has written a useful summary of seven cache memory effects that every advanced developer should know about because of their performance impact, particularly as we strive to keep invisible bottlenecks out of parallel code. I've covered variations of Igor's examples #1, #2, #3, and #6 in my Machine Architecture talk and several [...]
Igor Ostrovsky and the Seven Cache Effects
My colleague Igor Ostrovsky has written a useful summary of seven cache memory effects that every advanced developer should know about because of their performance impact, particularly as we strive to keep invisible bottlenecks out of parallel code. I've covered variations of Igor's examples #1, #2, #3, and #6 in my Machine Architecture talk and several [...]
Effective Concurrency: Prefer Futures to Baked-In “Async APIs”
This month's Effective Concurrency column, Prefer Futures to Baked-In “Async APIs”, is now live on DDJ's website. From the article: When designing concurrent APIs, separate "what" from "how" Let’s say you have an existing synchronous API function [called DoSomething]¿ Because DoSomething could take a long time to execute (whether it keeps a CPU core busy or not), and [...]
Effective Concurrency: Prefer Futures to Baked-In “Async APIs”
This month's Effective Concurrency column, Prefer Futures to Baked-In “Async APIs”, is now live on DDJ's website. From the article: When designing concurrent APIs, separate "what" from "how" Let’s say you have an existing synchronous API function [called DoSomething]¿ Because DoSomething could take a long time to execute (whether it keeps a CPU core busy or not), and [...]
C++ and Beyond: Summer 2010, Vote the Date
I always enjoy teaching together with Scott Meyers and Andrei Alexandrescu, not only because it means I get to work with good friends, but also because I get to listen to them speak. Scott and Andrei always have interesting and useful things to say and say them well. We occasionally speak at the same big [...]
C++ and Beyond: Summer 2010, Vote the Date
I always enjoy teaching together with Scott Meyers and Andrei Alexandrescu, not only because it means I get to work with good friends, but also because I get to listen to them speak. Scott and Andrei always have interesting and useful things to say and say them well. We occasionally speak at the same big [...]
Stroustrup on Teaching Software Developers
Recommended reading (it's short), from the January 2010 issue of CACM: What Should We Teach New Software Developers? Why? by Bjarne Stroustrup It's a wonderfully accurate and concise summary of the disconnect between the ivory tower and the trenches ¿ i.e., (some) computer science academics and (some) software development industry managers, with commentary on [...]
Stroustrup on Teaching Software Developers
Recommended reading (it's short), from the January 2010 issue of CACM: What Should We Teach New Software Developers? Why? by Bjarne Stroustrup It's a wonderfully accurate and concise summary of the disconnect between the ivory tower and the trenches ¿ i.e., (some) computer science academics and (some) software development industry managers, with commentary on [...]
Guest Blog: Words Matter
This morning my colleague Rob Hanz wrote an interesting email that went viral in my corner of Microsoft. He graciously allowed me to share it with you here. I hope you enjoy it too. Blink and subconscious messaging Robert Hanz I was reading Blink last night, and one of the things [...]
Guest Blog: Words Matter
This morning my colleague Rob Hanz wrote an interesting email that went viral in my corner of Microsoft. He graciously allowed me to share it with you here. I hope you enjoy it too. Blink and subconscious messaging Robert Hanz I was reading Blink last night, and one of the things [...]
Trip Report: October 2008 ISO C++ Standards Meeting
The ISO C++ committee met in Santa Cruz, CA, USA on October 19-24. You can find the minutes here, which include the votes at the whole-group sessions but not the details of the breakout technical sessions where we spend most of the week. The good news is that there's little new technical news. We did a [...]
Trip Report: October 2009 ISO C++ Standards Meeting
The ISO C++ committee met in Santa Cruz, CA, USA on October 19-24. You can find the minutes here, which include the votes at the whole-group sessions but not the details of the breakout technical sessions where we spend most of the week. The good news is that there's little new technical news. We did a [...]
Trip Report: October 2009 ISO C++ Standards Meeting
The ISO C++ committee met in Santa Cruz, CA, USA on October 19-24. You can find the minutes here, which include the votes at the whole-group sessions but not the details of the breakout technical sessions where we spend most of the week. The good news is that there's little new technical news. We did a [...]
Effective Concurrency: Prefer structured lifetimes ¿ local, nested, bounded, deterministic.
This month's Effective Concurrency column, Prefer structured lifetimes ¿ local, nested, bounded, deterministic, is now live on DDJ's website. From the article: Where possible, prefer structured lifetimes: ones that are local, nested, bounded, and deterministic. This is true no matter what kind of lifetime we're considering, including object lifetimes, thread or task lifetimes, [...]
Effective Concurrency: Prefer structured lifetimes ¿ local, nested, bounded, deterministic.
This month's Effective Concurrency column, Prefer structured lifetimes ¿ local, nested, bounded, deterministic, is now live on DDJ's website. From the article: Where possible, prefer structured lifetimes: ones that are local, nested, bounded, and deterministic. This is true no matter what kind of lifetime we're considering, including object lifetimes, thread or task lifetimes, [...]
Other Concurrency Sessions at PDC09
I mentioned yesterday that I'll be involved in two sessions at PDC09, including a parallel patterns tutorial. I know many of you are interested in concurrency in general and on Microsoft platforms in particular, so I thought I'd share this more complete list of concurrency-related sessions at PDC, put together by my colleague Stephen Toub. Overview: The [...]
Other Concurrency Sessions at PDC'09
I mentioned yesterday that I'll be involved in two sessions at PDC09, including a parallel patterns tutorial. I know many of you are interested in concurrency in general and on Microsoft platforms in particular, so I thought I'd share this more complete list of concurrency-related sessions at PDC, put together by my colleague Stephen Toub. Overview: The [...]
PDC'09: Tutorial & Panel
For those of you coming to PDC'09 in Los Angeles a couple of weeks from now, I'll be there for a few hours on Monday and Wednesday participating in two events: Patterns of Parallel Programming: A Tutorial on Fundamental Patterns and Practices for Parallelism. The full-day tutorial is full of useful information. I'll be giving the [...]
PDC'09: Tutorial & Panel
For those of you coming to PDC'09 in Los Angeles a couple of weeks from now, I'll be there for a few hours on Monday and Wednesday participating in two events: Patterns of Parallel Programming: A Tutorial on Fundamental Patterns and Practices for Parallelism. The full-day tutorial is full of useful information. I'll be giving the [...]
Hoare on Testing
On the flight to the ISO C standards meeting this morning, I was reading this month's issue of CACM, and found that Sir C.A.R. (Tony) Hoare wrote a nice piece called Retrospective: An Axiomatic Basis for Computer Programming. Hoare has long been a noted proponent of axioms and formal proofs of program correctness. In that light, [...]
Hoare on Testing
On the flight to the ISO C standards meeting this morning, I was reading this month's issue of CACM, and found that Sir C.A.R. (Tony) Hoare wrote a nice piece called Retrospective: An Axiomatic Basis for Computer Programming. Hoare has long been a noted proponent of axioms and formal proofs of program correctness. In that light, [...]
Deprecating export considered for ISO C++0x
How interesting. I'm at the ISO C++ meeting in Santa Cruz, CA, USA this week. Ten minutes ago we had a committee straw poll about whether we should remove, deprecate, or leave as-is the export template feature for C++0x. The general sentiment was to remove or deprecate it, with deprecation getting the strongest support because it's [...]
Deprecating export considered for ISO C++0x
How interesting. I'm at the ISO C++ meeting in Santa Cruz, CA, USA this week. Ten minutes ago we had a committee straw poll about whether we should remove, deprecate, or leave as-is the export template feature for C++0x. The general sentiment was to remove or deprecate it, with deprecation getting the strongest support because it's [...]
A Concurrency Poll
I've opened up a short concurrency poll to get a sense of what concurrency issues are top-of-mind for programmers, and I'd appreciate it if you could take a few minutes to participate. Some questions are about what you want to learn more about, others about your tools of choice in specific areas, and a few [...]
A Concurrency Poll
I've opened up a short concurrency poll to get a sense of what concurrency issues are top-of-mind for programmers, and I'd appreciate it if you could take a few minutes to participate. Some questions are about what you want to learn more about, others about your tools of choice in specific areas, and a few [...]
Mailbag: Shutting up compiler warnings
I recently received the following reader question (slightly edited): About the (Stroustrup) approach of implementing IsDerivedFrom at page 27 in your book More Exceptional C++: [¿] why the second pointer assignment in: static void Constraints(D* p) { B* pb=p; // okay, D better inherit from [...]
Mailbag: Shutting up compiler warnings
I recently received the following reader question (slightly edited): About the (Stroustrup) approach of implementing IsDerivedFrom at page 27 in your book More Exceptional C++: [¿] why the second pointer assignment in: static void Constraints(D* p) { B* pb=p; // okay, D better inherit from B… pb=p; // huh? why this again? } Isn’t the initialization ” B* pb=p ” enough? [...]
whois terry.crowley
Astute readers may have noticed that Terry Crowley's name frequently crops up in the Acknowledgments section of my Effective Concurrency columns. Who is Terry? To answer, Mary-Jo Foley profiles him this week. Posted in Concurrency, Opinion & Editorial
whois terry.crowley
Astute readers may have noticed that Terry Crowley's name frequently crops up in the Acknowledgments section of my Effective Concurrency columns. Who is Terry? To answer, Mary-Jo Foley profiles him this week. Posted in Concurrency, Opinion & Editorial
Effective Concurrency: Avoid Exposing Concurrency ¿ Hide It Inside Synchronous Methods
This month's Effective Concurrency column, Avoid Exposing Concurrency ¿ Hide It Inside Synchronous Methods, is now live on DDJ's website. From the article: You have a mass of existing code and want to add concurrency. Where do you start? Let’s say you need to migrate existing code to take advantage of concurrent execution or scale on parallel hardware. [...]
Effective Concurrency: Avoid Exposing Concurrency ¿ Hide It Inside Synchronous Methods
This month's Effective Concurrency column, Avoid Exposing Concurrency ¿ Hide It Inside Synchronous Methods, is now live on DDJ's website. From the article: You have a mass of existing code and want to add concurrency. Where do you start? Let's say you need to migrate existing code to take advantage of concurrent execution or scale on parallel hardware. [...]
“What's the Best Way To Process a Pool of Work?”
“What's the best way to process a pool of work?” is a recurring question. As usual, the answer is “it depends” because the optimal answer often depends on both the characteristics of the work itself and the constraints imposed by run-time system resources. For example, I recently received the following email from reader Sören Meyer-Eppler, where [...]
“What's the Best Way To Process a Pool of Work?”
“What's the best way to process a pool of work?” is a recurring question. As usual, the answer is “it depends” because the optimal answer often depends on both the characteristics of the work itself and the constraints imposed by run-time system resources. For example, I recently received the following email from reader Sören Meyer-Eppler, where [...]
When is a zero-length array okay?
I just received a reader email that asked about GotW #42: You write "Non-Problem: Zero-Length Arrays Are Okay", but both 14882:2003 and N2914 "[dcl.array]" say "If the constant-expression (5.19) is present, it shall be an integral constant expression and its value shall be greater than zero.". Shall we assume that you overrule the standard? :-) Or [...]
When is a zero-length array okay?
I just received a reader email that asked about GotW #42: You write "Non-Problem: Zero-Length Arrays Are Okay", but both 14882:2003 and N2914 "[dcl.array]" say "If the constant-expression (5.19) is present, it shall be an integral constant expression and its value shall be greater than zero.". Shall we assume that you overrule the standard? :-) Or [...]
Effective Concurrency: Design for Manycore Systems
This month's Effective Concurrency column, Design for Manycore Systems, is now live on DDJ's website. From the article: Why worry about “manycore” today? Dual- and quad-core computers are obviously here to stay for mainstream desktops and notebooks. But do we really need to think about "many-core" systems if we’re building a typical mainstream application right now? I find [...]
Effective Concurrency: Design for Manycore Systems
This month's Effective Concurrency column, Design for Manycore Systems, is now live on DDJ's website. From the article: Why worry about “manycore” today? Dual- and quad-core computers are obviously here to stay for mainstream desktops and notebooks. But do we really need to think about "many-core" systems if we’re building a typical mainstream application right now? I find [...]
Suggestions on improving C++ skills
Someone just asked me about getting more proficient in C++, and with their permission I thought I'd share the question and my answer in case it's of broader interest to folks wanting to improve their C++ skills. Here's the question: I need to take my C++ knowledge up a notch – or two. On a scale of [...]
Suggestions on improving C++ skills
Someone just asked me about getting more proficient in C++, and with their permission I thought I'd share the question and my answer in case it's of broader interest to folks wanting to improve their C++ skills. Here's the question: I need to take my C++ knowledge up a notch – or two. On a scale of [...]
Trip Report: Exit Concepts, Final ISO C++ Draft in ~18 Months
A week ago, I attended the summer ISO C++ meeting in Frankfurt, Germany. The C++ committee made a lot of progress on addressing national body comments on the full committee draft published last year, and is well on the way to publishing a second and final CD this winter with a final draft international standard [...]
Trip Report: Exit Concepts, Final ISO C++ Draft in ~18 Months
A week ago, I attended the summer ISO C++ meeting in Frankfurt, Germany. The C++ committee made a lot of progress on addressing national body comments on the full committee draft published last year, and is well on the way to publishing a second and final CD this winter with a final draft international standard [...]
Effective Concurrency: The Power of “In Progress”
This month's Effective Concurrency column, The Power of “In Progress”, is now live on DDJ's website. From the article: Don’t let a long-running operation take hostages. When some work that takes a long time to complete holds exclusive access to one or more popular shared resources, such as a thread or a mutex that controls access to [...]
Effective Concurrency: The Power of “In Progress”
This month's Effective Concurrency column, The Power of “In Progress”, is now live on DDJ's website. From the article: Don’t let a long-running operation take hostages. When some work that takes a long time to complete holds exclusive access to one or more popular shared resources, such as a thread or a mutex that controls access to [...]
Answering email about error handling in concurrent code
Someone emailed me today asking: I’m writing because I’m somewhat conscious of what I would consider a rather large hole in the parallel programming literature. ¿ What if one or more of your tasks throws an exception? Should the thread that runs the task swallow it? Should the caught exceptions get stashed somewhere so that the "parent" [...]
Answering email about error handling in concurrent code
Someone emailed me today asking: I’m writing because I’m somewhat conscious of what I would consider a rather large hole in the parallel programming literature. ¿ What if one or more of your tasks throws an exception? Should the thread that runs the task swallow it? Should the caught exceptions get stashed somewhere so that the "parent" [...]
Effective Concurrency: Break Up and Interleave Work to Keep Threads Responsive
This month's Effective Concurrency column, “Break Up and Interleave Work to Keep Threads Responsive”, is now live on DDJ's website. Sorry for the long title; suggestions welcome. I always try to word the title to make it (a) short, (b) active, and (c) advice, but sometimes I'll settle for two of those, or just one, until [...]
Effective Concurrency: Break Up and Interleave Work to Keep Threads Responsive
This month's Effective Concurrency column, “Break Up and Interleave Work to Keep Threads Responsive”, is now live on DDJ's website. Sorry for the long title; suggestions welcome. I always try to word the title to make it (a) short, (b) active, and (c) advice, but sometimes I'll settle for two of those, or just one, until [...]
Truth In Spam
This afternoon I was just finishing up my next Effective Concurrency article (it'll be up in a few days), when some spam email arrived. Just as my fingers' auto-delete macro was about to fire, I noticed something odd about the name of the attachment and did a double-take: Cool! There must be some kind of [...]
Truth In Spam
This afternoon I was just finishing up my next Effective Concurrency article (it'll be up in a few days), when some spam email arrived. Just as my fingers' auto-delete macro was about to fire, I noticed something odd about the name of the attachment and did a double-take: Cool! There must be some kind of [...]
Dress Re-Hearsal?
An amusing hearse, seen on a neighborhood street: Here's a close-up of the license plate: Made my morning. Posted in Friday Thoughts
Dress Re-Hearsal?
An amusing hearse, seen on a neighborhood street: Here's a close-up of the license plate: Made my morning. Posted in Friday Thoughts
VS2010 Beta 1 Now Available
For those of you who are interested in using or trying Microsoft development tools, I'm happy to report that Visual Studio 2010 Beta 1 is now available. If you're interested in: concurrency and parallel computing, check out the new concurrency runtime (ConcRT) that implements efficient work stealing for scalable code, the Asynchronous Agents Library and the Parallel [...]
VS2010 Beta 1 Now Available
For those of you who are interested in using or trying Microsoft development tools, I'm happy to report that Visual Studio 2010 Beta 1 is now available. If you're interested in: concurrency and parallel computing, check out the new concurrency runtime (ConcRT) that implements efficient work stealing for scalable code, the Asynchronous Agents Library and the Parallel [...]
Effective Concurrency: Eliminate False Sharing
This month's Effective Concurrency column, “Eliminate False Sharing”, is now live on DDJ's website. People keep writing asking me about my previous mentions of false sharing, even debating whether it's really a problem. So this month I decided to treat it in depth, including: A compelling and realistic example where just changing a couple of lines to [...]
Effective Concurrency: Eliminate False Sharing
This month's Effective Concurrency column, “Eliminate False Sharing”, is now live on DDJ's website. People keep writing asking me about my previous mentions of false sharing, even debating whether it's really a problem. So this month I decided to treat it in depth, including: A compelling and realistic example where just changing a couple of lines to [...]
You Know When Your UI Needs Help When¿
Seen at a gas station: You know your UI has usability issues when people tape multiple signs on your gas pump to help people get through the intricate and error-prone process of purchasing fuel. Why does the upper note exist? The trouble is that there's a Debit button but not a Credit button, and so since [...]
You Know When Your UI Needs Help When¿
Seen at a gas station: You know your UI has usability issues when people tape multiple signs on your gas pump to help people get through the intricate and error-prone process of purchasing fuel. Why does the upper note exist? The trouble is that there's a Debit button but not a Credit button, and so since [...]
Effective Concurrency: Use Thread Pools Correctly ¿ Keep Tasks Short and Nonblocking
This month's Effective Concurrency column, “Use Thread Pools Correctly: Keep Tasks Short and Nonblocking”, is now live on DDJ's website. From the article: ¿ But the thread pool is a leaky abstraction. That is, the pool hides a lot of details from us, but to use it effectively we do need to be aware of some things [...]
Effective Concurrency: Use Thread Pools Correctly ¿ Keep Tasks Short and Nonblocking
This month's Effective Concurrency column, “Use Thread Pools Correctly: Keep Tasks Short and Nonblocking”, is now live on DDJ's website. From the article: ¿ But the thread pool is a leaky abstraction. That is, the pool hides a lot of details from us, but to use it effectively we do need to be aware of some things [...]
A Wryly Repurposed Quotation
In my travels, I recently came across this empty store with an almost-empty box beside the front door. As seen in Monterey, CA: Evidently some character had also noticed the empty store with its empty box, and decided to do a little walk-by wry economic commentary via repurposed quotation. Zooming on the once-empty box: Posted in Friday [...]
A Wryly Repurposed Quotation
In my travels, I recently came across this empty store with an almost-empty box beside the front door. As seen in Monterey, CA: Evidently some character had also noticed the empty store with its empty box, and decided to do a little walk-by wry economic commentary via repurposed quotation. Zooming on the once-empty box: Posted in Friday [...]
New Dates for Effective Concurrency Seminar in Europe: May 27-29, Stockholm, Sweden
Now that I'm over the icky flu that forced me to postpone the seminar two weeks ago, I'm happy to say that we have new dates: Effective Concurrency (Europe) will be held on May 27-29, 2009, in Stockholm, Sweden. I’ll cover the following topics: Fundamentals: Define basic concurrency goals and requirements ¿ Understand applications' scalability needs [...]
New Dates for Effective Concurrency Seminar in Europe: May 27-29, Stockholm, Sweden
Now that I'm over the icky flu that forced me to postpone the seminar two weeks ago, I'm happy to say that we have new dates: Effective Concurrency (Europe) will be held on May 27-29, 2009, in Stockholm, Sweden. I’ll cover the following topics: Fundamentals: Define basic concurrency goals and requirements ¿ Understand applications' scalability needs [...]
RIP: SD Conferences
The latest casualties in the technical education world are the Software Development conferences ¿ SD West, SD Best Practices, and Architecture & Design World ¿ which are being discontinued effective immediately, making the SD West that was just held earlier this month was the last of its kind. The conferences were run by the same [...]
RIP: SD Conferences
The latest casualties in the technical education world are the Software Development conferences ¿ SD West, SD Best Practices, and Architecture & Design World ¿ which are being discontinued effective immediately, making the SD West that was just held earlier this month the last of its kind. The conferences were run by the same company [...]
Effective Concurrency: Use Threads Correctly = Isolation + Asynchronous Messages
This month's Effective Concurrency column, “Use Threads Correctly = Isolation + Asynchronous Messages”, is now live on DDJ's website. From the article: Explicit threads are undisciplined. They need some structure to keep them in line. In this column, we’re going to see what that structure is, as we motivate and illustrate best practices for using threads — [...]
Effective Concurrency: Use Threads Correctly = Isolation + Asynchronous Messages
This month's Effective Concurrency column, “Use Threads Correctly = Isolation + Asynchronous Messages”, is now live on DDJ's website. From the article: Explicit threads are undisciplined. They need some structure to keep them in line. In this column, we’re going to see what that structure is, as we motivate and illustrate best practices for using threads — [...]
Postponed: Effective Concurrency Europe
Right now I should be at 40,000 feet somewhere over Baffin Island on my way to Stockholm for Effective Concurrency Europe, but instead I'm in bed with a fever that I've had since Wednesday night and still unable to talk. The organizer and I have been staying in touch with flu updates every few hours [...]
Postponed: Effective Concurrency Europe
Right now I should be at 40,000 feet somewhere over Baffin Island on my way to Stockholm for Effective Concurrency Europe, but instead I'm in bed with a fever that I've had since Wednesday night and still unable to talk. The organizer and I have been staying in touch with flu updates every few hours [...]
Free Training For Laid-Off Developers
Like many areas in the United States, Seattle has recently been hit with layoffs and downsizing in our industry. So it's quite timely that Steve McConnell's company Construx, in the Seattle area, is offering free training for laid-off software workers: After listening to doom and gloom economic reports for the past few months, we decided we [...]
Free Training For Laid-Off Developers
Like many areas in the United States, Seattle has recently been hit with layoffs and downsizing in our industry. So it's quite timely that Steve McConnell's company Construx, in the Seattle area, is offering free training for laid-off software workers: After listening to doom and gloom economic reports for the past few months, we decided we [...]
Effective Concurrency: Sharing Is the Root of All Contention
This month's Effective Concurrency column, “Sharing Is the Root of All Contention”, is now live on DDJ's website. This article aims to address the root cause behind some frequently made assertions: Statements like “locks kill scalability” and “CAS kills scalability” are mostly true but focus on symptoms rather than causes; and others such as “reader/writer mutexes [...]
Effective Concurrency: Sharing Is the Root of All Contention
This month's Effective Concurrency column, “Sharing Is the Root of All Contention”, is now live on DDJ's website. This article aims to address the root cause behind some frequently made assertions: Statements like “locks kill scalability” and “CAS kills scalability” are mostly true but focus on symptoms rather than causes; and others such as “reader/writer mutexes [...]
Income in Perspective: 2 Bppl @ $3/day
I just saw a CNN headline that read: “Young workers scrimp to live on $15/wk.” Before reading further, what do you think: Is that stunning and shocking? Or shockingly typical? The story turned out to be a piece about white-collar workers in China trying to live frugally, spending only 100 Yuan on travel and food during [...]
Income in Perspective: 2 Bppl @ $3/day
I just saw a CNN headline that read: “Young workers scrimp to live on $15/wk.” Before reading further, what do you think: Is that stunning and shocking? Or shockingly typical? The story turned out to be a piece about white-collar workers in China trying to live frugally, spending only 100 Yuan on travel and food during [...]
Effective Concurrency Seminar in Europe: March 16-18, Stockholm, Sweden
A number of people have asked whether I will be teaching my Effective Concurrency seminar in Europe. The answer is yes: Effective Concurrency (Europe) will be held on March 16-18, 2009, in Stockholm, Sweden. This is my only public European seminar in 2009. I’ll cover the following topics: Fundamentals: Define basic concurrency goals and requirements ¿ Understand [...]
Effective Concurrency Seminar in Europe: March 16-18, Stockholm, Sweden
A number of people have asked whether I will be teaching my Effective Concurrency seminar in Europe. The answer is yes: Effective Concurrency (Europe) will be held on March 16-18, 2009, in Stockholm, Sweden. This is my only public European seminar in 2009. I’ll cover the following topics: Fundamentals: Define basic concurrency goals and requirements ¿ Understand [...]
From the "we know what they meant, but it's not what they said" department
While walking our dogs recently, we came across several of these signs — ironically, in front of our neighborhood school. Posted in Friday Thoughts
From the "we know what they meant, but it's not what they said" department
While walking our dogs recently, we came across several of these signs — ironically, in front of our neighborhood school. Posted in Friday Thoughts
Effective Concurrency: volatile vs. volatile
This month’s Effective Concurrency column, “volatile vs. volatile”, is now live on DDJ’s website and also appears in the print magazine. (As a historical note, it’s DDJ’s final print issue, as I mentioned previously.) This article aims to answer the frequently asked question: “What does volatile mean?” The short answer: “It depends, do you mean Java/.NET [...]
Effective Concurrency: volatile vs. volatile
This month’s Effective Concurrency column, “volatile vs. volatile”, is now live on DDJ’s website and also appears in the print magazine. (As a historical note, it’s DDJ’s final print issue, as I mentioned previously.) This article aims to answer the frequently asked question: “What does volatile mean?” The short answer: “It depends, do you mean Java/.NET [...]
Answer to "16 Technologies": Engelbart and the Mother of All Demos
A few days ago I posted a challenge to name the researcher/team and approximate year each of the following 16 important technologies was first demonstrated. In brief, they were: The personal computer for dedicated individual use all day long. The mouse. Internetworks. Network service discovery. Live collaboration and desktop/app sharing. Hierarchical structure within a file system and within a document. Cut/copy/paste, with [...]
Answer to "16 Technologies": Engelbart and the Mother of All Demos
A few days ago I posted a challenge to name the researcher/team and approximate year each of the following 16 important technologies was first demonstrated. In brief, they were: The personal computer for dedicated individual use all day long. The mouse. Internetworks. Network service discovery. Live collaboration and desktop/app sharing. Hierarchical structure within a file system and within a document. Cut/copy/paste, with [...]
16 Important Technologies: Who demonstrated each one first?
We enjoy such an abundance of computing riches that it’s easy to take wonderful technological ideas for granted. Yet so many of the pieces of our modern computing experience that we consider routine today were at one time unimaginable. After all, back in the early days of computing, we were still discovering what these newfangled [...]
16 Important Technologies: Who demonstrated each one first?
We enjoy such an abundance of computing riches that it’s easy to take wonderful technological ideas for granted. Yet so many of the pieces of our modern computing experience that we consider routine today were at one time unimaginable. After all, back in the early days of computing, we were still discovering what these newfangled [...]
The 2008 Media Inflection: Meet Dr. Web, the New Gorilla
[edited 2009.01.15 to add link to DDJ's announcement] 2008 was quite a year, full of landmark events that were certainly historic, if not always welcome. If I had to pick one technology-related highlight from the past year, it would be this: A notable inflection point in the ongoing shift from traditional media to the web. Given that [...]
The 2008 Media Inflection: Meet Dr. Web, the New Gorilla
(NOTE: This article mentions significant news about Dr. Dobb’s Journal that actually is not quite officially announced yet. When it is, I’ll update this with a link to the announcement, which will include details of what it means for subscribers. In the meantime, DDJ editor Jon Erickson kindly agreed to let me blog about it [...]
TRS-80 vs. Alpha, and Parallel Optimization
Lest people get the wrong idea, I enjoy reading Jeff Atwood’s blog and agree with much of what he writes so entertainingly and provocatively. So far I’ve only responded when I strongly felt differently about something, which has been a grand total of twice now. So let me also offer an example of something I wholeheartedly [...]
Rich-GUI SaaS/Web 2.0 Apps Should Not Be Considered Harmful
Yesterday, the ever-popular Jeff Atwood (of Coding Horror fame) wrote a nice piece on how not to write Web 2.0 UIs. Unfortunately, it’s exactly backwards: What he identifies as problem is in fact not only desirable, but necessary. [Aside: Jeff, I know you love pictures, but is that particular one really necessary? Yes, I know it's [...]
Effective Concurrency: Measuring Parallel Performance – Optimizing a Concurrent Queue
This month’s Effective Concurrency column is special — it turned into a feature article. “Measuring Parallel Performance: Optimizing a Concurrent Queue” just went live on DDJ’s site, and will also appear in the print magazine. From the article: How would you write a fast, internally synchronized queue, one that callers can use without any explicit external locking [...]
(out of order) Effective Concurrency: Writing Lock-Free Code – A Corrected Queue
Oops, I just noticed that I forgot to blog about one recent Effective Concurrency column: “Writing Lock-Free Code: A Corrected Queue” which also appeared in the October 2008 print issue of Dr. Dobb’s Journal. From the article: As we saw last month [1], lock-free coding is hard even for experts. There, I dissected a published lock-free queue [...]
Effective Concurrency: Understanding Parallel Performance
Wow, DDJ just posted the previous one a few days ago, and already the next Effective Concurrency column is available: “Understanding Parallel Performance” just went live, and will also appear in the print magazine. From the article: Let’s say that we’ve slickly written our code to apply divide-and-conquer algorithms and concurrent data structures and parallel traversals and [...]
Effective Concurrency: Writing a Generalized Concurrent Queue
The next Effective Concurrency column, “Writing a Generalized Concurrent Queue”, just went live on DDJ's site, and also appears in the print magazine. From the article: Last month [1], I showed code for a lock-free queue that supported the limited case of exactly two threads–one producer, and one consumer. That’s useful, but maybe not as exciting now [...]
September 2008 ISO C++ Standards Meeting: The Draft Has Landed, and a New Convener
The ISO C++ committee met in San Francisco, CA, on September 15-20. You can find the minutes here, including the votes to approve papers. The most important thing the committee accomplished was this: Complete C++0x draft published for international ballot The biggest goal entering this meeting was to make C++0x feature-complete and stay on track to publish a [...]
Stroustrup & Sutter on C++ 2008, Second Showing: October 30-31, 2008, in Boston, MA, USA
This spring at SD West in Santa Clara, Bjarne and I did a fresh-and-updated S&S event with lots of new material. We don’t usually repeat the same material, but this time there’s been such demand that we agreed to do a repeat… four weeks from today, in Boston. More information and talk descriptions follow. CONTENT ADVISORY Again, [...]
Data and Perspective
Even genuinely newsworthy topics can get distorted when commentators exaggerate or use data selectively. Here are two recent examples I noticed. “This is the worst financial crisis since the Great Depression.” It’s true that it’s bad and even historic, and this sound bite correctly doesn’t actually claim it’s as bad as the Depression. I hope it [...]
Ralph Johnson on Parallel Programming Patterns
A few days ago at UIUC, Ralph Johnson gave a very nice talk on “Parallel Programming Patterns.” It’s now online, and here’s the abstract: Parallel programming is hard. One proposed solution is to provide a standard set of patterns. Learning the patterns would help people to become expert parallel programmers. The patterns would provide a vocabulary [...]
Effective Concurrency Course: Sep 22-24, 2008
The first offering of the three-day Effective Concurrency course in May went very well. We’re doing it again later this month — this will be the last offering this year. Here’s the brief information (more details below): 3-Day Seminar: Effective Concurrency September 22-4, 2008Bellevue, WA, USADeveloped and taught by Herb Sutter This course covers the fundamental tools that software [...]
Anon on Data
The adage, quoted again this week by Bruce Schneier: The plural of “anecdote” is not “data.” But lest we enshrine raw data as holy in itself, another perspective: And the plural of “datum” is not “proof.”
Embedded Multicore Development Webinar with Lee, Reinders, and Truchard
Last month, I was privileged to be part of a panel in a webinar on Embedded Multicore Development moderated by Richard Nass, Editor-in-Chief of Embedded Systems Design, Embedded.com, and the Embedded Systems Conferences. It’s online and available on demand. I say “privileged” especially because of the stature of the other panelists. These distinguished gentlemen were: Edward A. [...]
Effective Concurrency: Lock-Free Code – A False Sense of Security
DDJ posted the next Effective Concurrency column a couple of weeks earlier than usual. You can find it here: “Lock-Free Code: A False Sense of Security”, just went live on DDJ’s site, and also appears in the print magazine. This is a special column in a way, because I rarely critique someone else’s published code. However, [...]
Server Concurrency != Client Concurrency
Today I received an email that asked: I have recently come across your excellent articles on concurrency and the changes in software writing paradigm. They make a lot of sense, but I am having trouble translating them to my world of Telecom oriented web services, where practically everything is run through a DBMS. It seems to [...]
Effective Concurrency: The Many Faces of Deadlock
The latest Effective Concurrency column, “The Many Faces of Deadlock”, just went live on DDJ’s site, and also appears in the print magazine. From the article: … That’s the classic deadlock example from college. Of course, two isn’t a magic number. An improved definition of deadlock is: “When N threads enter a locking cycle where each [...]
Constructor Exceptions in C++, C#, and Java
I just received the following question, whose answer is the same in C++, C#, and Java. Question: In the following code, why isn’t the destructor/disposer ever called to clean up the Widget when the constructor emits an exception? You can entertain this question in your mainstream language of choice: // C++ (an edited version of the original [...]
Research Firms Are Good At Research, Not Technology Predictions
This story has been picked up semi-widely since last night. I’m sure this Steven Prentice they quote is a fine (Gartner) Fellow, but really: The computer mouse is set to die out in the next five years and will be usurped by touch screens and facial recognition, analysts believe. Seriously, does anyone who uses computers daily really [...]
Kindling
Two weeks ago, I broke down and bought a Kindle. I like it: It’s a good and well-designed reader, and the experience is much better than the other e-book reading I’ve done before on phones and PDAs. I like how you when you bookmark a page, you can see it… the corner of the page gets [...]
Hungarian Notation Is Clearly (Good|Bad)
A commenter asked: thread_local X tlsX; ?? Herb, I hope you aren't backtracking on Hungarian Notation now that you work for Microsoft. Say it aint so¿ It ain’t so. Besides, Microsoft’s Framework Developer’s Guide prominently intones: “Do not use Hungarian notation.” Warts like “tls” and “i” are about lifetime and usage, not type. Here “tls” denotes that each thread [...]
Trip Report: June 2008 ISO C++ Standards Meeting
The ISO C++ committee met in Sophia Antipolis, France on June 6-14. You can find the minutes here (note that these cover only the whole-group sessions, not the breakout technical sessions where we spend most of the week). Here's a summary of what we did, with links to the relevant papers to read for more details, [...]
Effective Concurrency: Choose Concurrency-Friendly Data Structures
The latest Effective Concurrency column, “Choose Concurrency-Friendly Data Structures”, just went live on DDJ’s site, and also appears in the print magazine. From the article: What is a high-performance data structure? To answer that question, we’re used to applying normal considerations like Big-Oh complexity, and memory overhead, locality, and traversal order. All of those apply to [...]
Seneca and Shakespeare on Goals and Opportunities
From the ancient dramatist Seneca the Younger: “Our plans miscarry because they have no aim. When a man does not know what harbor he is making for, no wind is the right wind.” And from the Bard, not to be outdone in metaphors of ships and seas: “There is a tide in the affairs of men,Which, taken at [...]
Talking Lambdas with Bill Gates on BBC
[6/25: Added YouTube availability and notes.] A few weeks ago, the BBC was in town to tape a special interview/documentary on Bill Gates. As part of the footage they got, there’s a Bill-in-a-technical-review-meeting shot that includes yours truly at a whiteboard presenting an overview-plus-drilldown on C++0x lambda functions. It was a good review; Bill’s a sharp [...]
Type Inference vs. Static/Dynamic Typing
Jeff Atwood just wrote a nice piece on why type inference is convenient, using a C# sample: I was absolutely thrilled to be able to refactor this code: StringBuilder sb = new StringBuilder(256); UTF8Encoding e = new UTF8Encoding(); MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); Into this: var sb = new StringBuilder(256); var e = new UTF8Encoding(); var md5 = new MD5CryptoServiceProvider(); It’s not dynamic typing, [...]
Stroustrup & Sutter on C++: The Interviews
While Bjarne and I were at SD for S&S, we took time out to do an interview together with Ted Neward for InformIT. I just got word that it went live… here are the links. On the OnSoftware ¿ Video (RSS): OnSoftware - Bjarne Stroustrup & Herb Sutter on the Future of C++ - Part 1 OnSoftware - [...]
Memory Model talk at Gamefest 2008
I’ll be giving a memory model talk at Gamefest in Seattle next month. Here’s a quick summary: Memory Models: Foundational Knowledge for Concurrent CodeJuly 22-23, 2008Gamefest 2008Seattle, WA, USA A memory model defines a contract between the programmer and the execution environment, that trades off: programmability via stronger guarantees for programmers, vs. performance via greater flexibility for reordering program [...]
Effective Concurrency: Maximize Locality, Minimize Contention
The latest Effective Concurrency column, “Maximize Locality, Minimize Contention”, just went live on DDJ’s site, and also appears in the print magazine. From the article: Want to kill your parallel application’s scalability? Easy: Just add a dash of contention. Locality is no longer just about fitting well into cache and RAM, but also about avoiding scalability busters [...]
Part 2 of concurrency interview with DevX
Part 2 of DevX’s interview with me about concurrency just went live on the web. From the article’s blurb: What does the future hold for concurrency? What will happen to the tools and techniques around concurrent programming? In part two of our series, concurrency guru Herb Sutter talks about these issues and what developers need to [...]
Where to find the state of ISO C++ evolution
After each ISO C++ meeting, I post a trip report update to my blog summarizing what’s new as of that meeting with a drill-down into some highlights. But wouldn’t it be handy to have an up-to-date summary scorecard with a snapshot of all proposals’ status to date? Indeed it would, and so today someone asked [...]
Quad-core a "waste of electricity"?
Jeff Atwood wrote: In my opinion, quad-core CPUs are still a waste of electricity unless you're putting them in a server. Four cores on the desktop is great for bragging rights and mathematical superiority (yep, 4 > 2), but those four cores provide almost no benchmarkable improvement in the type of applications most people use. Including [...]
Usability: Watch out for those non-errors that start with “ER”
Today I had a nice lesson in transaction codes. I did a happy little online transaction, and then the confirmation screen came up with what at first glance looked like an error. It startled me, until I read more closely: Thank you. Your transaction has been placed and received by SuperMondoCorp. Transaction Confirmation Number: ER6661234567 “Yikes!” thought I to myself, [...]
Effective Concurrency: Interrupt Politely
The latest Effective Concurrency column, “Interrupt Politely”, just went live on DDJ’s site, and will also appear in the print magazine. From the article: Violence isn’t the answer. We want to be able to stop a running thread or task when we discover that we no longer need or want to finish it. As we saw [...]
Cringe not: Vectors are guaranteed to be contiguous
Andy Koenig is the expert’s expert, and I rarely disagree with him. And, well, when I do disagree I’m invariably wrong… but there’s a first time for everything, so I’ll take my chances one more time. I completely agree with the overall sentiment of Andy’s blog entry today: I spend a fair amount of time reading (and [...]
Visual C++ 2008 Feature Pack now available
Back in November, I reported that we’d be shipping Visual C++ 2008 that month (we did!) and that we’d soon thereafter be doing the “agile thing” and shipping a major update mere months later, instead of waiting two years between releases per our prior tradition. I wrote: The update is expected to be available in beta [...]
Trip Report: February/March 2008 ISO C++ Standards Meeting
[Updated Apr 3 to note automatic deduction of return type.] The ISO C++ committee met in Bellevue, WA, USA on February 24 to March 1, 2008. Here's a quick summary of what we did (with links to the relevant papers to read for more details), and information about upcoming meetings. Lambda functions and closures (N2550) For me, easily [...]
Concurrency Interview with DevX
I recently spent an hour on the phone to talk concurrency with DevX’s Alexa Weber Morales. Part 1 of that interview just went live on the web, and focuses mostly on what concurrency and parallelism are, how to take advantage of multicore chips, and whether concurrency will ever be really accessible to mainstream developers. The [...]
New Course Available: Effective Concurrency
Many of you have kindly sent mail about my Effective Concurrency columns and asking when there’ll be a course. Well, I’m happy to announce that the answer is: May 19-21, 2008. Here’s the brief information (more details below): 3-Day Seminar: Effective Concurrency May 19-21, 2008 Bellevue, WA, USA Developed and taught by Herb Sutter This course covers the fundamental tools that [...]
Effective Concurrency: Super Linearity and the Bigger Machine
The latest Effective Concurrency column, "Super Linearity and the Bigger Machine", just went live on DDJ’s site, and will also appear in the print magazine. From the article: There are two main ways to achieve superlinear scalability, or to use P processors to compute an answer more than P times faster…: Do disproportionately less work. [...]
Stroustrup & Sutter: The Lyrics
Last week’s Stroustrup & Sutter on C++ was a huge amount of fun, and Bjarne and I want to thank everyone who came. It was a record-shattering year, and it’s great to see C++ clearly thriving and growing. A lot of people requested the (modified) lyrics to the songs we performed (yes, if you missed the [...]
How parallelism demos are useful
In "Break Amdahl’s Law!", I described ways to enable scalable applications, and wrote in part: But don’t show me ray-traced bouncing balls or Mandelbrot graphics or the other usual embarrassingly parallel but niche (or downright useless) clichés–what we’re looking for are real ideas of real software we could imagine real kids and grandmothers using that could [...]
Effective Concurrency: Going Superlinear
The latest Effective Concurrency column, "Going Superlinear", just went live on DDJ’s site, and will also appear in the print magazine. From the article: We spend most of our scalability lives inside a triangular box, shown in Figure 1. It reminds me of the early days of flight: We try to lift ourselves away from the [...]
What Not To Code
At Stroustrup & Sutter on C++ this March, one of my sessions will be on "What Not To Code" (submission link). The premise is to try something new I haven’t done before: A session dedicated to making over code nominated by you, the public, in the few weeks before the talk. In return for your [...]
Many Books
When I walk into a Chapters or a Borders, seeing the many shelves of books often recalls the ancient writer’s words about quality vs. quantity, circa 1000 BC: "To the making of many books there is no end." So true. Yet that observation predates the printing press… and netnews… and now RSS. (Yes, I’ve been thinking of [...]
Stroustrup & Sutter on C++: March 3-4, 2008, in Santa Clara, CA, USA
I’m pleased to announce that Bjarne and I are going to have another two-day event co-located with SD West in San Jose, California, this March. Most of the talks are new ones we’ve never given publicly before, along with updated classics that people liked the best in the past. This year, three of my [...]
Newton on Tact
"Tact is the knack of making a point without making an enemy."
Effective Concurrency: Break Amdahl's Law!
The latest Effective Concurrency column, "Break Amdahl’s Law!", just went live on DDJ’s site, and will also appear in the print magazine. From the article: Back in 1967, Gene Amdahl famously pointed out what seemed like a fundamental limit to how fast you can make your concurrent code: Some amount of a program’s processing is fully [...]
GotW #88: A Candidate For the “Most Important const”
A friend recently asked me whether Example 1 below is legal, and if so what it means. It led to a nice discussion I thought I’d post here. Since it was in close to GotW style already, I thought I’d do another honorary one after all these years… no, I have not made a New [...]
Effective Concurrency: Use Lock Hierarchies to Avoid Deadlock
The latest Effective Concurrency column, "Use Lock Hierarchies to Avoid Deadlock", just went live on DDJ’s site, and will also appear in the print magazine. From the article: … The only way to eliminate such a potential deadlock is to make sure that all mutexes ever held at the same time are acquired in a consistent order. [...]
Let's Be Thoughtful Out There
I knew Hanlon’s Razor: "Never attribute to malice that which can be adequately explained by stupidity." And the variants attributed to Heinlein, described on the same page as adding "… but don’t rule out malice." or "… but keep your eyes open." But I only just now came across Grey’s Law, which follows the flavor of Clarke’s [...]
TR1 in (Free) VC++ Express
A few weeks ago I blogged about the VC++ update we plan to ship in the first half of next year, which includes extensive additions to MFC as well as TR1. TR1 is the first set of library extensions published by the C++ committee, nearly all of which have also been adopted into the next [...]
Parallel Computing Releases at Microsoft
For those of you who may be interested in concurrency for Microsoft platforms, and .NET in particular, I’m happy to report some fresh announcements: MSDN has launched a Parallel Computing developer center. This is a section of the MSDN site focused on "providing information, ideas, community, and technology to developers to make it easier to write programs that perform and [...]
The Concurrency Land Rush: 2007-20??
Every time that we experience a "wave" in which the industry takes a programming paradigm that’s been growing in a niche, and brings it to the mainstream, we go through similar phases: A land rush phase during which vendors try to stake out their turf. The market sees an explosive proliferation of products trying to enable [...]