In the Community is a regular series spotlighting members of the C++ / developer community. This week, the spotlight is on Marius Bancila, a developer and C++ MVP.
Marius has been developing desktop applications for 10 years, using different technologies including C++, C# and Java. C++ has always been his preferred language of choice. He has been awarded Microsoft MVP for VC++ since 2006 for his involvement in online communities with focus on VC++ and native technologies. He is the co-founder of codexpert.ro, a site for the Romanian C++ community. He currently works for Visma, a Norwegian-based company, and develops ERP systems mainly written in C++.
You can follow Marius on Twitter and his blog, or catch him on codexpert.ro, CodeProject, CodeGuru and StackOverflow.
C++ in 140 characters or less?
C++ stands for control and fine tuning. C++ is deterministic, but relies on you to know what you're doing. It's not that hard as they say.
Because I like it. Because it happens to be the first major language I learned. Because, and I know this sounds silly to the managed world people, I like to be in control of what's allocated or release and when that happens. Because you can create a broad variety of applications, small or large. Because C++ application don't eat all your memory or take forever to load. And because of other reasons too.
What do you like most about C++?
Probably the determinism of releasing resources, including memory, of course. I like the efficiency of C++ and its simplicity. Because I believe once you learned C++ you can see it's not that complicated as they say. Yes, sometimes you need to know more low level stuff than with other (managed) languages, but that can only make you a better programmer.
Libraries. And especially libraries for building UIs. And working with XML. I mean, OK, we have STL, boost, loki and others, but if you look at the variety of features available as .NET libraries, and if you try to compare, you can see that C++ is way behind especially when it comes to tools for UIs. MFC is just obsolete. Yes, I know that in Windows 8 you can use the native XAML framework for building UIs for C++ applications, but that's just WinRT. I'd like and many others like me would like to have similar tools/frameworks for pure C++ applications. My wish is that STL should feature support for working with XML and VC++ should provide a modern framework for writing UIs for the desktop.
And equally to that I dislike the slow pace of C++ evolvement. It just takes too much for new standards to be approved.
What advice would you give to new C++ developers?
Forget about char* and other C-lish (I hope you see the pun) things. C++ is not C with classes. C++ is not the world of pointer to char or dynamically allocated arrays. C++ is the world of string and vector, of auto and lambdas. And many other cool things. That's the C++ you need to learn and use. It has a name and that name is C++11.
Do you have any favorite C++ authors or books?
I think we all favor the holy trinity of C++, Herb Sutter, Scott Meyers and Andrei Alexandrescu. And probably my favorite C++ book is Effective C++.
Where are your favorite technical places on the Web?
It used to be codeguru, where I published and posted a lot in the last ten years. Nowadays is CodeProject and StackOverflow (though I don't like how the people on SO always happen to know better how to post and slap you on the face for not going their way), and of course, codexpert.ro where we try to bring Romanian C++ developers together.
What question should I have asked?
Is there any interesting public project that you've worked on recently?
And the answer?
Yes, I've been working together with a friend on an open-source C++ template library called cpplinq that provides .NET-like query operators to sequences of objects in native applications written in C++11. The library is available on http://cpplinq.codeplex.com.
Regarding XML -- check out pugixml @ http://pugixml.org/ :-)
Here's why: josuegomes.blogspot.com/.../why-another-xml-parsing-library.html
I completely go with Marius when he demands more up-to-date tools for GUI development. There should be no need - and I don't feel urged - to switch to C# to accomplish GUI applications more easily.
Aren't FLTK and wxWidgets good enough?! They are not that hard to learn... not at all !
When did "developer" come into vogue? Used to be one programmed; you were a programmer. Is this not as new as I believe? Is a developer one who is not a programmer, but a janitor-analyst-designer-programmer-tester-CIO-CFO-CEO? And where does "(software) engineer" fit into all this?
I should be glad enough that you write native, and not un-managed, non-managed, or other-than-managed. But .NET ... is it STILL dot-NET?
Maybe "programmer" doesn't give much credit to the many activities we do when creating software that aren't necessarily related with typing instructions in a given programming language.
From high-level activities like solution design to finer-grained ones like unit testing.
In large orgs there could be people specifically wearing each of these "persona" hats. But in md-size, small orgs (e.g., startups) programmers must wear all these hats, sometimes simultaneously including the coffee-maker hat because a potential venture capitalist is visiting the garage... errr, the office.
"I am a programmer. On my 1040 form, that is what I put down as my occupation. As a programmer, I write programs. I would like to present to you the cutest program I ever wrote." - Ken Thompson, Reflections on Trusting Trust