[Curiosity] What does the "average" C++ developer work on?
-
All in the title.. Never worked with MFC, read a book about it in 1998, tried it and couldn't get into it. Peruse a few C++ book, never found them that appealing. I did write a Uniscribe wrapper in ManagedC++, an ObjectiveC/GNUstep wrapper in ManagedC++ and some OpenGL setup code in C (tapped in with interop), that's about it for my native / C development. Neither did I work with C++ developers. So I wonder what does this strange beast do for a living?
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
Right now an embedded GUI. Previously I did desktop applications in MFC. But my first love is embedded control, especially motion control in assembly and C. I never really got into the C++ thing either although I get paid to do it now. I like to make things move and my C productivity, in spite of the myths, is much greater.
-
There can be no "average" C++ developers. The "average" ones have long switched to .NET and apparently "like" it. :laugh: You could never like C++ unless you know what it can do, its limitations. Its only limit is the programmer using it.
Super Lloyd wrote:
So I wonder what does this strange beast do for a living?
I would imagine maintaining legacy applications, writing games, doing "Real" development, helping other html "programmers" do their jobs. And it is being killed. No more do you see jobs for C++. They all want PHP, ASP.NET, ...
NULL
I'm not sure it's accurate to say it is being "killed". Developers are being required to know many different technologies. IMO, C++ will be around for a very long time because it provides an excellent balance between high and low-level programming and because some of the most talented and experienced software engineers have a lot of C++ experience. It will probably continue being used whenever efficiency is important in a relatively large, complex system. (C is sufficient for smaller projects and probably will continue being used for low-level drivers, etc, but there aren't as many tools to limit complexity in C as in C++.) Despite what appears to be a common belief, C++ provides excellent facilities to limit complexity. In general, .NET-based/Java and all these other newer languages are probably more useful for typical GUI and web-based application development. But for more advanced development involving real-time systems, video processing, machine learning, etc. - research development kind of stuff, I suspect C++ is the language of choice for many.
-
There can be no "average" C++ developers. The "average" ones have long switched to .NET and apparently "like" it. :laugh: You could never like C++ unless you know what it can do, its limitations. Its only limit is the programmer using it.
Super Lloyd wrote:
So I wonder what does this strange beast do for a living?
I would imagine maintaining legacy applications, writing games, doing "Real" development, helping other html "programmers" do their jobs. And it is being killed. No more do you see jobs for C++. They all want PHP, ASP.NET, ...
NULL
Mechanical wrote:
Its only limit is the programmer using it.
Amen! From what I do there are two targets: C++: Client-Server applications, meaning the entire server with c/c++ and a client library, if made good on the top level could be an desktop application writen in any language. C++: Games!!
Saludos!! ____Juan
-
I loved coding in C++ prior to getting a job, I guess because it was fun to work so close to the metal, allowed for heavy optimization and there were lots of nice tricks that could be achieved with things like macros and templates. Out in the real world though I've never come across a C/C++ job, and for over 95% of the projects I've worked on (for money) C++ would have been a worse choice than C#/.NET. It's usually faster to write something in .NET and I don't see any real benefit to spending longer writing common run-of-the-mill applications in C++, even if it was to use some framework such as MFC. My guess is the main reason to use it would be for low level device drivers. And possibly games - I'm not an expert in the pros/cons of writing a game using C++ and DirectX versus XNA framework, but I still think C++ would be a good choice for games anyway.
Low-level drivers seem to still be done mostly in C in my experience, although I imagine this is changing. Games (and really any system that approximates or is real-time) probably still heavily use C++. Really, any large system requiring efficient processing can benefit from C++. I agree with you - C# is my language of choice for writing a typical Windows app. The .NET libraries save me hours of time and the language is a pleasure to code in. But it is not always possible to achieve the necessary level of performance.
-
All in the title.. Never worked with MFC, read a book about it in 1998, tried it and couldn't get into it. Peruse a few C++ book, never found them that appealing. I did write a Uniscribe wrapper in ManagedC++, an ObjectiveC/GNUstep wrapper in ManagedC++ and some OpenGL setup code in C (tapped in with interop), that's about it for my native / C development. Neither did I work with C++ developers. So I wonder what does this strange beast do for a living?
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
After 12 years of 99% Java programming, I hit my first scenario where I would have loved to have C++ because I really needed some pointers. I was trying to add a few customizations to an open source module that relied heavily on certain data structures. I had to limp by with a ListIterator that managed to get the job done, but pointers and pointers to pointers would have been a cleaner implementation.
-
All in the title.. Never worked with MFC, read a book about it in 1998, tried it and couldn't get into it. Peruse a few C++ book, never found them that appealing. I did write a Uniscribe wrapper in ManagedC++, an ObjectiveC/GNUstep wrapper in ManagedC++ and some OpenGL setup code in C (tapped in with interop), that's about it for my native / C development. Neither did I work with C++ developers. So I wonder what does this strange beast do for a living?
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
These days it seems like C++ is used for high-efficiency applications, e.g. graphics, as one person has suggested. The .NET languages (typically C#) are easier and more powerful for GUIs and simple non-time-critical applications, and have the advantage of reliability; e.g. fewer memory leaks. In the applications I'm working on, C# is used for the GUI, and C++ for the pixel-based graphical operations. C++ is the new assembly language.
-
All in the title.. Never worked with MFC, read a book about it in 1998, tried it and couldn't get into it. Peruse a few C++ book, never found them that appealing. I did write a Uniscribe wrapper in ManagedC++, an ObjectiveC/GNUstep wrapper in ManagedC++ and some OpenGL setup code in C (tapped in with interop), that's about it for my native / C development. Neither did I work with C++ developers. So I wonder what does this strange beast do for a living?
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
-
Super Lloyd wrote:
What does that leave
Graphics-intensive applications (e.g., video games, video codecs). Perhaps programs that are run on super computers (where a sub-optimal program would cost thousands of dollars in excessive processing). Legacy C++ applications. High performance libraries (e.g., math libraries, multi-threading libraries). Operating systems. iPhone and other mobile devices (where low-level access can be important and raw performance is necessary).
Compilers/interpreters for other programming languages.
-
He spends three or four days creating a message box.
I can picture in my mind a world without war. A world without hate. A world filled with gentle, loving people. And I can picture us attacking that world because they'd never expect it. ~ Jack Handy
Well i do symbian development using qt(new to it and learning so i'm below average maybe :) ) but its fun(especially using qt)
-
That is correct. And a time will come when the "tools" will become so easy that anyone with a diploma will be able to write applications. You will no longer be required to study all the 'boring' details. Just get a diploma in a language and start cranking out code... like a monkey. It is happening right now.
NULL
I'm quite OK with that. Making it easy to write code just makes the harder problems easier, so you will still have hard problems to work on, but the easy problems will be solvable by anyone. That's how frameworks are developed. You build a layer of abstraction (lower one) so you can work on the more complicated next level.
-
Super Lloyd wrote:
So I wonder what does this strange beast do for a living?
Code?? :) Maybe I could not understand your question properly.
The strange beast works on all of the tools that allow other developers to develop websites such as this. They develop the runtime engines that support the code that java, .Net, etc. put forth. They create the tools that edit the C#, VB, SQL etc. All of these things and more are written using C++, Objective C, or just C, and in some cases they too use MFC. Most importantly what this strange beast does is keep the OS from Linux to Windows, devices from the Apple iPod to the Zune functioning so that individuals who want to write with higher level languages can interact with these OS's and devices. C++ Developers write the code the keeps the military functioning, the code for hardware that controls and move missiles around, and that monitors space travel. The .Net and java languages are not considered reliable enough, secure enough, or stable enough to do a lot of the development that occurs on these levels. (Read these language specifications). As far as detecting memory leaks, a C++ developer is able to manage memory on his own. He is the one that writes garbage collection routines for those who are less skilled an unable to manage their own memory. Yes we may have to track a memory leak, but we can also move into and write assembly language routines from our code and back out again. The routine that allow your editors to track memory leaks. This is just touching the surface. If you want control over the machine learn C++. As far as the comment about tracking down memory leaks, if all you can come up with is tracking memory leaks – put the keyboard down before you hurt yourself (Just kidding too). A C++ developer is a true developer. Those who write in the other languages I have mentioned are likewise developers and professionals. Each language serves a purpose, and is useable and honorable in its realm, just as C++ is.
modified on Monday, April 19, 2010 11:46 AM
-
All in the title.. Never worked with MFC, read a book about it in 1998, tried it and couldn't get into it. Peruse a few C++ book, never found them that appealing. I did write a Uniscribe wrapper in ManagedC++, an ObjectiveC/GNUstep wrapper in ManagedC++ and some OpenGL setup code in C (tapped in with interop), that's about it for my native / C development. Neither did I work with C++ developers. So I wonder what does this strange beast do for a living?
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
I think you hit it on the head.. an average C++ programmer does a little of this and a little of that without ever really getting in depth on any one thing. Now, your star C++ programmers, they do about the same smattering of this and that, but they dig deeper and understand things. That gives them the knowledge and experience to do amazing things, which is what makes them no longer just "average".
patbob
-
Mechanical wrote:
someone with a fast tongue gets the job
Only if your prospective boss is a woman.
or the person from hr that is interviewing you for the position
-
All in the title.. Never worked with MFC, read a book about it in 1998, tried it and couldn't get into it. Peruse a few C++ book, never found them that appealing. I did write a Uniscribe wrapper in ManagedC++, an ObjectiveC/GNUstep wrapper in ManagedC++ and some OpenGL setup code in C (tapped in with interop), that's about it for my native / C development. Neither did I work with C++ developers. So I wonder what does this strange beast do for a living?
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
Natural language parsing, voice recognition, OOP is pretty much required to form relationships between various disparate objects. Focus is mainly on the process, and polymorphism takes over the decision branching. Standard C representation executed in terms of minutes, hours, and sometimes days. Rewrite in C++ resulted in split second responses. Rendering HTML took longer than parse times. In my opinion, C++ more closely represents logic, or more specifically OOP does this. Ada coding was my first introduction to OOP, and it was really hard to wrap my head around the concept. It wasn't until I did practical software development where meaning was added, that it all came clear(er). I do far more coding in Java and Flex now, but once in a while I have a need for C(++).
-
That is correct. And a time will come when the "tools" will become so easy that anyone with a diploma will be able to write applications. You will no longer be required to study all the 'boring' details. Just get a diploma in a language and start cranking out code... like a monkey. It is happening right now.
NULL
And I think that should be our aim too. To move the 'real' developers into making frameworks and support tools for 'users' to program.
-
All in the title.. Never worked with MFC, read a book about it in 1998, tried it and couldn't get into it. Peruse a few C++ book, never found them that appealing. I did write a Uniscribe wrapper in ManagedC++, an ObjectiveC/GNUstep wrapper in ManagedC++ and some OpenGL setup code in C (tapped in with interop), that's about it for my native / C development. Neither did I work with C++ developers. So I wonder what does this strange beast do for a living?
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
I guess, in my case,as a .net programmer, it is writing small console applications and programming micro controllers.
-
C++ GUIs are pretty powerful if you use the right framework (we use WTL, as it's both lightweight and flexible, without the bloat and legacy baggage of MFC). If algorithms are your thing, take a look at the way STL (Standard Template Library) algorithms work. It's very powerful stuff, and easily parallelised (another area of big change at the moment) if you're doing number crunching. Be aware of the existance of the Boost library too. New candidates for the standard library often start off in Boost, and it's a good indicator of where the language is going.
Anna :rose: Tech Blog | Visual Lint "Why would anyone prefer to wield a weapon that takes both hands at once, when they could use a lighter (and obviously superior) weapon that allows you to wield multiple ones at a time, and thus supports multi-paradigm carnage?"
After much reflection I decided to be inspired by your comments and I'm downloading WTL right now! On the other hand my energy level (and night work) is pretty low these days.. but things look like they are going to improve! :-)
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
-
After much reflection I decided to be inspired by your comments and I'm downloading WTL right now! On the other hand my energy level (and night work) is pretty low these days.. but things look like they are going to improve! :-)
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
Good for you! I do hope you find WTL to be as good a framework as we have. As a bonus, Michael Dunn's articles on it here on CP are an excellent learning resource. :)
Anna :rose: Tech Blog | Visual Lint "Why would anyone prefer to wield a weapon that takes both hands at once, when they could use a lighter (and obviously superior) weapon that allows you to wield multiple ones at a time, and thus supports multi-paradigm carnage?"
-
The strange beast works on all of the tools that allow other developers to develop websites such as this. They develop the runtime engines that support the code that java, .Net, etc. put forth. They create the tools that edit the C#, VB, SQL etc. All of these things and more are written using C++, Objective C, or just C, and in some cases they too use MFC. Most importantly what this strange beast does is keep the OS from Linux to Windows, devices from the Apple iPod to the Zune functioning so that individuals who want to write with higher level languages can interact with these OS's and devices. C++ Developers write the code the keeps the military functioning, the code for hardware that controls and move missiles around, and that monitors space travel. The .Net and java languages are not considered reliable enough, secure enough, or stable enough to do a lot of the development that occurs on these levels. (Read these language specifications). As far as detecting memory leaks, a C++ developer is able to manage memory on his own. He is the one that writes garbage collection routines for those who are less skilled an unable to manage their own memory. Yes we may have to track a memory leak, but we can also move into and write assembly language routines from our code and back out again. The routine that allow your editors to track memory leaks. This is just touching the surface. If you want control over the machine learn C++. As far as the comment about tracking down memory leaks, if all you can come up with is tracking memory leaks – put the keyboard down before you hurt yourself (Just kidding too). A C++ developer is a true developer. Those who write in the other languages I have mentioned are likewise developers and professionals. Each language serves a purpose, and is useable and honorable in its realm, just as C++ is.
modified on Monday, April 19, 2010 11:46 AM
OH PLEASE MAN, get off your high horse! I programmed C++ for years, you make it sound like we're gods, above everyone else. I'm sure the assembler guys would say the same things about us. IT'S JUST A LANGUAGE, and it's the technology that was available at the time. I knew a lot of C++ guys who wrote crappy code, so how is "a C++ developer is a true developer"? C++ still has it's purpose, but it's on the way out, like COBOL, Fortran, assembler, etc. A "true developer" is one who can adapt to and embrace new technologies as times change. After using C# for the past 5 years, I can honestly say that it is a much more robust OO language/environment, and takes just as much brainpower to wrap your head around some of the more advanced concepts such as anonymous delegates, LINQ, Lamba expressions, etc. And with p/invoke, you still have the same access to low level platform API functions. Your last two sentances are the only ones I completely agree with.
TpB wrote:
The strange beast works on all of the tools that allow other developers to develop websites such as this. They develop the runtime engines that support the code that java, .Net, etc. put forth. They create the tools that edit the C#, VB, SQL etc. All of these things and more are written using C++, Objective C, or just C, and in some cases they too use MFC. Most importantly what this strange beast does is keep the OS from Linux to Windows, devices from the Apple iPod to the Zune functioning so that individuals who want to write with higher level languages can interact with these OS's and devices. C++ Developers write the code the keeps the military functioning, the code for hardware that controls and move missiles around, and that monitors space travel. The .Net and java languages are not considered reliable enough, secure enough, or stable enough to do a lot of the development that occurs on these levels. (Read these language specifications). As far as detecting memory leaks, a C++ developer is able to manage memory on his own. He is the one that writes garbage collection routines for those who are less skilled an unable to manage their own memory. Yes we may have to track a memory leak, but we can also move into and write assembly language routines from our code and back out again. The routine that allow your editors to track memory leaks. This is just touching the surface. If you want control over the machine learn C++. As far as the comment about tracking down memory leaks, if all you can come up with