Get to know some of our talented authors featured in our author spotlights. Here you can see interviews, detailed biographies, and book summaries of some of the best in the industry.
PIEDMONTE: After 20 years of developing software, I think I'm finally getting the hang of it.
Like a lot of us that started in the information technology in the 80's, my primary focus was more on design and development of computer hardware than software. I quickly discovered that working on software was a lot more fun. Unlike designing computer hardware, you have infinite flexibility in the software systems you create, get instant feedback on the success (or failure) of your efforts, and have a greater diversity of opportunities available to you.
One of the most interesting times in my career was making the transition from structured (procedural) to object-oriented programming around 1990. I remember reading through some tutorials on C++ and thinking to myself "this is weird, I don't get it, why would anyone do this?"
Once I finally got it, the advantages became very obvious to me. Since then, I've been an evangelist for object-oriented techniques, languages and tools. Besides using them myself, I've taught many courses on object-oriented analysis, design, C++ programming and using the latest industry tools for creating C++ programs. Fortunately, working for Eagle Creek Systems (www.ecs.com) has allowed me to pursue teaching in addition to software development.
PIEDMONTE: The advice I'd give someone greatly depends on his or her background. For us older folk that started with procedural languages like FORTRAN, COBOL, and even C, my advice is to start by forgetting what you know about procedural design! "You must unlearn what you have learned" before you can easily comprehend the paradigm of C++ and object oriented programming. I think it is far harder to learn C++ if you already know C and procedural development, as you have a tendency to try and force C++ to look and feel like C.
For those starting with C++, I would strongly recommend that you get a good grasp on object-oriented analysis and design concepts either before or during your introduction to C++. The language is only half of what you need to be a successful C++ programmer. Understanding of object-oriented techniques is absolutely essential to becoming a good C++ programmer.
PIEDMONTE: There are three basic elements of a good programming evaluation that should always be explored: common mistakes, broad understanding, and proper design and application. Each question of the ReviewNet test was design to touch on one or more of these three basic elements.
Common C++ programming mistakes, involving things like loop counters, exception handling, and assignment versus equality testing, are some of things that need to be looked for. These types of errors are insidious and difficult to find once they are introduced. Not making these types of mistakes is one of the signs of a good programmer.
A broad understanding of the language is also important to take advantage of its advanced features. Exception handling, operator overloading, templates and namespaces, for example, are areas that a lot of C++ programmers don't excel at. Getting some good questions in and around this subject area was very important to developing a good test.
Finally, choosing the right design and approach to using C++ to solve a design problem is very important. Knowing when a "do...while" construct is better than a "for..." construct, for example. Proper design and creation of C++ coding structures is essential to writing efficient, understandable and easy to maintain code.
PIEDMONTE: C++ is a language that has been and is going to be around for a long time. It is a mature language, available on almost every platform you will ever encounter, including a lot of low-level and embedded system devices.
I think the future of C++ will be the continued use of it when tight, efficient code is needed to optimize space and performance. Other languages, like Java, VB and the like, are great for creating poor performing "fatware" and sucking up system resources. C++ allows you a lot more control over the performance characteristics of the system. Because of this, I suspect it will be one of the most enduring and useful programming languages ever developed.
|