About UsCommunityTrainingContent DevelopmentContact

Blogs
Pluralsight
Course Schedule
Scott Allen
Craig Andera
Mark Baciak
Don Box
Keith Brown
John CJ
Tim Ewald
Jon Fancey
Jon Flanders
Vijay Gajjala
Kirill Gavrylyuk
Ian Griffiths
Martin Gudgin
Jim Johnson
John Justice
Mike Henderson
Joe Hummel
Matt Milner
Ted Neward
Fritz Onion
Brian Randell
Jeffrey Schlimmer
Aaron Skonnard
Dan Sullivan
Herb Sutter
Doug Walter
Jim Wilson
Mike Woodring

My Links
Home
Contact
Login

Blog Stats
Posts - 50
Stories - 0
Comments - 146
Trackbacks - 40

.NET Bloggers
Chris Brumme(rss)
Don Box(rss)
Joel Pobar(rss)

VC++ Bloggers
Andy Rich(rss)
Brandon Bray(rss)
Stan Lippman(rss)

Archives
Dec, 2006 (1)
Aug, 2006 (2)
Jul, 2006 (1)
Jun, 2006 (1)
May, 2006 (1)
Mar, 2006 (2)
Feb, 2006 (2)
Jan, 2006 (1)
Dec, 2005 (1)
Oct, 2005 (2)
Sep, 2005 (2)
Aug, 2005 (1)
Jul, 2005 (1)
Jun, 2005 (2)
Apr, 2005 (2)
Mar, 2005 (2)
Feb, 2005 (3)
Jan, 2005 (3)
Dec, 2004 (2)
Nov, 2004 (4)
Oct, 2004 (14)


Concurrency, C++, and .NET, oh my!

Friday, December 29, 2006

