Source blog: Sutter's Mill
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 [...]
