<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Future of Search &#187; C++</title>
	<atom:link href="http://futureofsearch.com/category/language-specific/c-language-specific/feed/" rel="self" type="application/rss+xml" />
	<link>http://futureofsearch.com</link>
	<description>Looking Ahead at Search Engines, Computer Platforms, ERP, Programming Languages, and Web Technologies</description>
	<lastBuildDate>Sun, 20 Jun 2010 03:12:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>C++</title>
		<link>http://futureofsearch.com/2010/06/c/</link>
		<comments>http://futureofsearch.com/2010/06/c/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 23:02:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[assembly language code]]></category>
		<category><![CDATA[backlash]]></category>
		<category><![CDATA[bell laboratories]]></category>
		<category><![CDATA[bell labs]]></category>
		<category><![CDATA[bjarne stroustrup]]></category>
		<category><![CDATA[c code]]></category>
		<category><![CDATA[c programmers]]></category>
		<category><![CDATA[c programming language]]></category>
		<category><![CDATA[close ties]]></category>
		<category><![CDATA[co worker]]></category>
		<category><![CDATA[colleges and universities]]></category>
		<category><![CDATA[dennis ritchie]]></category>
		<category><![CDATA[drawback]]></category>
		<category><![CDATA[generality]]></category>
		<category><![CDATA[independent programming]]></category>
		<category><![CDATA[ken thompson]]></category>
		<category><![CDATA[m university]]></category>
		<category><![CDATA[scaled down version]]></category>
		<category><![CDATA[systems programmers]]></category>
		<category><![CDATA[unix operating system]]></category>

		<guid isPermaLink="false">http://futureofsearch.com/?p=54</guid>
		<description><![CDATA[C++ will be around for a long time. It’ll be used forever by embedded systems programmers and programmers who write traditional kinds of apps. Bjarne Stroustrup, who currently works as a professor at Texas A&#38;M University and is creator of the C++ programming language, said: &#8220;C++ is bigger than ever.”There are more than 3 million [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffutureofsearch.com%2F2010%2F06%2Fc%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffutureofsearch.com%2F2010%2F06%2Fc%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>C++ will be around for a long time. It’ll be used forever by embedded systems programmers and programmers who write traditional kinds of apps. Bjarne Stroustrup, who currently works as a professor at Texas A&amp;M University and is creator of the C++ programming language, said: &#8220;C++ is bigger than ever.”There are more than 3 million C++ programmers. Everywhere I look there has been an uprising&#8211;more and more projects are using C++. A lot of teaching was going to Java, but more are teaching C++ again. There has been a backlash.&#8221;</p>
<p>Dennis Ritchie developed C at Bell Laboratories in 1972. Many of its principles and ideas were taken from the earlier language B and B&#8217;s earlier ancestors BCPL and CPL. CPL (Combined Programming Language) was developed with the purpose of creating a language that was capable of both high levels, machine independent programming and would still allow the programmer to control the behavior of individual bits of information. The one major drawback of CPL was that it was too large for use in many applications. In 1967, BCPL (Basic CPL) was created as a scaled down version of CPL while still retaining its basic features. In 1970, Ken Thompson, while working at Bell Labs, took this process further by developing the B language. B was a scaled down version of BCPL written specifically for use in systems programming.</p>
<p>Finally in 1972, a co-worker of Ken Thompson, Dennis Ritchie, returned some of the generality found in BCPL to the B language in the process of developing the language we now know as C.</p>
<p>C&#8217;s power and flexibility soon became apparent. Because of this, the UNIX operating system, which was originally written in assembly language, was almost immediately re-written in C (only the assembly language code needed to &#8220;bootstrap&#8221; the C code was kept). During the rest of the 1970&#8242;s, C spread throughout many colleges and universities because of its close ties to UNIX and the availability of C compilers. Soon, many different organizations began using their own versions of C causing compatibility problems. In response to this in 1983, the American National Standards Institute (ANSI) formed a committee to establish a standard definition of C, which became known as ANSI Standard C. Today C is in widespread use with a rich standard library of functions.</p>
<p>Stroustrup states that the purpose of C++ is to make writing good programs easier and more pleasant for the individual programmer.  When he designed C++, he added OOP (Object Oriented Programming) features to C without significantly changing the C component.  Thus C++ is a &#8220;relative&#8221; (called a superset) of C, meaning that any valid C program is also a valid C++ program.</p>
<p>There are several versions of the C++ language, of which Visual C++ is only one.  Other dialects include Borland C++, Turbo C++, and Code Warrior (Mac).  All of these software packages enable you to create computer programs with C++, but they all implement the C++ language in a slightly different manner.  In an attempt to maintain portability of both the C and C++ languages, the American National Standards Institute (ANSI) developed a standard of consistency for C and C++ programming.  While we will be working primarily with this ANSI standard, we will also be examining the idiosyncrasies of Microsoft Visual C++ 6.0.</p>
<p>He then went on talking about new projects using primarily Java, stating that the language was still very slow, regarding performance, but that it would soon change, suggesting that C/C++ were near an &#8220;end&#8221;.</p>
<p>It made it clear that the C++ Team still believes in C++ Builder, and also that they should do another version of C++ Builder. The question is how and when; this question needs to be answered soon, because it&#8217;s also clear to everyone that if Borland waits too long, the moment would be lost and C++ Builder would be dead forever.</p>
<p>One of the possibilities the C++ Team wants to investigate is to embed C++ Builder as a C++ “personality” in a future version of the Borland Developer Studio (BDS, Galileo) IDE. The BDS IDE is also used for C# Builder (BDS 1.0), Delphi 8 for .NET (BDS 2.0) and Diamondback (which includes Delphi for Win32, Delphi for .NET and C#; BDS 3.0). Diamondback is the first version of this IDE that is capable of multiple personalities. The idea is to investigate if it&#8217;s possible to extend a future version of Delphi (BDS 4.0, for example) with a C++ personality. The end result would be a C++ development tool for Win32 next to Delphi for Win32, Delphi for .NET, and C#, all in one IDE. That would be awesome, of course.</p>
<p>To illustrate that they were not just telling us something to keep us quiet, JT started a special version of BDS with, indeed, the C++ (VCL) personality inside. He built the famous edit box, list box, button demo, writing one line of C++ code, and then running the application. He was even able to demonstrate a working debugger, so this was more than just a quick hack. The best thing, as I heard later from people on the Delphi Team, was that the C++ Team itself did all this.</p>
<p>This is a good thing, since a future release of Delphi that could also incorporate a C++ (Builder) personality should not force the Delphi Team to divide their resources much more than already needed. One thing that I also heard was that the management at Borland is certainly willing to support C++ Builder (inside a future release of the Borland BDS IDE), but not at the cost of more resources. The C++ and Delphi Teams can do it, but they won&#8217;t get additional staff or money toward the effort.</p>
<p>Of course, this project requires some careful planning and consideration by both teams, so we’ll see if this idea has a chance of success. Either C++ Builder gets a future—one, which might even include extensions like Managed C++, or C++ Builder is placed in limbo forever.</p>
<p>One thing to keep in mind: The C++ Team firmly believes in C++ Builder, but it&#8217;s the management at Borland (or multiple levels up in the hierarchy, perhaps) that needs convincing. At the Meet the C++ Team session, Paul Gustavson suggested that C++ Builder developers help the C++ Team by writing an open letter to Borland’s management. Stay tuned to the C++ Builder newsgroup, Paul&#8217;s blog, or my C++ Builder Gate for more news about this open letter.</p>
<p>While Borland’s sales force believes in C++ Builder X for the new market, the C++ and Delphi Teams are willing to give C++ Builder a new future and a new hope, one that will shape the C++ Builder Community for years to come. However, I think this is a bit of an exaggeration.    I think what&#8217;s happening now is more a diversification of languages, rather than a full replacement. I could be wrong, anyway. Same here too, but this has mainly to do with cloudlessness&#8230;  Most professors &amp; research personnel can&#8217;t do anything useful in C/C++.  Most have heard of the weak things in C/C++ so that they can preach other languages, such as Java. Java is good, but will never be *the* language for doing all tasks that C/C++ can be used for right now.</p>
<p>&#8220;C++ has been a power programming language since it was born,&#8221; says Ami Vora, Microsoft&#8217;s program manager for the Visual C++ IDE in Whidbey. &#8220;Use its power for good and not for evil!&#8221;</p>
<p>Developers who choose C++ for a project are looking for more than Visual Basic&#8217;s convenience or C#&#8217;s intimate relationship with .NET. Often, these developers are looking for performance, the ability to control very specific functions, and raw programmer productivity. Certainly, you can fine-tune an application in C++ better than in other languages.</p>
<p>Yet, C++ doesn&#8217;t get quite as much of the buzz as it once did. Some relegate it to the &#8220;legacy&#8221; category—as if that means something dusty, abandoned in the attic, rather than &#8220;we have a whole lot of it, and we know how to use it confidently, so we don&#8217;t have to re-invent the wheel.&#8221; With Microsoft giving so much attention to other, newer languages, some developers have worried if C++ will be left behind. Not hardly.</p>
<p>In the last iteration of Visual C++, Vora admits, Microsoft misread some issues in regard to the use of managed extensions.&#8221; Though managed extensions were a great proof of concept, they didn&#8217;t always fulfill the needs of C++ developers,&#8221; she says. They&#8217;ve learned their lessons: according to Vora, the new version that will ship with Whidbey will have better language design (it&#8217;ll look like C++ with .NET functionality) in a clean, pleasant environment. Plus, you can take advantage of both all the C++ code you&#8217;ve ever written and the .NET framework.</p>
<p>Let&#8217;s get specific, with a brief overview of its improvements. The new C++ will let developers take full advantage of the CLR, including garbage collection, finalizes, reference and value types, and mapping C++ and .NET fundamental types to one another. Templates and generics are both supported, and you&#8217;ll have a choice of compile- or runtime binding. C++ will support deterministic cleanup, so you know exactly when something is destroyed. You&#8217;ll also be able to use the STL.NET library for secure library functions.</p>
<p>You&#8217;ll also see better interoperability, the company promises. In Whidbey, C++ will support everything the CLR supports. With a compiler switch turned on, you&#8217;ll get errors if your library will not work with that of another language.</p>
<p>Optimization is a topic close to many C++ programmers&#8217; hearts. One new feature to look for is profile guided optimization. If you have sufficient user data and an understanding of how the program will be used, you can show the system, &#8220;This is how my application will be run,&#8221; making clear which actions are most likely. (For example, most transactions do go through without error, so that&#8217;s where you want the compiler to do most of its optimization for both speed and value.) Your application is probed to collect data with a histogram of values and &#8220;hot-cold path&#8221; information. The new C++ will do (or do more) switch expansion, in lining decisions, and virtual call speculation. MSIL will also be optimized &#8220;so the back end will run even faster,&#8221; explains Vora.</p>
<p>Naturally, C++ will cuddle up much closer with .NET. By recompiling /clr, says Vora, a developer can take advantage of all the functionality built into .NET. &#8220;That means he cans just use the multitude of classes/functions provided (which can do a lot of his job for him) rather than writing all that code himself. This can be, as you can imagine, a major time-saver,&#8221; she says.</p>
<p>What&#8217;s this mean in regard to standards? Microsoft is working with ECMA to create a standard for the language C++/CLI. When TG5 has completed this specification, it will be submitted to the Ecma General Assembly. Herb Sutter, convener of the ISO C++ committee, is on the Microsoft team; his participation (and established reputation among C++ developers) bodes well for the community.</p>
<p>What about legacy APIs and frameworks, such as MFC and Win API? &#8220;We don&#8217;t anticipate not supporting things like that in the foreseeable future,&#8221; says Vora. &#8220;We still have a team actively working on libraries such as MFC. However, most of MS&#8217;s brain sweat is going into making MFC interop better with .NET and letting you host MFC in a .NET application.&#8221;</p>
<p>Plenty of C++ programmers expect their compiler to do the heavy lifting, and they don&#8217;t expect to have to know what happens under the hood. (You can easily own a sports car because you want to go fast without any desire to tinker with the engine.) As a result, the user experience—the development environment and its tools—can often feel like the most important element. Whidbey is promising plenty of IDE improvements for C++ programmers. Among them are better IntelliSense (it understands templates and namespaces, for instance), Unicode support, and XML comment support (which C# already has). Browsing capabilities include live references, call graphs, inheritance browsing, and class view filtering.</p>
<p>A lot of attention has been invested in improving how C++ works with large development teams, according to Vora. There are custom build rules, better IntelliSense performance on large projects, and project property sheets. The goal of all this, says Vora, is to enable developers to make the best use of their time.</p>
]]></content:encoded>
			<wfw:commentRss>http://futureofsearch.com/2010/06/c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