It's time for me to take the plunge: Microsoft seems to have a reasonable blog hosting facility now at Live Spaces, so I'm going to take the plunge and move over to my new Live Spaces blog (http://herbsutter.spaces.live.com). You'll find two posts there already, one an Op/Ed piece about the free laptop controversy, and another announcing Stroustrup & Sutter #3 this March.

Moving is always a tough decision. I've really enjoyed being hosted here at Pluralsight, and I want to thank the Pluralsight folks very much for providing a space for my blog over the past few years. It's been a blast, and they're a great bunch!

See you at Spaces, and best wishes to you and yours.

Herb

posted @ 2:55 PM

Wednesday, August 30, 2006

Two quick updates today: The talk I'm giving in the Seattle area has been moved by one week to September 13 (not 20 as previously posted).

  • The Concur Project: Some Experimental Concurrency Abstractions for Imperative Languages
    September 13, 2006
    Northwest C++ Users Group, Redmond, Washington, USA

Intel has graciously invited me to speak on concurrency amid a gaggle of luminaries in their fall seminar series. The talk coordinates are:

I look forward to seeing some of you at these events. If you're in town, feel free to drop by!

Best wishes,

Herb

 

posted @ 12:32 PM

Monday, August 07, 2006

I see DDJ has now posted my guest editorial "It's (Not) All Been Done" that I blogged about last month.

Because they have hard one-page limits on the length of the editorial in the print mag, about 25% got omitted to make it fit. So I've posted the complete unabridged text on my site as well. Some of you might find it interesting to see how versions of a piece can get refitted in the production process.

[humor]I suppose some people of (sniff) questionable taste and habits might even decide that the editors were right to remove the extra flab.[/humor] Seriously, it's possible I should have cut the extra anyway; authors tend to be lousy editors because we too easily fall in love with our own words. But I think it works, so I thought I'd make the slightly longer version available so you can judge for yourself.

Enjoy,

Herb

posted @ 12:18 PM

Wednesday, July 12, 2006

A quick update: My home page is now updated with a list of upcoming articles and talks. In particular:
  • Keynote: Software and the Concurrency Revolution
    August 14, 2006
    MPSoC '06: 6th International Forum on Application-Specific Multi-Processor SoC [System on a Chip], Estes Park, Colorado, USA
  • The Concur Project: Some Experimental Concurrency Abstractions for Imperative Languages
    September 20, 2006
    Northwest C++ Users Group, Bellevue, Washington, USA

  • Guest Editorial: It's (Not) All Been Done,
    Dr. Dobb's Journal, 31(9), September 2006.
    This is a wonderful time to be a software engineer because it's a new world again: For the first time in the history of computing, mainstream computers are not von Neumann machines and never will be again—they are parallel. We have largely succeeded with the quest to put a computer in every home and purse; now we're effectively going to put a Cray into every den and pocket. That makes this is a time of enormous opportunity, as usual along with a great deal of work, as our industry now undertakes to do for parallel programming what we have already done for generic types, objects, and garbage collection.
posted @ 7:50 AM

Monday, June 26, 2006

As I write this I'm sitting in Vail, Colorado, at the IEEE Computer Elements Workshop. It's a room full of top-notch processor designers -- if you've heard of a piece of hardware, from AS/400 to Xenon, likely one of its designers is here in the room. Later today I'll give a talk on the effect on software of all this parallel hardware coming at us over the next few years, as one of the (or just "the"?) lone software person in the room. Like the talk I gave at InStat (another hardware/processor conference) last fall, it's nice to see the hardware conferences inviting people from software to talk about the effects these hardware trends are having on how we have to write our code. After all, these guys are making some way-cool new chips, all right, and those chips will be even cooler if they're actually programmable! Later this summer (August), I'll also be giving a talk like this at another parallel hardware conference (also in Colorado, as it happens), this one dedicated to "Multiprocessor System-on-a-Chip," aka MPSoC '06. See http://www.gotw.ca/ for the links. Enjoy! Herb
posted @ 6:36 AM

Wednesday, May 03, 2006

The ISO C++ committee met in Berlin from April 2-7, 2006. I thought I'd write a quick note about highlights of what was decided for C++0x:
 
How to get meeting minutes
 
First, how to find out for yourself: The minutes of each meeting are usually available online about 2-3 weeks after the meeting. The easiest way to find WG21 minutes for a given meeting/year is to Google for "wg21 <year> minutes," in this case "wg21 2006 minutes." One of the first results is:
 
  Minutes of J16 Meeting No. 42/WG21 Meeting No. 37, April 3-7, 2006
  http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2006/n1993.html
 
BTW, in general, the easiest way to find any WG21 doc is to Google for "wg21 <doc number>". That's what I always do, because it's quicker than navigating my own hard drive even though I know where the doc is.
 
 
What got voted into the C++0x working draft
 
At this meeting, five major pieces of work got approved into the draft. That means these features can (and likely will) still get tweaked and changed until the standard is actually finalized and published, but the upshot of being voted into the working paper is that these features are "for real" -- they've been discussed and debated, consensus has been achieved on their specification, actual wording written up in standardese, and a full committee vote passed to stick the standardese into the working paper.
 
Nearly all of the Library Technical Report (aka TR1)
The only part that wasn't voted in was the special mathematical functions, which are of interest principally only to heavy-duty scientists and mathematicians. The actual TR is in the process of publication, but you can find a nearly-final version on the ISO C++ committee website here: N1836, Draft Technical Report on C++ Library Extensions.
 
Auto type deduction
This permits you to write declarations like
 
  auto x = 3.1415926535;
  auto i = container.begin();
 
where the type is deduced from the initializer. So in this case, x has type double, and i has type map<string,unordered_map<int,tupe<float,string,const int> > >::const_iterator or whatever the right type happens to be, without having to spell it out. The paper is: N1984, Deducing the type of variable from its initializer expression (revision 4).
 
Delegating constructors
This proposal was written by me and Francis Glassborow. It's a combined WG21 / C++/CLI proposal, though it was cut from the first edition of C++/CLI; if C++/CLI does add this it will follow this that WG21 has adopted (plus any future tweaks). The paper is: N1986, Delegating Constructors (revision 3).
 
Right angle brackets
This fixes a tiny but perniciously annoying and embarrassing quirk of C++, and the fix adopted by C++ is the same that C++/CLI specified. Right angle brackets have been fixed so that constructions Like<This<Nested<Template>>>> will work sensibly, without having to write the closing right angle brackets with extra whitespace Like<You<Must<Today>  >  >  > which is annoying, embarrassing, and suspected of contributing to dental decay among 18- to 24-year-olds in northeastern Mississippi. To find out more, see the paper: N1757, Right Angle Brackets (Revision 2).
 
Extern template
 

Enjoy! And there's more to come when we meet next, in October 2006 (Portland, OR, USA).
 
Herb
 
posted @ 6:19 PM

Sunday, March 19, 2006

As previously blogged, this week I gave a PARC Form talk on concurrency (wmv video) (mp3 audio).
A number of people have asked that I post the slides, so I've put them online too (pdf slides).
I've also updated my home page and talks page with these links.
Enjoy!
Herb
posted @ 3:56 PM

Thursday, March 16, 2006

Yesterday I gave a talk at the Xerox PARC Forum about "Software and the Concurrency Revolution." Just 24 hours later, the video and audio streams are online here. Now that's service!
 
If you weren't in the area or able to drop by, you can take it in online. I hope you enjoy the talk.
 
Note to those who've seen concurrency talks from me before: There is interesting and useful new stuff here. In particular, check out the midway point of the talk, which contains material I've never given publicly before about how to categorize and think about forms of concurrency (thanks to David Callahan for lending me these three slides). For those who haven't seen a Concur talk from me yet in 2006, the part about parallel STL algorithms near the end will also be new since it reflects thinking I did over the winter.
 
Enjoy,
 
Herb
 
 
posted @ 10:49 PM

Monday, February 27, 2006

FYI, I've posted a "1.1" minor update of my C++/CLI design rationale paper. It's at the same location. The main change from the "1.0" version I posted two weeks ago is that the preface and section 1 have been merged and made clearer (realizing that some people won't read past that part). The rest includes minor enhancements such as filling in a few missing details for some of the points discussed. Enjoy,
 
Herb
 
 
posted @ 8:02 PM

Saturday, February 18, 2006

I thought I should finally get around to writing a design rationale for C++/CLI, to pull together in one place some accurate information about the whats, whys, and hows of these extensions. You can find it at:
 
  A Design Rationale for C++/CLI
  http://www.gotw.ca/publications/C++CLIRationale.pdf
 
I've pasted the Preface below. The paper also includes a FAQ covering some common points of interest about C++/CLI. I expect it to be a living document; this is version 1.0.
 
Enjoy,
 
Herb
 
 

Preface

A multiplicity of libraries, run-time environments, and development environments are essential to support the range of C++ applications. This view guided the design of C++ as early as 1987; in fact, it is older yet. Its roots are in the view of C++ as a general-purpose language
                                                                 — B. Stroustrup (D&E, p. 168)
C++/CLI was created to promote C++ use on a major platform, ISO CLI (the standardized subset of .NET). This paper attempts to capture a small but representative sample of the experience gained by a succession of C++ experts who have tried to define a binding between C++ and CLI. A central goal is to explain why pure library extensions are technically insufficient in the cases where they were not used, by considering design alternatives for representative examples that cover most CLI feature areas:
CLI types (e.g., ref class, value class): Why new type categories are needed, and considerations for choosing the right defaults for CLI types.
CLI type features (e.g., property): Why new abstractions are needed for some CLI features.
CLI heap (e.g., ^, gcnew): Why not to reuse the existing * pointer declarator and new.
CLI generics (generic): Why the new genericity feature is distinct from templates, but compatible and highly integrated with templates.
CLI non-features (e.g., template, const): Why and how these are made to work on CLI types.
For each case, the paper describes:
The CLI feature and basic requirements, including representative metadata that must be generated.
The lower-impact Managed Extensions design, and where it was insufficient.
The C++/CLI design and rationale.
Other major design choices that were considered, both in earlier iterations of C++/CLI and in other separate design efforts that didn’t work out and were never publicly available.
Finally, note that most of the C++/CLI extensions are needed only when using C++/CLI to author new CLI types and libraries. In practice, many programmers using a C++/CLI-enabled compiler (currently Visual C++ 2005) are simply taking advantage of the ability to seamlessly use existing CLI types with their C++ code, which typically requires no extended syntax at all beyond a sprinkling of gcnew and ^.
 
posted @ 9:56 PM


 
   
 
© 2004 Pluralsight.
Visual Design by Studio Creativa
Privacy Policy