Tuesday, October 12, 2010

Updates: C++0x Feature Availability, C++ & Beyond Encore

Two independent announcements that I'm bundling together, because both are short:
  • C++0x Feature Availability Table Updated.  In July, I posted that I'd updated my table of C++0x feature availability to include a link to a page summarizing Clang C++0x support.  Recently I discovered that that link is missing.  I can't explain this, but I can fix it, and I have: the link to Clang support is now present.  While I was updating that information, I took the opportunity to update my information for MSVC from Version 10 beta 2 to simply Version 10.  As far as I know, my table is now up to date, but if you see anything that's inaccurate, please let me know.
  • C++ & Beyond Encore Seats Going Quickly.  The "encore" version of C++ & Beyond that Andrei Alexandrescu and Herb Sutter and I will be putting on in December is now 1/3 sold out.  There won't be a second encore, and, like the original event that will take place at the end of this month, attendance is strictly limited to 60 spots, so if you've been thinking of attending, I encourage you to register sooner rather than later. (If you're interested in the technical program, talk descriptions are being posted to the C&B blog.)


Monday, October 11, 2010

Notes from MISRA Day 2010 Talk Now Available

On September 29, Les Hatton and I gave dueling presentations at the 2010 MISRA Day conference.  The exchange was billed as a debate between the two of us, with Les defending C for use in embedded (typically safety-critical) systems and me advocating C++.   As it turned out, Les argued that the choice of programming language is a lot less important than the ability of developers to use it well (a position with which I agree), but I went out and made my case for C++, anyway. 

It was an interesting talk to prepare, because it got me to thinking about very fundamental aspects of C++.  C++ has lots of fancy features, but what are the core features that really make it nicer to program in than C, especially for systems where you know you'll be programming in some kind of "safe" subset?  (MISRA has published guidelines for both C and C++ that are designed to constrain its use to improve its suitability for application in safety-critical systems.)  I ended up spending the biggest part of my time on constructors, destructors, and RAII, although I touched on many other aspects of C++, too.  These days, I spend most of my time focusing on the more advanced C++ features (often the new ones introduced in C++0x), so it was nice to go back and remind myself of some of the key things that distinguished C++ from C at the very beginning (in the early 1980s).

If you're interested in the presentation materials I used at MISRA Day -- at my take on key C++ features that make it more attractive than C for use in safety-critical systems, they're now available for viewing.


Friday, September 24, 2010

Encore! C++ & Beyond Redux Occurs Dec. 13-16

C++ & Beyond, the sort-of-a-conference-but-not-really that Herb Sutter and Andrei Alexandrescu and I are putting on at the end of October, has been sold out since July, but so many people added themselves to the waiting list, we decided to do an encore presentation in December.  For details, consult the event announcement at the C&B web site.

In the meantime, Herb and Andrei and I just "finalized" and published the C&B technical program, so I encourage you to take a look at the topics we plan to address.  I put "finalized" in quotes, because we always reserve the right to change things.  Officially, the schedule is perpetually in draft form.  Having said that, I don't think any of us expects to make any changes. We just like knowing that if we wake up one day with a brilliant idea for a topic, we have the freedom to displace something else on the (always draft) schedule to make room for it.

I hope to see you at C&B, either in October or in December.  If you're interested in following what's happening in C&B-land, please subscribe to the C&B RSS feed.  Most of my posts that are specifically about C&B appear there.


Thursday, July 22, 2010

Updated C++0x Feature Availability Information

Today I downloaded the TDM distribution of gcc 4.5 for Windows and played around with it a bit.  Part of that playing around including cursory checks to see what new features of C++0x were supported, and I was pleased to see that there were quite a few, including lambdas, raw string literals, and new STL algorithms like all_of/any_of/none_of.  I updated my summary of C++0x feature availability with the new information, and as long as I was at it, I also added a link to C++0x support in Clang, as I'd happened across that page a couple of days ago.

Gcc 4.4 already had a lot of C++0x support, and in conjunction with MSVC 10, which also offers many C++0x features, it was already possible to experiment with lots of C++0x, but with the introduction of gcc 4.5, not only do we have even more of C++0x to play with, but, thanks to gcc's support for lambdas, writing portable C++0x code is now easier than ever.

If you find the revised C++0x feature availability table useful, please spread the word about it.  If you find errors in it, please let me know about them.  Either way, have fun with C++0x!


PS - Even if you're familiar with Gnu's summary of C++0x support in gcc 4.5, you might want to take a look at my table, because Gnu and I break things down differently.  Gnu's table, for example, makes no mention of alignof, but my table includes it as a line item, which is why I was motivated to see if gcc 4.5 supports it.  It does!

Friday, May 21, 2010

Notes for Portland Code Camp Talk Now Available

My presentation isn't until tomorrow, but I somehow managed to finish the materials for it today.  If you're interested in what I have to say on the topic "CPU Caches and Why You Care," I encourage you to download the presentation materials (PDF) and take a look. 


Wednesday, May 12, 2010

Upcoming Talk at Portland Code Camp

I've been interested in Code Camps ever since I heard about them a couple of years ago, but, until this year, my interest never rose to the level of participating. Portland Code Camp will take place in Portland, Oregon, on May 22 (a week from Saturday), and I'll be giving a talk on CPU Caches and Why You Care.  The material is based on my work on Fastware! (which, after a year-long digression into C++0x, I'm finally getting back to), and the talk will serve as an alpha version of material I expect to present in my seminar on Fastware for C++ in Stuttgart (Germany) at the end of September and possibly also at C++ and Beyond in Snohomish, Washington, a month later.

Like all Code Camps, Portland Code Camp is free, so if you live near Portland, Oregon, and don't mind devoting a Saturday to all things code-related, I encourage you to register, then come by my session for a crash course in CPU caches.  It should be interesting to see how it goes, given that the talk currently exists only in my head.  But in my head, it's really good :-)


"C++ and Beyond" Tickets Going Fast

On April 17, I announced the opening of registration for C++ and Beyond, the end-of-October sort-of-a-conference event featuring me, Andrei Alexandrescu, and Herb Sutter.  Registrations have been coming in at a steady rate ever since.  20 of the 60 available places have now been taken.  At this rate, we'll sell out long before the end of the Early Bird registration period, thus demonstrating why we're known for our technology smarts and not for our business savvy. 

One of the primary features of this event is its limited size, so the number of available spots will not increase.  Once 60 people have signed up, that's it:  registration will close.  (We'll probably set up a waiting list, in case there are cancellations.)

