Codeguru Update eNewsletter - November 4th, 2008


Earthweb.com Network
Tuesday November 4, 2008

This Week's Topics

Comments from the Editor

Today is a great day to be an American. We get to vote for our next president. Not only that, regardless of the outcome (assuming one of the two major parties' candidates will win), the vote will be historic.

Also historic for this week is an upgrade to the discussion forum on Codeguru. If all goes as planned, the discussion forum software will be upgraded on Wednesday evening. There won't be any major changes that you'll notice; however, the software will have better security and will allow us to use a few AJAX features.

In this newsletter, I post hot threads that are happening in the discussion forum on Codeguru. One hot thread this week is on multi-core processors. This is an area I've been focused on for a couple of years now due to the impact these processors will make. It is interesting to see some of the misunderstandings around multi-core systems.

In the hot thread on the site, such a misunderstanding started the conversation. That misunderstanding centered on the issue of a computer only using half its power to run a program. It wasn't using the full power. This was a direct result of a program running on just a single core of a dual-core program. The result is that the one core was fully utilized, but the other was not. This resulted in 100% use of the core, but only 50% usage of the entire processor. As noted in the thread, if this were a quad-core system, only 25% of the processor's power would have been used.

As a developer, you have to be aware of the impact of multi-cores on your programs. There is a paradigm shift you need to be aware of when architecting your programs. Microsoft, Intel, and others have tools to make coding your applications to multi-core systems easier, but it is still up to you to determine what parts of an application can be architected to run concurrently or in parallel. A processor's logic or API will not be able to figure that out on its own.

In many cases, threading has been used in the past to break an application into pieces so it could run concurrently or in parallel. It is interesting to note that with the tools that are coming, you should not be thinking in terms of threads, but rather in terms of tasks. You will want to architect your programs with tasks in mind. A task would be a piece of logic that can run at the same time as others. Thus, you can identify a task that can be parallelized or run concurrently. Then, you also can identify contingencies that these tasks might have.

Bottom line, multi-core processors are changing the way we architect many of our applications. Today, you need to consciously think about what the impacts are and plan them into your applications. The tools are already getting better at making this easier, but there is still a ways to go before thinking about multi-core falls to the wayside in the same way that thinking about memory did in the early 90s.

We are at a point where a historic change in how programs are architected is about to happen. Parallelism and concurrency are part of the new frontier. That future looks bright for gaining power in our applications. Let's hope the historic changes happening in America with the election today also lead to a bright future!

Until next week...

Bradley L. Jones

Recently Published Books

For those of you keeping up by reading books. The following are just a few of the new books that have been recently released. If you've read any of these, feel free to write a review to be posted on CodeGuru. See the submission guidelines.

Microsoft Visual Studio Tips
By Sara Ford for Microsoft Press
240 pages for $29.99
251 Ways to Improve Your Productivity

More Effective C#
By Bill Wagner for Addison-Wesley
300 pages for $44.99

Accelerated Silverlight 2
By Jeff Scanlon for Apress
350 pages for $39.99

New & Updated Articles on CodeGuru

Following are short descriptions of new articles on CodeGuru. If you are interested in submitting your own article for inclusion on the site, then you will find guidelines here.

New Features in Visual Studio 2010 and the .NET Framework 4.0
By mendhak
Learn about several features relevant to developers in Visual Studio 2010 and the .NET Framework 4.0, such as parallel programming, XSLT debugging, new ASP.NET features, and new VB.NET and C# features that include the Chart control, XSD Designer, Lambda Expressions, and optional parameters.

.NET Tip: It's 2:00 a.m. Do You Know What Your Processes Are Doing?
By Jay Miller
Monitor the health of the processes running on your system.

Parallel Programming in Visual C++ 2010 CTP
By Marc Gregoire
The CTP build of Visual C++ 2010 includes a new library to help you write native parallel code.

Notes from Microsoft PDC 2008
By Bradley Jones
A few tidbits from PDC 2008. Azure, Silverlight, WPF, Windows 7, and much more!

Speed Up Your Reflection Processes
By Paul Kimmel
Use Reflection.Emit to speed up Reflection intensive processes by writing one general algorithm that emits a specific solution.

Discussion Groups

Check out the CodeGuru discussion forums
Forums include Visual C++, General C++, Visual Basic, Java, General Technology, C#, ASP.NET, XML, Help Wanted, and much, much, more!


Focus problem using JavaScript (scripting)

CListCtrl: How to make sure that 1 item is always selected? (VC++)

Remove Vista's CPU limitation of 50%?

New Articles on Developer.com

Multimedia Programming with Java: Getting Started
By Richard G. Baldwin
Getting started with a new technology can be daunting. Learn how you can benefit from a Java multimedia library and a lightweight Java IDE named DrJava, which has the ability to interactively evaluate Java code.

Reduce String Literal Overhead with Eclipse
By Scott Nelson
Every J2EE web application can get an immediate performance boost by eliminating common and unnecessary overhead that uses an uncommon Eclipse setting and a little discipline.

Continuously Improving Your Kanban Change Request Process
By Eric Landes
Many times. a new process is introduced and after the initial introduction, those productivity gains slide back. But the Kanban process (really, any lean process) is designed to allow teams to introduce improvements continuously to their process, thus continually improving productivity.

This article was originally published on November 5th, 2008

About the Author

Bradley L. Jones


Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date