In the Community: Meet Tom Serface

Welcome to In the Community. This week, meet Tom Serface, C++ MVP and longtime Visual C++ user.

I have been using VC++ with MFC since it first came out circa 1993 and I saw it demonstrated at a local Software Development show. I’ve been working for Rimage Corporation for just over 25 years developing software to make our optical disc publishing hardware work. My software is mostly written in C++, but we also use C# and C#/ASP.NET.

I have a snippet blog at www.camaswood.com/tech where I list tricks that I think are useful.
 
When I’m not working I enjoy hanging out with my family, playing guitar, traveling, and taking my dogs for walks. My family enjoys watching Survivor on Wednesday nights and we’re not even embarrassed by it.

C++ in 140 characters or less?

It’s kind of like a super hero; power and responsibility. It’s sometimes more complex, but it allows you to control every aspect of your experience. C++ can be very simple, or as complex as needed.

Why C++?

I started off life as a C programmer. When C++ came out it was just the natural progression. These days I spend my time equally in many paradigms, but almost all of them still include C++. It has proven itself over and over.

What do you like most about C++?

Most of all, like everyone else, I like the performance. I also like that you control the way your code is produced. C++ allows me to create and use objects when I want, or go all the way down to the bare metal. I especially think C++ is still the best way to create desktop programs. I have some programs that are included on optical discs that can’t have dependency on outside assemblies. C++ allows me to make great looking statically linked programs that will run on any version of Windows.

Least?

Because of its low-level-ness C++ isn’t as easy to integrate with some of the tools in Visual Studio so it often lags behind from release to release. I think C++ is being held back by the need to adhere to slow moving standards. When VC++ first came out, the goal was “to create great Windows programs quickly that work and look good” Back then, MSVC++ was mostly tailored for compling code that was being used on Microsoft Windows, and not so concerned about being portable or “standard”. For me, that was much more productive since I only write Windows programs. Other Microsoft syntaxes don’t have those same restrictions so they can live up to the credo VC++ started. The abundance of available libraries make other Microsoft syntaxes appealing as well.

What advice would you give new C++ developers?

My advice is to just start doing it. Start with something simple, but then give yourself a real project to work on. C++ is easiest to learn in the trenches. There are a ton of good books and blogs. When you need to learn how to do something Bing is your friend and I think just looking for answers to questions as they arise is a great way to learn. Copying code from a book (tutorial) just doesn’t do anything for me.

Do you have any favorite C++ favorite authors or books?

It depends on what you’re trying to learn, but from my perspective of being an MFC fan I think Jeff Procise’s book “Programming Windows with MFC” is still a great place to start. It’s a bit dated, but it works.

Where are your favorite technical places on the Web?

I use www.codeproject.com a lot. Other than that I use search engines, like Bing, all the time to look up information, syntax, etc. The MSDN forums are a good place to ask questions, but my experience has been that so many questions have been asked about C++ you are better off using a search engine first and you will likely find several immediate answers. There is a ton of useful information available almost in a heartbeat.

What community contribution have you done recently which are you most proud of?

I used to spend a lot of time on support forums, but I found that there are so many people answering questions there these days that before I could get in most questions had been answered; often several times. That’s a great thing for the community, but not so great for needing me to participate there. I update my blog website periodically with real life code snippets from my programs. I’ve had lots of feedback from people who appreciate it. I also work with people locally and all over the web trying to move to newer versions of the IDE and compiler. Recently we’re starting to organize a local computer club in my small town.

What question should I have asked?

What’s next for C++?

And the answer?

C++ has come a longs ways towards competing in the new Microsoft mix on Windows 8. It will take some time for Windows 8 to proliferate to devices and new machines to replace the old. C++ is also still a great platform for creating fast, small desktop programs. Windows 8 makes the desktop experience a little less in the forefront, but there will be people with Windows machines on their desk for a really long time; perhaps forever. I feel like the desktop is here to stay for the foreseeable future and C++/MFC will still play a major role in that area; especially given the number of legacy programs that need to be maintained.

I join with my peers in wishing there was an expanded desktop framework for C++/Desktop/UI development, but I fear that will not happen. Most of the momentum seems to be towards the Win/RT direction. Still, I think Windows will continue to live as a Janus (the Roman god of transitions and beginnings – with two faces) of sorts with one face supporting the vertical plane (tablet) and the other supporting the horizontal (desktop). Most saavy C++ programs will try to build on both paradigms. I’d love to see Microsoft provide better support tools for migrating older native programs to the new WinRT platform so the code could be shared. C++ may well end up living in the back end with other, easier to do UI, languages in the front.

Still, I can’t help but believe if we could have the small footprint and quick execution of C++/MFC with a full featured UI builder, like other .NET languages have, we’d have a killer.

One last thing… C++ is always a great back end for any program. So, even if C#, or something other syntax, is used C++ is always available to do a lot of the real work in the program where speed is an imperative. If we had a better integration paradigm that would also be a huge boon.

Thanks Tom. Community, what do you think should be next for C++?