If you're at all interested in C++ and Beyond, I strongly encourage you to subscribe to its RSS feed, because most of what I have to say about that event goes on its blog, not here.  Even if you're not interested in attending C&B (as Herb, Andrei, and I call it), you may find the C&B blog interesting, because that's where we post ideas for technical sessions and otherwise more or less think out loud. Last week, for example, I posted about a prospective session called CPU Caches and Why You Care.


Monday, May 10, 2010

New ESDS Book: Effective Perl Programming

I was honored when the authors of the new (second) edition of Effective Perl Programming agreed to be a part of my Effective Software Development Series.  I'm not a Perl programmer, and the book's first edition had been very well received, so although I offered a few comments on the manuscript, I primarily tried to stay out of the authors' way and let them do what they clearly know how to do very well:  explain how Perl programmers can use the language more effectively, especially in light of the changes that have taken place in the Perl community since the first edition was published in 1998.

If you're a Perl programmer, I encourage you to give this new edition a look-see.  I think you'll be impressed with what you'll find there.


Tuesday, April 27, 2010

New Training Materials Developments

My training materials on making effective use of C++ in embedded systems are now available. Like my materials on C++0x, they cover material not in my books, come DRM-free, and include free updates for life. I encourage you to check out the sample excerpt.

Less than a day after I announced the availability of my C++0x materials, people started asking about how they could get a license for everybody on a team or everybody in a department, etc. Our solution is a very generous volume discount schedule. Starting with the 10th copy, you get 30% off, and by the time you order 50 copies, you're getting 50% off.

