How long until c++ disapear from game development

Started by
43 comments, last by Washu 12 years, 7 months ago
" I remember reading an article in Dr Dobbs years ago about how REXX was going to make all programmers obsolete"


I remember reading adverts in the 1990s for the languages which would replace C and C++ with languages so easy that managers would be able to write the code themselves... I'll bet no-one's ever heard of any of them these days.

Easily 20 years this conversation's been going.

It's actually getting very very hard to hire good C/C++ people. And that's a problem because Google runs on hardcore C++ stuff; KVM and Xen need good C hackers, performance libraries for Android need C and C++ coders... Just this week Google is talking about tech to run C++ code natively inside sandboxes because they know the world isn't replacing that stuff any time soon. Good. Means my pay will go up for my rarity value...

We've all been waiting 50 years for Cobol to die and it still won't.
Advertisement
I'm always very amused how many people around here seem to see C++ as some sort of anachronism for masochists with unreasonable performance needs. The "work" I'm doing at the moment is for scientific high performance computing. Those guys aren't even done "exploring" C++ and still sit on huge amounts of legacy Fortran code :D. I think C++ will stick especially long exactly because all the attention shifts to "higher level" stuff. I don't see any languages emerge that are seriously threatening C++'s "niche" (i.e. compiled "high level" language that is "close to the hardware"). Also, getting the last bit out of hardware is not getting easier, actually the opposite. Caching, out of order execution, vectorization etc. are not easily controlled from managed languages. Also, the VM/JIT compiler has to be written somehow... Sure C++ will lose some ground to more suitable tools in different areas, but I don't see it going away anytime soon.

I'm always very amused how many people around here seem to see C++ as some sort of anachronism for masochists with unreasonable performance needs.


I think few people here truly vilify C++, but in this forum they sure as hell do! There is a difference between a programmer with many years of experience working with C++ and a newbie trying to learn the basics of programming. Keep in mind the forum this conversation is being held within.

C++ is a stupid beginners language.
C++ is a stupid productivity language.

That said, C++ very much has its place and will continue to for a very long time.


One of the other realities, which I am kinda amazed hasn't been addressed is the number C++ developers required has probably dropped. With a mixed language environment, most of the developers on a game project simply do not need to know C++, only a handful of team members do. Granted, that doesn't change the fact they require C++, but odds are pretty good if you get hired entry level in the game industry these days, you aren't going to actually be working in C++.
Let's stop bringing up fortran and cobol shall we? We're not talking about code with high reliability requirements like banking software, or backwards compatibility requirements like an OS or something with such a difficult/esoteric domain as some scientific computing. Even in the best of cases where you re-use a core engine you keep that what? 10 years?

As Aardvajk points out, it's a matter of economics and games are inherently different in this domain than the cases where it makes sense to keep stuff like fortran around.

My only wish is that we are not stuck with stone age tools like Python in 20 years.

In 20 years I expect: "Tea, Earl Gray, hot" and no less. Because I sure as hell won't be writing for loops then.

The so-called evolution of computer languages is not. There has been not even an inch of progress in that regard for past 30 years. Last invention, for better or worse, was OO.

Actually there are some changes that have happened more recently but they have all been more aimed at the architectural level of code then at the Paradigm level. Think of Mixin, aspect oriented programmingand the like not all of these have taken hold yet though.

Worked on titles: CMR:DiRT2, DiRT 3, DiRT: Showdown, GRID 2, theHunter, theHunter: Primal, Mad Max, Watch Dogs: Legion


Even in the best of cases where you re-use a core engine you keep that what? 10 years?


A few months ago I ran across a comment in our very old engine. It basically said "The third rewrite is the charm, hope this works forever". The date on the comment was 1997.

A solid game engine can last much more than 10 years. It will naturally evolve and grow but the core can have a very long and hardy life.

The Quake engine is approaching 20 years old. Renderware is over 15 years old and has been incorporated through many EA projects. The original Sims Engine now powers the 3DS game and is over 15 years old. The Open Dynamics Engine recently celebrated its 10th birthday. These are in decline and tend to support your ten year theory.



