<?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>CProgrammingTrends</title>
	<atom:link href="http://www.cprogrammingtrends.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.cprogrammingtrends.com</link>
	<description>For Professional C Programmers</description>
	<lastBuildDate>Thu, 25 Apr 2013 13:22:46 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Popularity For Objective-C Has Stalled</title>
		<link>http://www.cprogrammingtrends.com/popularity-for-objective-c-has-stalled-2013-04</link>
		<comments>http://www.cprogrammingtrends.com/popularity-for-objective-c-has-stalled-2013-04#comments</comments>
		<pubDate>Thu, 25 Apr 2013 13:22:46 +0000</pubDate>
		<dc:creator>Zach Walton</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.cprogrammingtrends.com/?p=190</guid>
		<description><![CDATA[Traditional development trends has ensured that the C and C++ programming languages remain popular even decades after their creation. Despite being created in the same year as C++, Objective-C was never as popular. That all changed with the advent of the iPhone, but things are starting to slow down. The TIOBE Programming Community Index, an [...]]]></description>
				<content:encoded><![CDATA[<p>Traditional development trends has ensured that the C and C++ programming languages remain popular even decades after their creation. Despite being created in the same year as C++, Objective-C was never as popular. That all changed with the advent of the iPhone, but things are starting to slow down.<br />
<span id="more-190"></span><br />
The TIOBE Programming Community Index, an index that charts the popularity of programming languages, has found that Objective-C&#8217;s popularity has stopped growing after its meteoric rise from rank 42 in 2008 to rank 4 in 2012. </p>
<p>Now, this doesn&#8217;t mean that the popularity of Objective-C will start to dramatically decrease. The popularity of iOS devices and Apple&#8217;s insistence that Objective-C be the only language used in iOS development ensures that the language will have a long life ahead of it. </p>
<p>We can always make a few assumptions based on these findings though. One is that iOS development isn&#8217;t growing as fast as it used to. Developers building apps for iOS will continue to do so, but this stall in growth seems to indicate that new developers are not flocking to the platform. </p>
<p>It could all change at a moment&#8217;s notice, however, especially if Apple does <a href="http://www.webpronews.com/this-is-what-the-cheap-iphone-looks-like-rumor-2013-04">release a cheaper iPhone</a> for emerging markets this year. The development communities in China, India and elsewhere could help catapult Objective-C to even greater heights as these teams scramble to get apps on the Apple App Store. </p>
<p>As for the other languages, the top eight languages didn&#8217;t see a rise or decline in popularity compared to last year. C remains the most popular with Java and C++ taking up second and third place respectively. As you already read, Objective-C is at the number four spot, and C# rounds out the top five. </p>
<p>Here&#8217;s the full chart showing the top 20 programming languages this month: </p>
<p><center><img src="http://cdn.ientry.com/sites/webpronews/article_pics/tiobeapril2013.png" alt="Objective-C's Growth In Popularity Has Stalled" width="566" height="587"></center></p>
<p>You can <a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html">check out the rest of the stats</a> including a list of the top 50 programming languages in the world over at the TIOBE Programming Community Index page.</p>
<p><a href="http://www.webpronews.com/objective-cs-growth-in-popularity-has-stalled-2013-04#respond"><strong>Comments</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cprogrammingtrends.com/popularity-for-objective-c-has-stalled-2013-04/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Moost Goes Open Source Thanks To Last.fm</title>
		<link>http://www.cprogrammingtrends.com/moost-goes-open-source-thanks-to-last-fm-2013-02</link>
		<comments>http://www.cprogrammingtrends.com/moost-goes-open-source-thanks-to-last-fm-2013-02#comments</comments>
		<pubDate>Thu, 21 Feb 2013 13:38:15 +0000</pubDate>
		<dc:creator>Zach Walton</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.cprogrammingtrends.com/?p=186</guid>
		<description><![CDATA[Last.fm may be well known for its Internet radio services, but the company is also breaking into the open source scene. It&#8217;s latest release is sure to pleas all the C++ coders out there. Last.fm&#8217;s Marcus Holland-Moritz announced today that moost, it&#8217;s C++ library is now available to all under an open source license. He [...]]]></description>
				<content:encoded><![CDATA[<p>Last.fm may be well known for its Internet radio services, but the company is also breaking into the open source scene. It&#8217;s latest release is sure to pleas all the C++ coders out there.<br />
<span id="more-186"></span><br />
Last.fm&#8217;s Marcus Holland-Moritz announced today that <a href="http://blog.last.fm/2013/02/19/all-our-tools-are-belong-to-you">moost</a>, it&#8217;s C++ library is now available to all under an open source license. He says that moost has been in development by Last.fm&#8217;s MIR team over the past five years, and contains all the tools and utilities they use on the site. It&#8217;s based on the <a href="http://www.boost.org/">boost C++ libraries</a>.</p>
<p>Moost contains a number of features that programmers will find handy. Here&#8217;s some of the features you can expect when using it: </p>
<blockquote><p><em>There are a lot of different things in moost. Some are really simple, yet very helpful in day-to-day work, like the which template that allows you to use pairs (and containers storing pairs) more easily with standard algorithms; or stringify, a function template that turns complex objects into strings. Other parts are slightly more sophisticated: for example, moost contains the framework that is shared by all our backend services, and that allows you to write a daemonisable service with logging, a set of standard options and even a service shell that multiple users can connect to when the service is running, all in a few lines of code.</p>
<p>As our backend services are inherently multi-threaded, there’s also a bit of threading support in moost. For example, the safe_shared_ptr template is immensely useful for resources that are shared between threads and need to be updated atomically.</em></p></blockquote>
<p>Moritz says that moost also features memory wrapped dataset classes and an abstraction for loading shared objects. Both of which will make it easier to manage resources while building out large datasets. </p>
<p>You can <a href="https://github.com/lastfm/libmoost">check out moost for yourself now</a> over at GitHub. Moritz encourages any interested developers to contribute to the project if they have the time. </p>
<p><a href="http://www.webpronews.com/last-fm-open-sources-moost-a-c-library-2013-02#respond"><strong>Comments</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cprogrammingtrends.com/moost-goes-open-source-thanks-to-last-fm-2013-02/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Robots Of The Future Powered By C++</title>
		<link>http://www.cprogrammingtrends.com/robots-of-the-future-powered-by-c-2012-11</link>
		<comments>http://www.cprogrammingtrends.com/robots-of-the-future-powered-by-c-2012-11#comments</comments>
		<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
		<dc:creator>Zach Walton</dc:creator>
				<category><![CDATA[Expert Articles]]></category>

		<guid isPermaLink="false">http://cybertar.ientry.com/robots-of-the-future-powered-by-c-2012-11/</guid>
		<description><![CDATA[Developers and programmers use a variety of programming languages to get things done. C++ is one of the more complicated languages to learn, but its use can lead to some pretty amazing applications. For instance, the language is being used to power the dancing moves of one of the world's most advanced robots- the CHARLI.]]></description>
				<content:encoded><![CDATA[<p>Developers and programmers use a variety of programming languages to get things done. C++ is one of the more complicated languages to learn, but its use can lead to some pretty amazing applications. For instance, the language is being used to power the dancing moves of one of the world&#8217;s most advanced robots- the CHARLI.</p>
<p>CHARLI was built by a team of researchers at Virginia Tech who wanted to develop &#8220;a research platform to study bipedal walking and autonomous behaviors for humanoid robots.&#8221; Such a task requires top of the line mechanical engineering as well as the programming required to make it all work. </p>
<p>For fun, the researchers decided to program some dance moves for CHARLI-2. Perhaps riding on the song&#8217;s success, they chose PSY&#8217;s Korean hit Gangnam Style. CHARLI-2&#8242;s performance isn&#8217;t an exact replication, but it&#8217;s impressive nonetheless. </p>
<p><iframe width="616" height="347" src="http://www.youtube.com/embed/kmeJvkN4ntI" frameborder="0" allowfullscreen></iframe></p>
<p>For those interested in programming for robotics, there are a number of open source projects currently available. One of the more popular is <a href="http://openrave.org/">OpenRAVE</a> which focuses on &#8220;motion planning algorithms in real-world robotics applications.&#8221; It&#8217;s mostly used for arm movements, but you can still have a crazy dance party with just a robot&#8217;s arms. </p>
<p>It may not help your robot dance, but here&#8217;s some other open source C++ development platforms for robotics &#8211; <a href="http://www.urbiforge.org/">Urbi</a> and <a href="http://www.orocos.org/">Orocos. </a></p>
<p>[h/t: <a href="http://www.geek.com/articles/geek-cetera/robot-uses-32-actuators-and-custom-c-code-to-dance-to-gangnam-style-20121027/">Geek.com</a>]</p>
<p><a href="http://www.webpronews.com/c-is-powering-the-future-of-robots-and-dance-2012-10#respond"><strong>Comments</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cprogrammingtrends.com/robots-of-the-future-powered-by-c-2012-11/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Traditional Programming Language Job Trends ? August 2012</title>
		<link>http://www.cprogrammingtrends.com/traditional-programming-language-job-trends-august-2012-2012-08</link>
		<comments>http://www.cprogrammingtrends.com/traditional-programming-language-job-trends-august-2012-2012-08#comments</comments>
		<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
		<dc:creator>Rob Diana</dc:creator>
				<category><![CDATA[Expert Articles]]></category>

		<guid isPermaLink="false">http://cybertar.ientry.com/traditional-programming-language-job-trends-august-2012-2012-08/</guid>
		<description><![CDATA[It is a little late, but it is time for the summer edition of the job trends for traditional programming languages. The languages in this update have not changed for a while as  we are only looking at <a title="Java (programming language)" href="http://java.sun.com/" rel="homepage">Java</a>, C++, <a class="zem_slink" title="C Sharp (programming language)" href="http://msdn2.microsoft.com/en-us/vcsharp/aa336809.aspx" rel="homepage">C#</a>, <a title="Objective-C" href="http://en.wikipedia.org/wiki/Objective-C" rel="wikipedia">Objective C</a>, <a title="Perl" href="http://www.perl.org/" rel="homepage">Perl</a> and <a class="zem_slink" title="Visual Basic" href="http://msdn.microsoft.com/en-us/vbasic/default.aspx" rel="homepage">Visual Basic</a>. Over the next few months, I will be looking at various languages to determine how this list and other job trends posts should change. Also, please review some of the other <a href="http://regulargeek.com/category/job-trends-cat/" target="_blank">job trends posts</a> to see if your favorite language is already in one of these posts.]]></description>
				<content:encoded><![CDATA[<p>It is a little late, but it is time for the summer edition of the job trends for traditional programming languages. The languages in this update have not changed for a while as  we are only looking at <a title="Java (programming language)" href="http://java.sun.com/" rel="homepage">Java</a>, C++, <a class="zem_slink" title="C Sharp (programming language)" href="http://msdn2.microsoft.com/en-us/vcsharp/aa336809.aspx" rel="homepage">C#</a>, <a title="Objective-C" href="http://en.wikipedia.org/wiki/Objective-C" rel="wikipedia">Objective C</a>, <a title="Perl" href="http://www.perl.org/" rel="homepage">Perl</a> and <a class="zem_slink" title="Visual Basic" href="http://msdn.microsoft.com/en-us/vbasic/default.aspx" rel="homepage">Visual Basic</a>. Over the next few months, I will be looking at various languages to determine how this list and other job trends posts should change. Also, please review some of the other <a href="http://regulargeek.com/category/job-trends-cat/" target="_blank">job trends posts</a> to see if your favorite language is already in one of these posts.</p>
<p>First, we look at the <a href="http://www.indeed.com/jobtrends?q=java%2C+C%2B%2B%2C+C%23%2C+visual+basic%2C+Perl%2C+objective+c&amp;l=" target="_blank">job trends from Indeed.com</a>:</p>
<p><a href="http://regulargeek.com/wordpress/wp-content/uploads/2012/08/indeedTraditionalTrends.png"><img class="aligncenter size-full wp-image-4403" title="Indeed Traditional Language Job Trends" src="http://regulargeek.com/wordpress/wp-content/uploads/2012/08/indeedTraditionalTrends.png" alt="" width="540" height="300" border="0" /></a></p>
<p>Most of the job trends have declined in the past few months. Objective-C continues to show solid growth. C# had a significant drop but still leads its C++ cousin. Over the long term trends, Java and C# have very positive growth, while the other languages are tending to stagnate. There is huge growth in mobile development, especially with Objective-C leading the way in <a class="zem_slink" title="IOS" href="http://www.apple.com/ios" rel="homepage" target="_blank">iOS</a> development. C++ and Perl show slight declines, but still not too significant. Visual Basic continues its stable trend, showing an increase over the past 2 years but still a decline from 2005.</p>
<p>Now, let&#8217;s look at <a href="http://www.simplyhired.com/a/jobtrends/trend/q-java%2C+perl%2C+C%2B%2B%2C+C%23%2C+objective+c%2C+visual+basic" target="_blank">SimplyHired&#8217;s short term trends</a>:</p>
<p><a href="http://regulargeek.com/wordpress/wp-content/uploads/2012/08/simplyHiredTrends.png"><img class="aligncenter size-full wp-image-4404" title="SimplyHired Traditional Language Job Trends" src="http://regulargeek.com/wordpress/wp-content/uploads/2012/08/simplyHiredTrends.png" alt="" width="540" height="300" border="0" /></a></p>
<p>SimplyHired&#8217;s trends are show much more decline in recent months than Indeed. Interestingly, Objective-C is not showing much of a positive trend, but it is a much better trend than the other languages in the list. Java is showing a surprising decline over the past few months, but still retains a large lead over the other languages. C++ and C# show almost identical trends over the past year, with a decline in recent months. Visual Basic and Perl show similar declines to the other languages.</p>
<p>Finally, here is a review of the <a href="http://www.indeed.com/jobtrends?q=java%2C+C%2B%2B%2C+C%23%2C+visual+basic%2C+Perl%2C+objective+c&amp;l=&amp;relative=1" target="_blank">relative scaling from Indeed</a>. This provides an interesting trend graph based on job growth:</p>
<p><a href="http://regulargeek.com/wordpress/wp-content/uploads/2012/08/indeedRelativeGrowth.png"><img class="aligncenter size-full wp-image-4405" title="Indeed Relative Language Growth" src="http://regulargeek.com/wordpress/wp-content/uploads/2012/08/indeedRelativeGrowth.png" alt="" width="540" height="300" border="0" /></a></p>
<p>Unsurprisingly, Objective-C has the most growth, but the growth has slowed since our last update. C# growth is solid, hovering around 100% for the past 3 years. Visual Basic and C++ continue to decline. Perl and Java are still showing signs of life, but the growth is not very significant.</p>
<p>What does all this mean? First, it is clear the iOS development is hot as is all mobile development. However, mobile development does not seem to be affecting Java or the growth of mobile is offsetting the decline of Java in the enterprise space. Why does Java (and some of the others) show relative growth, but not strong growth in the trend graphs? Basically, we are seeing that while some of the languages are still showing increasing  job postings (the relative growth chart), the percentage of postings is less than before. So, other languages not in this list may be increasing in demand quicker than these traditional languages.</p>
<p><a href="http://regulargeek.com/2012/08/27/traditional-programming-language-job-trends-august-2012/#respond"><strong>Comments</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cprogrammingtrends.com/traditional-programming-language-job-trends-august-2012-2012-08/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>In July Objective-C Overtook C++, Thanks To Apple</title>
		<link>http://www.cprogrammingtrends.com/in-july-objective-c-overtook-c-thanks-to-apple-2012-07</link>
		<comments>http://www.cprogrammingtrends.com/in-july-objective-c-overtook-c-thanks-to-apple-2012-07#comments</comments>
		<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
		<dc:creator>Zach Walton</dc:creator>
				<category><![CDATA[Expert Articles]]></category>

		<guid isPermaLink="false">http://cybertar.ientry.com/in-july-objective-c-overtook-c-thanks-to-apple-2012-07/</guid>
		<description><![CDATA[One of the more interesting things to look at each month is the TIOBE Index. It collects all the programming languages and lists the top 20 based on "skilled engineers world-wide, courses and third party vendors." C and Java are usually battling for the top, but the third position fro July is definitely interesting.]]></description>
				<content:encoded><![CDATA[<p>One of the more interesting things to look at each month is the TIOBE Index. It collects all the programming languages and lists the top 20 based on &#8220;skilled engineers world-wide, courses and third party vendors.&#8221; C and Java are usually battling for the top, but the third position fro July is definitely interesting.</p>
<p>The TIOBE Index has found that <a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html">Objective-C has overtaken C++ in popularity</a>. Objective-C was in sixth place in July of 2011 and has jumped to third this month. Apple can take most of the credit for the jump in Objective-C popularity.</p>
<p><a href="http://www.inquisitr.com/270447/objective-c-programming-language-on-the-rise-we-can-thank-apple/">As The Inquisitr</a> explains, C++ and Objective-C were developed in the same year. Programmers flocked to C++, however, because it&#8217;s better in high-performance systems whereas Objective-C is better for light-weight systems. It was&#8217;t until 1988 when Steve Jobs ordered Objective-C to be used on the NeXTSTEP OS, which eventually led to OS X, that the language began to gain notoriety.</p>
<p>From there, Objective-C really took off when the iPhone launched. Apps built for the iPhone rely heavily on the Objective-C language and it shows. Moving three spaces up and overtaking C++ in just a year is a pretty impressive feat. As more people begin to develop for iOS, we should start to see Objective-C rise even more. Granted, it&#8217;s probably won&#8217;t overtake Java or C for a while as both of those languages are pretty engrained into the overall programming ecosystem.</p>
<p>Here&#8217;s the top 20 programming languages for July. There might be a few more surprises beyond Objective-C&#8217;s rise to fame such as Visual Basic .NET&#8217;s massive jump from 25th to 15th place.</p>
<p><center><img src="http://cdn.ientry.com/sites/webpronews/article_pics/tioberatings.png"></center></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cprogrammingtrends.com/in-july-objective-c-overtook-c-thanks-to-apple-2012-07/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apple Helps Objective-C Overtake C++</title>
		<link>http://www.cprogrammingtrends.com/apple-helps-objective-c-overtake-c-2012-07</link>
		<comments>http://www.cprogrammingtrends.com/apple-helps-objective-c-overtake-c-2012-07#comments</comments>
		<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
		<dc:creator>Zach Walton</dc:creator>
				<category><![CDATA[Expert Articles]]></category>

		<guid isPermaLink="false">http://cybertar.ientry.com/apple-helps-objective-c-overtake-c-2012-07/</guid>
		<description><![CDATA[One of the more interesting things to look at each month is the TIOBE Index. It collects all the programming languages and lists the top 20 based on "skilled engineers world-wide, courses and third party vendors." C and Java are usually battling for the top, but the third position fro July is definitely interesting.]]></description>
				<content:encoded><![CDATA[<p>One of the more interesting things to look at each month is the TIOBE Index. It collects all the programming languages and lists the top 20 based on &#8220;skilled engineers world-wide, courses and third party vendors.&#8221; C and Java are usually battling for the top, but the third position fro July is definitely interesting.</p>
<p>The TIOBE Index has found that <a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html">Objective-C has overtaken C++ in popularity</a>. Objective-C was in sixth place in July of 2011 and has jumped to third this month. Apple can take most of the credit for the jump in Objective-C popularity. </p>
<p><a href="http://www.inquisitr.com/270447/objective-c-programming-language-on-the-rise-we-can-thank-apple/">As The Inquisitr explains</a>, C++ and Objective-C were developed in the same year. Programmers flocked to C++, however, because it&#8217;s better in high-performance systems whereas Objective-C is better for light-weight systems. It was&#8217;t until 1988 when Steve Jobs ordered Objective-C to be used on the NeXTSTEP OS, which eventually led to OS X, that the language began to gain notoriety. </p>
<p>From there, Objective-C really took off when the iPhone launched. Apps built for the iPhone rely heavily on the Objective-C language and it shows. Moving three spaces up and overtaking C++ in just a year is a pretty impressive feat. As more people begin to develop for iOS, we should start to see Objective-C rise even more. Granted, it&#8217;s probably won&#8217;t overtake Java or C for a while as both of those languages are pretty engrained into the overall programming ecosystem. </p>
<p>Here&#8217;s the top 20 programming languages for July. There might be a few more surprises beyond Objective-C&#8217;s rise to fame such as Visual Basic .NET&#8217;s massive jump from 25th to 15th place. </p>
<p><center><img src="http://cdn.ientry.com/sites/webpronews/article_pics/tioberatings.png" alt="Objective-C Overtakes C++ In July Thanks To Apple" /></center></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cprogrammingtrends.com/apple-helps-objective-c-overtake-c-2012-07/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Basic Event-Based Programming</title>
		<link>http://www.cprogrammingtrends.com/basic-event-based-programming-2012-06</link>
		<comments>http://www.cprogrammingtrends.com/basic-event-based-programming-2012-06#comments</comments>
		<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
		<dc:creator>Dale Smith</dc:creator>
				<category><![CDATA[Expert Articles]]></category>

		<guid isPermaLink="false">http://cybertar.ientry.com/basic-event-based-programming-2012-06/</guid>
		<description><![CDATA[One of the largest hurdles I have found both myself and others struggle with is learning to think in different ways to accomplish a task. We naturally try to do things in a systematic, linear way.]]></description>
				<content:encoded><![CDATA[<p>One of the largest hurdles I have found both myself and others struggle with is learning to think in different ways to accomplish a task. We naturally try to do things in a systematic, linear way.</p>
<p>This is all well and good when telling a story, or making your plans for the day, or choosing what order to get things in the supermarket. But there is another way we think subconsciously- an event-based way, or reacting to the other things happening around us. We usually don&#8217;t realize we&#8217;re doing it, but it would be a bad day if we didn&#8217;t slow down at the intersection in our vehicles, or step over that wire dangling haphazardly across the office. Wouldn&#8217;t it be great if our programs could respond like that too?</p>
<p>One of my first forays into Object-Oriented Programming (OOP) was writing a very small, very basic game engine with Python, using the Pygame library. It wasn&#8217;t much- drawing the game board and player, with some arrow key movement. But it opened my eyes to a whole new method of writing programs, and understanding the why behind OOP, where with all the sequential programming we had done in my college classes, I didn&#8217;t understand the point.</p>
<p>The basic idea is this: Your program&#8217;s entry point will setup your base objects, probably some kind of managers. If we were writing a game engine for instance, we might initialize the screen, and user input devices. Then we start the &#8216;loop&#8217;, where on every clock cycle we would check all of our objects for tasks they need to do based on what&#8217;s happened in that clock cycle. So say the player in our game engine clicks the start button, in the code beneath our mouse manager would send the click event with coordinates to the main event manager. This event would then be re-broadcast to the rest of the resource management objects to do their own tasks. The UI manager would use the coordinates and find that the start button was clicked, firing an event that causes the game state to change to playing, prompting the screen manager to draw the game&#8230; you get the idea.</p>
<p>So how do we setup such a system? Luckily I have some code handy to outline a very basic example.</p>
<p>This is C++ compiled working on Ubuntu Linux 11.10 with g++. For ease of display on this site, I have compiled all the classes into one file. As the classes expand, splitting them up into .h and .cpp files is a must.</p>
<p><code><br />
//First our basic includes<br />
#include &lt;iostream&gt;<br />
#include &lt;string&gt;<br />
#include &lt;vector&gt;</p>
<p>using namespace std;</p>
<p>//Define our base classes that everything else will inherit from</p>
<p>//Base Event class - this is needed so we can send many types of events to all objects<br />
class Event {<br />
public:<br />
    Event() {<br />
        this->type = "Generic Event";<br />
    }<br />
    virtual string getType() {<br />
        return this->type;<br />
    }<br />
private:<br />
    string type;<br />
};</p>
<p>//Base Object class - this will parent our manager objects so we can store them in a vector together<br />
class Object {<br />
public:<br />
    virtual void recv(Event *event){};<br />
};</p>
<p>//Event Manager: This is where the magic happens<br />
class EventManager : public Object {<br />
public:<br />
    //When objects are initialized they will be passed the EventManager object's pointer. They then<br />
    //call registerObject with themselves as the parameter<br />
    int registerObject(Object *object) {<br />
        this->objects.push_back(object);<br />
    }<br />
    //When something happens, an Object will call broadcast with the appropriate event, which will<br />
    //then be sent to all other objects via a recv() method.<br />
    void broadcast(Event *event) {<br />
        for(int i = 0; i < this->objects.size(); i++) {<br />
            this->objects[i]->recv(event);<br />
        }<br />
    }<br />
private:<br />
    vector&lt;Object*&gt; objects;<br />
};</p>
<p>//This event will be fired each clock cycle - this acts as a 'ping' to objects like a mouse or keyboard<br />
//manager so they can check if any input is pending<br />
class TickEvent : public Event {<br />
public:<br />
    TickEvent() {<br />
        this->type = "Tick Event";<br />
    }<br />
    string getType() {<br />
        return this->type;<br />
    }<br />
private:<br />
    string type;<br />
};</p>
<p>//This is our 'Ticker', the object that will start the whole thing<br />
class Ticker : public Object {<br />
public:<br />
    Ticker(EventManager *EM) : Object() {<br />
        this->em = EM;<br />
        //Here you can see the Ticker object being registered with the Event Manager<br />
        this->em->registerObject(this);<br />
    }<br />
    //Once everything is setup in our main, we call run() to start the process<br />
    void run() {<br />
        while(true) {<br />
            //On each loop we send a tick event to the event manager<br />
            this->em->broadcast(new TickEvent());<br />
        }<br />
    }<br />
    //A basic example of a registered object receiving events- here we parse out tick events and<br />
    //could do different things depending on which event we actually do get.<br />
    void recv(Event *event) {<br />
        if((*event).getType() != "Tick Event") {<br />
            //Do something on events other than ticks<br />
        }<br />
    }<br />
private:<br />
    EventManager *em;<br />
};</p>
<p>//This is an optional class I like to add that we can later disable for real-time debugging<br />
class Debugger : public Object {<br />
public:<br />
    Debugger(EventManager *em) : Object() {<br />
        this->em = em;<br />
        this->em->registerObject(this);<br />
    }<br />
    //For now we simply cout the name of events as they come in- without parsing the tick events<br />
    //out, we see a LOT of ticks. Once more objects have been added we would watch for specific<br />
    //Events instead of catching them all<br />
    void recv(Event *event) {<br />
        cout << (*event).getType() << endl;<br />
    }<br />
private:<br />
    EventManager *em;<br />
};</p>
<p>//And finally, our entry point. We setup the main objects and run the program.<br />
int main(int argc, char** argv) {<br />
    EventManager* EM = new EventManager();<br />
    Ticker* CPU = new Ticker(EM);<br />
    Debugger* Bug = new Debugger(EM);</p>
<p>    CPU->run();<br />
    return 0;<br />
}<br />
</code></p>
<p>So there it is in a nutshell, this could easily be separated into multiple class files and be used in a real application with the help of a UI library, and some input. But that is beyond the scope of this article. Maybe next time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cprogrammingtrends.com/basic-event-based-programming-2012-06/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C++ IDEs ? Too many to choose from</title>
		<link>http://www.cprogrammingtrends.com/c-ides-too-many-to-choose-from-2012-06</link>
		<comments>http://www.cprogrammingtrends.com/c-ides-too-many-to-choose-from-2012-06#comments</comments>
		<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
		<dc:creator>Dale Smith</dc:creator>
				<category><![CDATA[Expert Articles]]></category>

		<guid isPermaLink="false">http://cybertar.ientry.com/c-ides-too-many-to-choose-from-2012-06/</guid>
		<description><![CDATA[When I started my C++ class in college last year, the first thing we (the students) were required to do, was to find an IDE for the class. After some configuration headaches the professor made it standard for us all to use the same one, but it didn't suit everybody's tastes. With so many out there, it's hard to find one to objectively label as the "best" but with some tips, maybe I can set you on the way to picking one that suits you.]]></description>
				<content:encoded><![CDATA[<p>When I started my C++ class in college last year, the first thing we (the students) were required to do, was to find an IDE for the class. After some configuration headaches the professor made it standard for us all to use the same one, but it didn&#8217;t suit everybody&#8217;s tastes. With so many out there, it&#8217;s hard to find one to objectively label as the &#8220;best&#8221; but with some tips, maybe I can set you on the way to picking one that suits you.</p>
<p>The IDE that was made standard in my programming class was <a href="http://netbeans.org/features/cpp/" class="bluelink">Netbeans 7.1</a>. The IDE is cross platform, and easy to configure if you run anything other than Windows. Us Windows users had a very long and complicated tutorial to follow on the class website for getting Netbeans to work, which only then worked half the time as the tutorial was written for version 6.9 of Netbeans. Netbeans does not come packaged with a compiler, causing all of the above headaches.</p>
<p>As far as general usability when you do get it configured though, Netbeans is one of my favorite IDEs to work with. It has a large support base for a variety of languages, with syntax highlighting, easy refactoring, and version control built in. It generates make files by itself, so you don&#8217;t have to edit it every time you add or remove a file from your project. It also has a plugin system that allows you to extend the base IDE just about any way you want. Netbeans is free and open source.</p>
<p>One of the IDE&#8217;s that several students showed up to class using was Bloodshed&#8217;s Dev-C++. It is saddening to see how popular this IDE still is; probably only because it is a relatively small download, and is bundled with a compiler, making the configuration non-existant. However, the IDE has not been updated in a long time. In fact, looking at the git repository where the code is hosted, it has not had a single code change since 2005. It does not feature a debugger, or any kind of syntax highlighting. It may have been up to date when it released, but there are other, much more feature-full solutions out there, that are also free. I would stay away from Dev-C++.</p>
<p>An IDE I have been hearing about more often here recently is <a href="http://www.codeblocks.org/features" class="bluelink">Code::Blocks</a>. While I have not used it myself, it touts a large feature set, while looking much more lightweight than others. In fact, I would compare it closely with Netbeans; like Netbeans it does not ship with a compiler, is open source, and extensible through plugins. It has syntax highlighting, code completion, smart indenting, and a fully featured debugger. It even has a neat to-do list built in for you to keep track of where you are in large projects. It is cross platform like Netbeans, but is written in C++, compared to Netbeans which is written in Java, so it should perform better on slower systems. I will definitely be giving it a try on my next project, you should too.</p>
<p>Of course we can&#8217;t talk about C++ IDEs without mentioning Microsoft Visual Studio. Although if you are an open-source kinda person like I am (why are you using this IDE anyway in that case), you will take offense at the newest version of Visual Studio, as Visual Studio 11 Express will only allow development of Windows 8 Metro apps. Thats right, to develop standalone Windows applications you will need to shell out $499 for Visual Studio 11 Pro. Visual Studio is a decent IDE, with lots of support for developing Windows applications, but I know I will not be using it any more unless I am specifically writing a Metro app. Not when there are other solutions that function just as well, if not better, and are not only free but open source.</p>
<p>Whether you are an experienced developer or just getting started, whichever IDE you decide to use, keep it updated and keep an ear to the ground for new ones with bigger, better features. The tech world is evolving so fast that we can&#8217;t afford to be left behind.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cprogrammingtrends.com/c-ides-too-many-to-choose-from-2012-06/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visual Studio 11 Release Candidate Updated After User Feedback</title>
		<link>http://www.cprogrammingtrends.com/visual-studio-11-release-candidate-updated-after-user-feedback-2012-05</link>
		<comments>http://www.cprogrammingtrends.com/visual-studio-11-release-candidate-updated-after-user-feedback-2012-05#comments</comments>
		<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
		<dc:creator>Zach Walton</dc:creator>
				<category><![CDATA[Expert Articles]]></category>

		<guid isPermaLink="false">http://cybertar.ientry.com/visual-studio-11-release-candidate-updated-after-user-feedback-2012-05/</guid>
		<description><![CDATA[We reported back in February that Microsoft <a href="http://www.webpronews.com/visual-studio-11-improvements-2012-02">launched the Visual Studio 11 beta</a> for developers to try ou and give their thoughts before the actual product launch. Microsoft says that there has been "significant" community response to the beta and so they are <a href="http://blogs.msdn.com/b/visualstudio/archive/2012/05/08/visual-studio-11-user-interface-updates-coming-in-rc.aspx">introducing some changes</a> to the user interface to satisfy the needs of the community.]]></description>
				<content:encoded><![CDATA[<p>We reported back in February that Microsoft <a href="http://www.webpronews.com/visual-studio-11-improvements-2012-02">launched the Visual Studio 11 beta</a> for developers to try ou and give their thoughts before the actual product launch. Microsoft says that there has been &#8220;significant&#8221; community response to the beta and so they are <a href="http://blogs.msdn.com/b/visualstudio/archive/2012/05/08/visual-studio-11-user-interface-updates-coming-in-rc.aspx">introducing some changes</a> to the user interface to satisfy the needs of the community.</p>
<p>The community feedback for the Visual Studio 11 beta has been corralled into three key areas: </p>
<blockquote><p><em>An overall desire for more visual &#8220;energy&#8221; and contrast<br />
Calls for a more balanced application of Metro styling<br />
A desire for greater icon clarity and differentiation through the use of color</em></p>
</blockquote>
<p>To that effect, Microsoft has made some significant changes to Visual Studio 11 for the release candidate version. The company has provided before and after comparisons to show the changes that were made. </p>
<p>Visual Studio 11 Beta</p>
<p><img src="http://cdn.ientry.com/sites/webpronews/article_pics/vs11beta.png" alt="Visual Studio 11 Release Candidate"></p>
<p>Visual Studio 11 RC</p>
<p><img src="http://cdn.ientry.com/sites/webpronews/article_pics/vs11rc.png" alt="Visual Studio 11 Release Candidate"></p>
<p>The first problem was there was not enough color. Many users complained that everything was too gray. To that end, they have taken steps to colorize more of the components that developers will work with. Apparently colorize means turning everything blue, but blue and gray are a nice combination. The other change is bringing more colors to the status bar to denote different statuses from development to debug mode. </p>
<p><img src="http://cdn.ientry.com/sites/webpronews/article_pics/vs11colorsdebug.png" alt="Visual Studio 11 Release Candidate"></p>
<p>Since Visual Studio 11 is likely to launch alongside Windows 8, Microsoft has been applying the Metro style to the interface in the form of using all caps for the tool window titles. These have been returned to normal with only the top level menu items going all caps for greater emphasis. </p>
<p><img src="http://cdn.ientry.com/sites/webpronews/article_pics/vs11topmenucaps.png" alt="Visual Studio 11 Release Candidate"></p>
<p>To better fit into the Metro style, Microsoft has also created a new window chrome. No longer will there be a blue border around the window to denote the OS namesake. Now the entire window is the same color to bring the entire thing together. I find it more aesthetically pleasing, but some are sure to disagree. </p>
<p>Probably the biggest change introduced in the Visual Studio 11 beta was the removal of color from icons. This obviously created some confusion for similar looking commands since color is a great way to tell these apart. Microsoft has heard the complaints and will be adding color back to select commands. </p>
<p>Color is also being added back into the icons within the Solution Explorer, IntelliSense and the application icons. This should make everything more readable and easier to distinguish. </p>
</p>
<p><center><img src="http://cdn.ientry.com/sites/webpronews/article_pics/vs11colorscommands.png" alt="Visual Studio 11 Release Candidate"></center>
</p>
<p>It&#8217;s obvious that Microsoft cares about their users by making these important changes to Visual Studio 11. There&#8217;s still more work to be done though before the official launch sometime this year. If you have yet to download it, <a href="http://www.microsoft.com/visualstudio/11/en-us/downloads">check out the Visual Studio 11 beta</a> and keep sending your feedback. </p>
<p><a href="http://www.webpronews.com/visual-studio-11-release-candidate-updated-after-user-feedback-2012-05" class="bluelink">Comments</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cprogrammingtrends.com/visual-studio-11-release-candidate-updated-after-user-feedback-2012-05/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C Is Currently The Most Popular Programming Language</title>
		<link>http://www.cprogrammingtrends.com/c-is-currently-the-most-popular-programming-language-2012-04</link>
		<comments>http://www.cprogrammingtrends.com/c-is-currently-the-most-popular-programming-language-2012-04#comments</comments>
		<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
		<dc:creator>Zach Walton</dc:creator>
				<category><![CDATA[Expert Articles]]></category>

		<guid isPermaLink="false">http://cybertar.ientry.com/c-is-currently-the-most-popular-programming-language-2012-04/</guid>
		<description><![CDATA[Have you heard of the TIOBE Programming Community Index? It's a table that <a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html">lists the ratings of programming languages</a> and tracks their status throughout the developer ecosystem. It's a good indicator of where a language stands in terms of its general use. April has a few surprises though.]]></description>
				<content:encoded><![CDATA[<p>Have you heard of the TIOBE Programming Community Index? It&#8217;s a table that <a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html">lists the ratings of programming languages</a> and tracks their status throughout the developer ecosystem. It&#8217;s a good indicator of where a language stands in terms of its general use. April has a few surprises though.</p>
<p>It was found that Java is a downward trend from it&#8217;s top spot in the developer world. It would appear that C is now the most popular programming language in the world at a rating of 17.555 percent. It&#8217;s not all that bad for Java though since it&#8217;s rating for April is at 17.026 percent. TIOBE Software says that Java will never diminish too badly due to the Android development scene. </p>
<p>How does TIOBE find these results? Here&#8217;s how the Web site puts it: </p>
<blockquote><p><em>The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. The popular search engines Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.<br />
</em></p>
</blockquote>
<p>What&#8217;s interesting is that C-based languages make up the majority of the top five list with C++ coming in at number three with a rating of 8.896 percent, Objective-C at number four with 8.236 percent and C# at number 5 with 7.348 percent. Objective-C has seen the largest climb with its position at number eight this time last year. </p>
<p>While Java may be doing down, JavaScript is working it&#8217;s way up rather slowly. It was at number 10 this time last year, but now it&#8217;s at number nine. </p>
<p>TIOBE hopes that their list will help developers make the proper choice when it comes to building new applications. Choosing a more popular language will ensure maximum compatibility, but there are applications being made now that should make language conversion easier for those who want to program applications in multiple languages. </p>
<p>Here&#8217;s the top 20 languages for the month of April according to the TIOBE Index: </p>
<p><img src="http://cdn.ientry.com/sites/webpronews/article_pics/TIOBEindex.png" alt="C Most Popular Programming Language In April"></p>
<p>[h/t: <a href="http://developers.slashdot.org/story/12/04/24/1357205/cc-back-on-top-of-the-programming-heap">Slashdot</a>]</p>
<p><a href="http://www.webpronews.com/c-is-the-most-popular-programming-language-in-april-2012-04" class="bluelink">Comments</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cprogrammingtrends.com/c-is-currently-the-most-popular-programming-language-2012-04/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
