From the Editor
Volume 12, Number 24: November 17, 2008
There is certainly no shortage of topics to talk about. Yes, there is the world
of politics and what many consider to be the most historic election ever. Then there
are the financial markets, where buyers have returned to Wall Street after heavy losses
looking for beaten-down stocks, still mindful of the economy's growing problems.
But let's talk about some good news. Microsoft just finished announcing some amazing
products at the Professional Developers Conference
in Los Angeles. In past columns, I've talked about software+services, in addition to
cloud computing. Well, now it is official - we have announced Windows Azure,
and released a Community Technology Preview of it hosted in a Windows Server 2008-based kernel.
Developers will create applications that run on Windows Azure using Visual Studio
and their existing .NET programming skills. You can expect model-driven development
and new software patterns, parallelism, and horizontal scale.
The Need for Speed
Speaking of scale and parallelism, I just gave a speech at User2User, the 2008
Mentor Graphics International User Conference. Everyone agreed on one thing: Pushing
the limits of computer technology comes from a variety of fields, including electronic
design automation, financial analytics, data mining, and medical imaging, to name
a few. From 1986 to 2002, the performance of microprocessors improved at the rate
of more than 50 percent per year. But the honeymoon is over and we need to think
about multi-core programming.
I see huge potential for partners, customers, and the development community to
vastly improve both client and server-side performance by leveraging multi-core
technologies. Think about it - if you are single threaded on a quad-core processor,
you are wasting 75% of your available processing power. On a dual quad-core...
well, you can do the math.
The Challenge
Of course this will create new challenges. A dual-core processor at 2GHz may
perform very nearly as fast as a single core of 4GHz, if parallelized properly.
What is the hitch? The hitch is that programming for multi-core architectures is
notoriously difficult, and trying to adapt legacy applications may prove fruitless.
However, we must start thinking in terms of concurrency and threading.
When I was a field engineer, we used WinDBG to debug threads for customers.
When applications hang, it is usually because of a deadlock or spinning thread.
Deadlocked threads can be identified because they barely use the CPU while spinning
threads endlessly loop threads, hogging the CPU.
Learning About Parallelism
Microsoft is working very hard on this problem. Our goals are simple:
• Enable developers to express parallelism easily so that they can focus on
the problem to be solved
• Improve the efficiency and scalability of parallel applications
• Simplify the process of debugging parallel applications
There is some fantastic material here
for you to see from PDC, red hot from the product teams at Microsoft.
I spent some time talking with George Chrysanthakopoulos, who is a brilliant engineer
who created a concurrent programming toolkit called the Microsoft CCR and DSS Toolkit 2008.
It is available for free download. If you are skeptical, just watch this video,
which is a case study for Siemens AG. It changed the way I look at parallelism. Simply awesome.
Are You a Startup?
We recently announced a new program for early-stage startups, called Microsoft BizSpark.
The program enables startups to get friction-free access to Microsoft products
and tools with no up-front cost. For more information, please see
Anand Iyer's blog post.
Want to blog, give a presentation, or get involved in the community.
Shoot me an e-mail. Let's talk. Let's meet in
person. I am at the Microsoft office in San Francisco frequently. It is in the heart of the
city and a great place to hang out.
Let's work together to keep our programming skills strong to survive this tough economy.
Thanks for reading,
Bruno
Subscribe to the MSDN
bi-monthly newsletter.