But others, like the C4 engine, Unity, PyGame, and others are likely to still be trending growth on their 10th birthdays.

We are seeing the game engines start to mature into long-term products. I expect a few will last 30-50 years and persist for decades more as legacy tools and apps.



C++ will not disappear from games for a long, long, long time. I can easily imagine job hunters in the year 2100 looking for legacy C++ coders for game engines and tools. It is not so different from the older languages we use today, notwithstanding your dislike of the comparison with COBOL, Fortran, and other older languages which are very much alive even though 60 years have passed over their heads.

BASIC predates C by a decade and yet we still see that language evolving and in active use in games with no end in sight.

For the other side take an example of shader languages, they are high level languages and they run on video cards faster that any c/c++ application does. You need to understand that is natural evolution.


And you need to under stand what you are talking about.

Firstly, a GPU isn't a magically device; it runs a limited subset of problems very fast (massively parrallel, memory coherant, latency unsensative ones for the most part) but despite what NV (and AMD to a lesser degree) might well have you believe they are not The One True Future. Throw it a class of problems it DOESNT deal well with, or indeed a set of data which is too small and all you've got is a slightly faster heater.

Secondly; shaders express a very limited language in order to focus on these very small windows of tasks and are ultimatily DSLs for graphics and (limited) compute.

Finally, OpenCL is a C based API and language which extends the C language to target GPUs. AMP is a MS developed C++ version of the same. C and C++ are making inroads on to the GPU (which both delights and horrifies me in about equal amounts) and GPUs are making changes to embrace the languages (AMD's Core Next has various features which make writing C++ code easier to target to a GPU.

In short; C++ is gaining more areas it can be used, not losing them and this will continue to expand while there is a need for such access to exist.

Yes, many people can go off and code in Python, Java, C#, VB.Net and JavaScript and will get their work done faster than if they did it in C++ and with a runtime which is fast enough. However these people rely on others to develop their platforms, their compilers, their optimisations and JIT compilers... and it's down there you'll find those who want to work with C++ etc.. and as Katie say's we are becoming a rarer breed which means we can get paid more.. and I'm ok with that :)

As for C++ vanishing from gamedev; not until all the console makers give us a tool chain based on something else.... so about half-past never...

I hope it will never-ever because its the only language I'm good at :)

to take it seriously I think because someone can't handle c++ (and uses c# etc.) doesn't mean that it should be avoided. It only means that c# is good for learning programming and c++ is for hardcore, performance-aware programmers.


Sorry, but that's nuts. "I'm hardcore because I use a more difficult language" is just wrong on so many levels. And as for performance - cases can be constructed where C# wallops C++; even heavily optimized C++ by someone who knows what they're doing (Raymond Chen has one on his blog but I can't find the link just now).

I voted "Never" just because it was the most reasonable answer - more like the best of a bad lot as predicting an exact timeframe seems even more silly. "Don't know but not for a pretty damn long time and most likely well after I'm pushing up daisies" would have been a better option.

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.


Yes, many people can go off and code in Python, Java, C#, VB.Net and JavaScript and will get their work done faster than if they did it in C++ and with a runtime which is fast enough. However these people rely on others to develop their platforms, their compilers, their optimisations and JIT compilers...


And c++ programers rely on CPU and hardware designers and they don't complain about that, men you have just discovered how this world works. :lol:
I still think that "never" is a stupid answer. This means that c++ will be use for game development an infinite number of years from now. It means that when games no longer exist, humans disappeared from the universe, and the earth has been swallowed by the sun, c++ will still be in use in game development.

I think that at some point between now and the end of the universe we are going to see a change in computers which means c++ is no longer used for game development. So, "Never" is the stupidest possible answer.
Don't thank me, thank the moon's gravitation pull! Post in My Journal and help me to not procrastinate!

This topic is closed to new replies.

Advertisement