<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" media="screen" href="/styles/xslt/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:c9="http://channel9.msdn.com">
<channel>
	<title>Channel 9 Forums - Tech Off - Really Really Going Native</title>
	<atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/Forums/rss"></atom:link>
	<image>
		<url>http://mschnlnine.vo.llnwd.net/d1/Dev/App_Themes/C9/images/feedimage.png</url>
		<title>Channel 9 Forums - Tech Off - Really Really Going Native</title>
		<link>http://channel9.msdn.com/Forums</link>
	</image>
	<description>Channel 9 keeps you up to date with the latest news and behind the scenes info from Microsoft that developers love to keep up with. From LINQ to SilverLight – Watch videos and hear about all the cool technologies coming and the people behind them.</description>
	<link>http://channel9.msdn.com/Forums</link>
	<language>en</language>
	<pubDate>Sat, 25 May 2013 10:17:56 GMT</pubDate>
	<lastBuildDate>Sat, 25 May 2013 10:17:56 GMT</lastBuildDate>
	<generator>Rev9</generator>
	<c9:totalResults>7</c9:totalResults>
	<c9:pageCount>-7</c9:pageCount>
	<c9:pageSize>-1</c9:pageSize>
	<item>
		<title>Tech Off - Really Really Going Native</title>
		<description><![CDATA[<p>We've been hearing how small ubiquitous devices and vast web sites have reminded everyone that efficiency and performance really are important in code.&nbsp; All I can say is, yes.&nbsp; And we've also have been hearing that as a result, C&#43;&#43; is coming back!&nbsp; Um, why?</p><p>The conventional wisdom ten years ago was that size and speed didn't matter much, since desktop hardware was so big, fast and underutilized.&nbsp; Instead, time to market, maintainability, integration, quality assurance— those were the things to worry about.&nbsp; Code bloat?&nbsp; Inefficient use of hardware resources?&nbsp; Not important.</p><p>As someone who did a fair amount of assembly-language programming on really small embedded systems in the 1980s, I could never quite swallow that argument.&nbsp; And because of the time I spent writing assembly-language, I deeply appreciate the C language.</p><p>C, not C&#43;&#43;.</p><p>When I want the benefits of object-oriented development, including rich, powerful, well-architected libraries and all the convenient short-hands provided by templates, classes, overloading and inheritance, I use Python or C#.&nbsp; They are truly awesome, powerful, and fast!&nbsp; They produce very compact, portable programs (Python is especially portable, to all those outlying systems Microsoft has no time for...).&nbsp; They save you the trouble of managing memory.&nbsp; They make a lot of hard stuff magnificently easy.&nbsp; And if you don't like them, there are so many others to choose from, like Java, JavaScript, Ruby, Eiffel, and so on and so Forth.</p><p>But if I'm trying to write the fastest, tightest code possible, for a driver or server application or library, I believe that C is still the right language: C, not C&#43;&#43;. Why?</p><p>The thing about C is that it was designed specifically to balance the need for portability against the need in system programming to be able to understand exactly what your code is doing at a hardware level.&nbsp; It was and remains a brilliant abstraction of processor instructions.&nbsp; All those nasty preprocessor directives are an incredibly effective means of setting different contexts so the same code can run on diverse systems.&nbsp; The language itself is pleasantly terse (minimal typing), which is less important these days when our IDEs support code completion, but I'll tell you, it used to matter a lot, and it's elegant!&nbsp; My main point, though, is that C hits the perfect level of abstraction for system code.&nbsp; It's high enough level that you can read a lot of it fast, and it's low enough level that you can find out exactly what is happening at every step.</p><p>Why should you know what's happening at every step?&nbsp; Isn't encapsulation a beautiful thing?&nbsp; Not for system code.&nbsp; If you can afford not to care what your components are doing, use a really powerful scripting language.&nbsp; That's often a good choice for mobile devices, too, because byte-code is a lot more compact than native code and is easily portable.</p><p>Now, the C&#43;&#43; aficionados will say, perhaps rightly, that for very large projects with multiple teams, C&#43;&#43; can facilitate inter-team communication.&nbsp; It's more type-safe.&nbsp; You can spell out your contracts more clearly using classes and interfaces.</p><p>Well, you can do the same things in C, of course, just by taking care.&nbsp; Most of the shortcuts and short-hands of C&#43;&#43; are just that, and the simplicity of C makes you express your APIs in a very concrete way.&nbsp; C forces you to expose what you're doing, where one of the objectives of a lot of C&#43;&#43; code is to obscure (encapsulate) it.&nbsp; And look, if you're thinking about performance, you have to focus on two things:</p><p class="BulletCheck000CxSpFirst">-- &nbsp;Am I doing things the most effective way (am I using the right algorithms)?</p><p class="BulletCheck000CxSpLast">-- &nbsp;Am I doing things as efficiently as possible (am I avoiding unnecessary steps in my implementation)?</p><p>The short-hands and shortcuts of C&#43;&#43; generally make both these factors harder to evaluate.</p><p>Also, transparency is particularly valuable in the open-source context, as opposed to the standard corporate model where source-code is kept secret. Even on very large system projects, I believe that the simple clarity of C code makes it the best choice.&nbsp; For instance, say what you will about Linus Torvald's personality, he's a good architect, and Linux remains clean and well factored.&nbsp; It would not be any easier to understand if it were written in C&#43;&#43;, and it would likely be much messier under the hood.&nbsp;</p><p>Incidentally, I adore Linus' famous rant on this subject in 2007.&nbsp; What a jerk, but he's so right!&nbsp; And he is not alone in having problems with C&#43;&#43;. Among its detractors are the likes of Niklaus Wirth (&quot;C&#43;&#43; is an insult to the human brain&quot;), Alan Kay (&quot;I invented the term Object-Oriented, and I can tell you I did not have C&#43;&#43; in mind&quot;), Bertrand Meyer (&quot;There are only two things wrong with C&#43;&#43;: the initial concept and the implementation,&quot; or &quot;C&#43;&#43; is the only current language making COBOL look good&quot;), and even Donald Knuth (&quot;Whenever the C&#43;&#43; language designers had two competing ideas as to how they should solve some problem, they said, 'OK, we'll do them both'. So the language is too baroque for my taste&quot;).</p><p>Now, I know C&#43;&#43; programmers will passionately disagree. &nbsp;Bjarne is every bit as arrogant as Linus, and Microsoft is busy drumming up business for a &quot;modern&quot; C&#43;&#43;.&nbsp; I'm just speaking my own experience: object-orientation is good when I don't have to care about what's happening at the machine level.&nbsp; If I have to care, C is the language I choose. Still.</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/Really-Really-Going-Native/3885b479297448658bd0a0e900f4f3e8#3885b479297448658bd0a0e900f4f3e8</link>
		<pubDate>Sat, 13 Oct 2012 14:51:50 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/Really-Really-Going-Native/3885b479297448658bd0a0e900f4f3e8#3885b479297448658bd0a0e900f4f3e8</guid>
		<dc:creator>haroldshenry</dc:creator>
		<slash:comments>7</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/haroldshenry/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - Really Really Going Native</title>
		<description><![CDATA[<p>you quote a lot of people saying C&#43;&#43; stinks, but I did not see any specific examples that illustrate their sentiments.&nbsp; And you can code C in visual studio, no?</p><p>My opinion, MSFT should create an easy to use&nbsp;native code language, just like it did C#, where the syntax and feature set&nbsp;is similar to C#.&nbsp; The most important improvement over C&#43;&#43; being the programmer does not have to code prototypes in .h files.</p><p>&nbsp;</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/Really-Really-Going-Native/2626bb0b8259462e89bba0e9010a776d#2626bb0b8259462e89bba0e9010a776d</link>
		<pubDate>Sat, 13 Oct 2012 16:10:10 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/Really-Really-Going-Native/2626bb0b8259462e89bba0e9010a776d#2626bb0b8259462e89bba0e9010a776d</guid>
		<dc:creator>Steve Richter</dc:creator>
		<slash:comments>7</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/SteveRichter/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - Really Really Going Native</title>
		<description><![CDATA[<p>Well, I'm currently working on low-level systems programming&nbsp;using mixed C/C&#43;&#43; that involves things like async IO (the actual low-level async IO implementation), and one thing I can say is that it is a PITA. All of my testing tools are written in C#, so I get a 50/50 mix of the two environments.</p><p>What I find is that I spend an awful lot of time fudging with low-level issues and gotchas in C/C&#43;&#43;&nbsp;that could have been avoided in C#. If I spend the same amount of time in C# doing the same thing, I can end up spending more time working on the actual high level algorithms etc which in itself results in optimizations.</p><p>An extreme example would be assembly vs C#. Yes you can eventually come up with a faster implementation to the same problem but while you try to get the hard-to-debug-and-maintain assembly code working in the 1st place, the C# implementation would long since have been done and you can focus on improving it in other areas, like adding caching algorithms etc that will eventually result in quite performant code.</p><p>Also take into consideration that the problems we need to solve are becoming exponentially more complex, and you realize we can't be futzing around in a low-level language trying to solve problems that should not have been there in the 1st place (obscure memory leaks and bugs, fighting with the single-pass compiler because it's too stupid to recognize the definitions a few lines down in the same file, packing issues, calling conventions, header files, nasty STL syntax and usage, confusing compiler error messages, and whole lot more I forgot right now).</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/Really-Really-Going-Native/7f9d74fedc9d4936bd28a0ea00035990#7f9d74fedc9d4936bd28a0ea00035990</link>
		<pubDate>Sun, 14 Oct 2012 00:12:11 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/Really-Really-Going-Native/7f9d74fedc9d4936bd28a0ea00035990#7f9d74fedc9d4936bd28a0ea00035990</guid>
		<dc:creator>BitFlipper</dc:creator>
		<slash:comments>7</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/BitFlipper/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - Really Really Going Native</title>
		<description><![CDATA[<p>@BitFlipper: Yes! This is my experience exactly! C# with .NET beats C&#43;&#43; and C hands down (actually, so does Python) for just getting things working reliably when your whole system doesn't depend on &nbsp;one piece of code. But, when you're writing something that's needs to be as performant as you can possibly make it, either because it's on a critical execution path or because everyone in the world is going to have to rely on it and my have it on their critical paths, then I would much rather use C than C&#43;&#43;, or anything else for that matter.</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/Really-Really-Going-Native/8a6ea21af62349b1b55ca0ea0009f9cf#8a6ea21af62349b1b55ca0ea0009f9cf</link>
		<pubDate>Sun, 14 Oct 2012 00:36:19 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/Really-Really-Going-Native/8a6ea21af62349b1b55ca0ea0009f9cf#8a6ea21af62349b1b55ca0ea0009f9cf</guid>
		<dc:creator>haroldshenry</dc:creator>
		<slash:comments>7</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/haroldshenry/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - Really Really Going Native</title>
		<description><![CDATA[<p></p><blockquote><div class="quoteText"><p></p><p><a class="permalink" title="Post Permalink" href="/Forums/TechOff/Really-Really-Going-Native/2626bb0b8259462e89bba0e9010a776d">21 hours&nbsp;ago</a>, <a href="/Niners/SteveRichter">SteveRichter</a> wrote</p><p>My opinion, MSFT should create an easy to use&nbsp;native code language, just like it did C#, where the syntax and feature set&nbsp;is similar to C#.&nbsp;</p><p></p></div></blockquote><p></p><p>Frankly, ANSI C which includes something like stdint.h, Windows.h and a header file to &quot;normalize&quot; warnings (e.g. &quot;X not found - assuming extern function returning int&quot; is stupid. and should be an error not a warning) gets 95% of the way to what you want.</p><p>I like C. I don't like C&#43;&#43;.</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/Really-Really-Going-Native/58d61bed928a4af69485a0ea00e532c2#58d61bed928a4af69485a0ea00e532c2</link>
		<pubDate>Sun, 14 Oct 2012 13:54:29 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/Really-Really-Going-Native/58d61bed928a4af69485a0ea00e532c2#58d61bed928a4af69485a0ea00e532c2</guid>
		<dc:creator>evildictaitor</dc:creator>
		<slash:comments>7</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/evildictaitor/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - Really Really Going Native</title>
		<description><![CDATA[<p>You use a tool to get a job done. C&#43;&#43; doesn't make C obsolete in any way (I get the sense you're complaining that since we don't focus on C we think it doesn't matter... This is not the case.) C&#43;&#43; adds many things to C beyond classes... I'm not sure I understand the problem here. You could also write x86 by hand, if you want go really, really, really native...What's the point?<br><br>This debate strikes me as one that has no purpose other than to satisfy an urge to present&nbsp;an <em>opinion</em> (C is better than C&#43;&#43;). That's OK. It's fun to geek out. <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif?v=c9' alt='Smiley' /><br><br>C is a <em>great</em> language, one that powers a lot of computing today (and tomorrow). C&#43;&#43; is a great language, one that powers a lot of computing today (and tomorrow). Use what makes sense for the task at hand (sometimes, templates can be great, you know that whole genericity thing...).</p><p>For some real examples (as opposed to opinions of others), Google's V8 is implemented using a strict subset of C&#43;&#43; (C with abstract data types...). Chakra is implemented with C and C&#43;&#43; (some templates...). If you use both languages to solve a set of computing problems, then where does that leave your argument?<br><br>C or C&#43;&#43;, go native when it makes sense, both are significantly more high level than machine code... If you need features of C&#43;&#43;, then use C&#43;&#43;. If C is all you need, then use C. Sometimes, you'll use both (this is the case in systems like Windows, SQL, Office, CLR, JVM, etc...)<br><br>Re your quotes... It's certainly the case that very few academics care for C&#43;&#43;. In fact, it's cliché to criticize the language in academic&nbsp;PL circles... The fact remains, however, that&nbsp;C&#43;&#43; is a language for <em>engineering</em>, not academic literature. So, whereas I have the utmost respect for folks like Bertrand Meyer, I don't take their commentary seriously, any more than I do somebody stating any opinion as fact simply because it's his or her opinion...</p><p>&#43;&#43;</p><p>C</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/Really-Really-Going-Native/9c5e2c59263849c18ba6a0ec0061e644#9c5e2c59263849c18ba6a0ec0061e644</link>
		<pubDate>Tue, 16 Oct 2012 05:56:26 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/Really-Really-Going-Native/9c5e2c59263849c18ba6a0ec0061e644#9c5e2c59263849c18ba6a0ec0061e644</guid>
		<dc:creator>Charles</dc:creator>
		<slash:comments>7</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Charles/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - Really Really Going Native</title>
		<description><![CDATA[<p></p><blockquote><div class="quoteText"><p></p><p><a class="permalink" title="Post Permalink" href="/Forums/TechOff/Really-Really-Going-Native/3885b479297448658bd0a0e900f4f3e8">Oct 13, 2012 at 7:51&nbsp;AM</a>, <a href="/Niners/haroldshenry">haroldshenry</a> wrote</p><p>I'm just speaking my own experience: object-orientation is good when I don't have to care about what's happening at the machine level.&nbsp; If I have to care, C is the language I choose. Still.</p><p></p></div></blockquote>Not in C&#43;&#43;, OO is there, but that doesn't mean you have to use it, and it also doesn't mean you pay anything for having it there and not using it. C&#43;&#43; is far more than just OO.<p></p><p>Seems like your problem is thinking at a higher level of abstraction and not being exposed and experienced in different problem domains, I suggest going to the far opposite, pick a very high level language like C# and above, JavaScript, Python etc. Or maybe try doing some web development, it's always a good idea to switch once in&nbsp;awhile. I think only then you will come back and appreciate C&#43;&#43;, the same way you grew fond of C after using assembly. Right now you are sort of in &quot;denial&quot;, there's no &quot;one fit all&quot;, even in one problem domain like high performance and real-time computing.</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/Really-Really-Going-Native/f6b2376fc9c34b2e9987a0fc00fd702f#f6b2376fc9c34b2e9987a0fc00fd702f</link>
		<pubDate>Thu, 01 Nov 2012 15:22:44 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/Really-Really-Going-Native/f6b2376fc9c34b2e9987a0fc00fd702f#f6b2376fc9c34b2e9987a0fc00fd702f</guid>
		<dc:creator>Ion Todirel</dc:creator>
		<slash:comments>7</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Ion Todirel/Discussions/RSS</wfw:commentRss>
	</item>
</channel>
</rss>