{"id":900,"date":"2010-02-04T18:38:42","date_gmt":"2010-02-05T00:38:42","guid":{"rendered":"http:\/\/www.realtimerendering.com\/blog\/?p=900"},"modified":"2010-03-23T07:09:19","modified_gmt":"2010-03-23T13:09:19","slug":"c-baby","status":"publish","type":"post","link":"https:\/\/www.realtimerendering.com\/blog\/c-baby\/","title":{"rendered":"C++, Baby"},"content":{"rendered":"<p>I was catching up on the <em>Communications of the ACM<\/em>, and noticed this article, <a href=\"http:\/\/portal.acm.org\/citation.cfm?id=1610252.1610272\">Computer Science in the Conceptual Age<\/a>. The &#8220;catch your eye&#8221; text on one page was: &#8220;Programming interns\/job seekers from our program Spring 2009 (35 interviewed in the game industry) found no companies administering programming tests in Java.&#8221;<\/p>\n<p>There are other chewy bits, such as: &#8220;The USC experience is that 100% of its students interviewed for programming positions are given three-to-four-hour-long programming tests, with almost all companies administering the tests in C++.&#8221;<\/p>\n<p>Also, this: &#8220;The game industry will also tell you that it wants the first four programming classes in C++, not Java, according to M.M. McGill and my own private communications with directors of human resources in major game-development companies.&#8221;<\/p>\n<p>One final morsel: &#8220;Many game companies say they will not interview or hire someone whose first programming language is Java.&#8221;<\/p>\n<p>Wow, that last one&#8217;s harsh, especially since my experience with two teenage sons (one in high school, the other a freshman computer science major) is that Java is the norm for the first &#8220;real&#8221; language taught (I don&#8217;t count <a href=\"http:\/\/en.wikipedia.org\/wiki\/Scheme_(programming_language)\">Scheme<\/a> as a real, &#8220;you&#8217;ll get paid programming in it&#8221; type of language). I don&#8217;t think I&#8217;d rule someone out for knowing Java first, though having gone from C++ to Java and then back, the transition from Java to C++ is like being thrown out of the promised land: you suddenly again spend half your time messing with memory in one form or another. C# and Java are darn productive in that way.\u00a0And, no, for me at least, those <a href=\"http:\/\/en.wikipedia.org\/wiki\/Auto_ptr\">auto-pointer classes in C++<\/a> never quite seem to work&#8212;they need a different sort of discipline I don&#8217;t appear to have. I also love that <a href=\"http:\/\/tog.acm.org\/resources\/applets\/vrml\/pellucid.html\">my first Java program<\/a>, from 1997, still works on the web; some of my C++ programs from back then won&#8217;t run on Vista or Windows 7 because the <a href=\"http:\/\/en.wikipedia.org\/wiki\/WinG\">WinG<\/a> DLLs are not a part of those operating systems (thanks, Microsoft).<\/p>\n<p>Nonetheless, the article&#8217;s right: at Autodesk we&#8217;ve dabbled with Java and C#, I&#8217;ve seen Python used for UI control around the fringes of a program, but the heart of client-side graphical programs is almost always C++ (or isn&#8217;t, with regrets and cancellation often soon following&#8212;<a href=\"http:\/\/www.stanfordmarsh.co.uk\/news13.html\">been there myself<\/a>, though Java was <a href=\"http:\/\/www.aecbytes.com\/newsletter\/2004\/issue_13.html\">only a little bit to blame<\/a>, to be fair). Also, XNA, which uses C#,\u00a0<a href=\"http:\/\/blogs.msdn.com\/shawnhar\/archive\/2008\/02\/25\/xna-framework-on-64-bit-windows.aspx\">does not have a 64 bit version<\/a>. In addition, Microsoft&#8217;s managed code support usually lags behind the &#8220;real&#8221; DirectX, i.e., the one for C++.<\/p>\n<p>Looking around, I did find an open-source project, <a href=\"http:\/\/slimdx.org\/\">SlimDX<\/a>, that does support 64-bit assemblies for interfacing with DirectX. Interestingly, they claim one AAA game title shipped using SlimDX, but no mention of which. So <a href=\"http:\/\/www.gamedev.net\/community\/forums\/topic.asp?topic_id=561235\">I asked<\/a>. They&#8217;re keeping the information confidential, which is fine, but the other comment sounds about right: &#8220;The large majority of professional commercial PC\/console games are still developed in C++ because of the sheer amount of legacy code the studios developing those games have that is already in C++ (and because of the generally poor support from major console vendors for languages other than C or C++, which contributes to lock-in).&#8221;<\/p>\n<p>Long and short: it&#8217;s C++, baby.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I was catching up on the Communications of the ACM, and noticed this article, Computer Science in the Conceptual Age. The &#8220;catch your eye&#8221; text on one page was: &#8220;Programming interns\/job seekers from our program Spring 2009 (35 interviewed in the game industry) found no companies administering programming tests in Java.&#8221; There are other chewy [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[48,7],"tags":[322,33,323,281,324,45],"class_list":["post-900","post","type-post","status-publish","format-standard","hentry","category-reports","category-resources","tag-c","tag-directx","tag-java","tag-programming","tag-scheme","tag-xna"],"_links":{"self":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts\/900","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/comments?post=900"}],"version-history":[{"count":18,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts\/900\/revisions"}],"predecessor-version":[{"id":1185,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts\/900\/revisions\/1185"}],"wp:attachment":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/media?parent=900"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/categories?post=900"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/tags?post=900"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}