I hope you find the materials on using C++ in embedded systems useful, and I hope you find that the volume discount schedule makes group purchases economical.


* C++ and Beyond: Meyers, Sutter, & Alexandrescu, Oct. 24-27 near Seattle.
* License Scott's training materials for commercial or personal use.

Sunday, April 18, 2010

"C++ and Beyond" Registration Now Open

In January, I mentioned that Herb Sutter, Andrei Alexandrescu, and I were organizing a sort-of-a-conference event called "C++ and Beyond". We originally planned to hold it this summer, but it turned out that the intersection of availability of a suitable venue and availability of the three of us yielded dates in late October: October 24-27, to be precise. Full information about "C++ and Beyond" (C&B) is available at its web site, and you can remain apprised of C&B-related development by subscribing to its RSS feed. Because of the existence of that feed, I will make very few additional announcements about C&B to this mailing list. If you're interested in C&B, I encourage you to subscribe to its RSS feed.

I blogged about the structure of C&B at http://cppandbeyond.com/2010/04/15/c-beyond-event-structure/ and about the venue and why we chose it at http://cppandbeyond.com/2010/04/16/the-venue-for-cb/, so here I'll simply summarize the main points:
  • Attendance is limited to 60 people.
  • C&B runs from 8AM to 9:30 PM each day and features as much time dedicated to informal discussions as to official presentations.
  • It takes place at a venue designed to foster interaction among participants.
For details, please consult the C&B web site.

Registration for C&B opened yesterday.  There's a 10% discount for early bird registrations (by July 24) , and a further 10% discount for groups of 3 or more. Given the limited attendance and the fact that the first slot got snapped up less than 8 hours after registration opened, I suggest you register earlier rather than later.

I hope to see you in October at C++ and Beyond. I'm convinced it is going to be one of the most rewarding technical opportunities of 2010.


* C++ and Beyond: Meyers, Sutter, & Alexandrescu, Oct. 24-27 near Seattle.
* License Scott's training materials for commercial or personal use.

Monday, April 12, 2010

Latest ESDS Book, "Effective C#, Second Edition"

As .NET and C# evolve, so must the advice on how to use the language effectively. I'm pleased to report that today I got a shiny new copy of the new second edition of Bill Wagner's "Effective C#". As with the first edition, I learned a lot reading it, and I'm confident it will be as useful to C# developers as both its predecessor and Bill's other C# book, "More Effective C#". (Where do they come up with these names?)

Amazon's page for Bill's new book is http://tinyurl.com/y7awxhc. I encourage you to check it out.


* Scott's training materials now available for commercial or personal use.

Thursday, April 8, 2010

C++0x Interview with Software Engineering Radio

Last week I chatted with Markus Völter of Software Engineering Radio about C++0x, and earlier this week the interview went live. You can find it at http://www.se-radio.net/podcast/2010-04/episode-159-c0x-scott-meyers.


* Scott's training materials now available for commercial or personal use.

Wednesday, April 7, 2010

My training materials for C++0x, etc., now available

A non-brief explanation follows.

* * * * *

When I write a technical book, my general approach is as follows:
  1. Master the material.
  2. Figure out what "story" I want to tell, i.e., what to cover, what to omit, what order to cover things in, what examples to use, etc.
  3. Write it up.
In practice, Step 2 almost always breaks down into these steps:
  • 2a: Come up with a story that I think will work, i.e., that will effectively convey the technical information.
  • 2b: Develop a training course corresponding to that story.
  • 2c: Deliver the training course to professional developers and see how well the story works. In places where it doesn't work as well as it should, return to step 2a and iterate until everything is satisfactory.
The only difference between writing a book and developing a training course is the existence of step 3: writing the prose corresponding to the story.

