Building the Right Environment to Support AI, Machine Learning and Deep Learning
This Week's Topics
- Comments from the Editor
- Recently Published Books
- New & Updated Articles on CodeGuru
- New Features in Visual Studio 2010 and the .NET Framework 4.0
- .NET Tip: It's 2:00 a.m. Do You Know What Your Processes Are Doing?
- Parallel Programming in Visual C++ 2010 CTP
- Notes from Microsoft PDC 2008
- Speed Up Your Reflection Processes
- Hottest Discussions
- New Articles on Developer.com
- Multimedia Programming with Java: Getting Started
- Reduce String Literal Overhead with Eclipse
- Continuously Improving Your Kanban Change Request Process
Comments from the EditorToday 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.
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 BooksFor 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.
Visual Studio Tips
By Sara Ford for Microsoft Press
240 pages for $29.99
251 Ways to Improve Your Productivity
By Bill Wagner for Addison-Wesley
300 pages for $44.99
By Jeff Scanlon for Apress
350 pages for $39.99
New & Updated Articles on CodeGuruFollowing 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.
Features in Visual Studio 2010 and the .NET Framework
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.
Tip: It's 2:00 a.m. Do You Know What Your Processes Are
By Jay Miller
Monitor the health of the processes running on your system.
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.
from Microsoft PDC 2008
By Bradley Jones
A few tidbits from PDC 2008. Azure, Silverlight, WPF, Windows 7, and much more!
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 GroupsCheck 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!
... HOT THREADS ...
New Articles on Developer.comMultimedia 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.
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.
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.