My primary activity during the past year has been learning about and teaching other people about C++0x. (It wasn't supposed to be that way, but C++0x turned out to be a much more involved topic than I expected.) I now have a set of C++0x training materials that I think are quite good, but I don't want to write them up in book form, because, among other things, C++0x is still being refined, as is both my understanding of it and compiler vendors' implementations.

Still, I think the information in my C++0x training materials is valuable in its current form, and, to be honest, more comprehensible and up-to-date than what you're likely to find by searching the Internet. Before now, the only way people could get a copy of these materials was to attend one of my training courses (my schedule's at http://www.aristeia.com/seminars.html), but such courses don't take place terribly often, and they're not in everybody's budget, so I've decided to offer my C++0x course notes for sale on a standalone basis.

Unlike a book, they lack the connective prose that makes for a smooth reading experience, but in some ways, they're better than a book. They make more extensive use of color, they "cut out the fat" to focus on the technical essentials, and my licensing terms grant buyers unlimited updates for life: as long as I update the materials, buyers are entitled to a revised version for free. Furthermore, because training materials inherently use a large font and are chopped into page-based chunks, reading them on mobile devices like iPhones should be a more satisfying experience than trying to read a conventional technical book.

The C++0x notes are available now, and by the end of the month, I expect to have the notes from my courses on using C++ in embedded systems and on improving software quality available, too.  You'll find detailed information on all of these at http://www.aristeia.com/Licensing/personalUse.html. Virtually none of the material in these courses is available in my books.

My initial goal with this project was to make the information in my training materials available to individuals who don't attend my training courses, but I know that there are companies who might be interested in the materials, too. For example, technical training companies might want to use them with their own clients, and large companies with internal training departments might want to use them as the basis for internal training.  As a result, I'm now making all my training materials available for commercial licensing. Details on that option are available at http://www.aristeia.com/Licensing/licensing.html.

For over 20 years, I've been doing my best to disseminate useful, accurate technical information to professional software developers. I've written several books and dozens of articles, but some of my most valuable information has existed only in the form of training materials that were accessible only to people who could attend a course. That's no longer the case. All my materials may now be commercially licensed, and selected sets of training materials may be purchased for personal use.

I hope you find the availability of the information in my training materials interesting, and I especially encourage you to check out my C++0x notes (including a free ~25-page excerpt) at http://www.artima.com/shop/overview_of_the_new_cpp.

If you have comments on my making my training materials available for personal and commercial use, don't hesitate to let me know.



* Scott's training materials now available for commercial or personal use.

Monday, January 11, 2010

Boutique Summer Conference: "C++ and Beyond"

Few things are as professionally rewarding as getting together with colleagues to discuss interesting technical issues. For C++ developers these days, there are more things to discuss than usual. The first of a raft of new language features -- the initial wave of C++0x -- are becoming widely available, and they promise to change the way we design and implement good software. We're still trying to come to grips with the concurrency revolution in hardware, while at the same time dealing with increasingly demanding performance constraints. In the meantime, new languages (e.g., D) and language abstractions (e.g., futures, ranges) offer new tools for approaching the systems we need to build. There's a lot going on.

Herb Sutter, Andrei Alexandrescu, and I thought would be fun to organize a technical event where we could discuss the contemporary challenges facing C++ software developers. Thus was born "C++ and Beyond," a limited-attendance conference to be held this summer near Seattle, Washington. We haven't worked out the details on this event yet, and one reason is that we're still trying to figure out when to hold it. Rather than pick dates at random, we chose two sets of dates and decided to ask prospective attendees which they prefer. To that end, if you think you might be interested in getting together with me, Herb, Andrei, and a few dozen people as interested in and passionate about issues relating to C++ software development as you are, please visit cppandbeyond.com to learn more about the conference and to vote on when you'd like us to hold it.  While you're there, please also submit comments on the kinds of topics you'd like to see explored at the conference. With your help, we'll be able to put together a killer program focusing on the issues you want to talk about on dates that are convenient for you.

I hope you're as excited about this event as I am. If so, please visit cppandbeyond.com this week to let us know when you'd prefer to see the event held and to tell us what you'd like to see it cover. Voting ends on Friday, January 15, so I encourage you not to procrastinate too long.