MSDN Magazine - October 2008 - (Page 8) Editor’s NotE new Thread(ReadEditorsNote).Start(); yourAttention.WaitOne(); At this point it seems pretty self-evident that making the shift from sequential to parallel software is the next quantum leap in software development. For me, coming from the world of Test-Driven Development (TDD) and Domain-Driven Design (DDD), ideas such as designing parallelism into your application from the beginning go against much of how I have come to create software. And the very idea of trying to unit-test a parallel code segment leaves me with a huge headache. I am confident that these scenarios will ultimately be solved, but for those of us building business applications and not ray-tracing algorithms, these shifts really should cause us to become painfully aware of the gaps in our existing tools—possibly even our existing programming languages—when it comes to fully making the shift to parallel application design and development. I have spent some time playing with F# over the past few months, and I have to admit that a functional language with immutable values, by default, certainly feels more natural to me when writing parallel applications than does using object-oriented languages. That said, business applications are somewhat predicated on mutability, and, as such, I am inclined at this point to adapt my way of thinking about and writing object-oriented code. And it is this type of adaptation that allows us to think more deliberately about the actual algorithms underlying many of the systems that we build. If you’re like me, you are used to designing a system in an emergent fashion. Moving forward, we will require wonder what level of abstraction will ultimately be provided by the underlying platform. For those of us who spend a fair amount of time in our development efforts writing Web-based applications, we are already quite comfortable with the Web server as a platform for transparently providing some degree of parallelism to its hosted applications. Looking toward the future, the thought of being able to design and construct my application’s logic free from parallelism concerns is an exciting thought. Indeed, as the paradigm shift described in this issue pervades all existwe draw closer to making this a reality. In the meantime, however, we will gent design with the careful up-front planning and attention to execution context required by parallel applications. I believe this balance to be quite achievable and, in fact, see existing design principles, such as high cohesion and low coupling, working to help isolate opportunities for parallelism. That these goals are complementary serves to further validate the general direction of software design as we a more cooperative approach—one that balances the benefits of agile, emer- ing platforms, patterns, and tools, continue to push forward with our existing metaphors, tools, and methods, evolving them along the way as the opportunities present themselves. Of course, as we’ve witnessed time and time again, simply having the tools to simplify a software development challenge does not, by itself, solve that challenge. You still need to make sure that you spend time up front analyzing your code and its execution context before deciding to parallelize—and you should ensure that you can verify that your parallelizing efforts had the desired effect. As you’ll see, the current tools, and the tools yet to come, will be able to provide a great deal more insight than was previously available. But, at least for the time being, an application that can successfully run in parallel on multiple processor cores is predicated on a single factor—you. yourAttention.Set(); Thanks To The following MicrosofT Technical experTs for Their help wiTh This issue: Paul Andrew, Jonathan Aneja, Bob Brumfield, Jeff Cao, Kiran Dowluru, Ryan Duguid, Mike Flasko, Matt Gibbs, Kevin Gjerstad, Christian Kleinerman, Bertrand Le Roy, Varsha Mahadevan, Duane Need, Wayne Norton, Eugene Osovetsky, Dave Reed, Michael Rys, Gerhard Schneider, and Michael Wang. Visit us at msdn.microsoft.com/magazine. Questions, comments, or suggestions for MSDN Magazine? Send them to the editor: mmeditor@microsoft.com. © 2008 Microsoft Corporation. All rights reserved. Complying with all applicable copyright laws is the responsibility of the user. Without limiting the rights under copyright, you are not permitted to reproduce, store, or introduce into a retrieval system MSDN Magazine or any part of MSDN Magazine. If you have purchased or have otherwise properly acquired a copy of MSDN Magazine in paper format, you are permitted to physically transfer this paper copy in unmodified form. Otherwise, you are not permitted to transmit copies of MSDN Magazine (or any part of MSDN Magazine) in any form or by any means without the express written permission of Microsoft Corporation. A listing of Microsoft Corporation trademarks can be found at microsoft.com/library/toolbar/3.0/trademarks/en-us.mspx. Other trademarks or trade names mentioned herein are the property of their respective owners. MSDN Magazine is published by United Business Media LLC. United Business Media LLC is an independent company not affiliated with Microsoft Corporation. Microsoft Corporation is solely responsible for the editorial contents of this magazine. The recommendations and technical guidelines in MSDN Magazine are based on specific environments and configurations. These recommendations or guidelines may not apply to dissimilar configurations. Microsoft Corporation does not make any representation or warranty, express or implied, with respect to any code or other information herein and disclaims any liability whatsoever for any use of such code or other information. MSDN Magazine, MSDN, and Microsoft logos are used by United Business Media under license from owner. 8 msdn magazine http://msdn.microsoft.com/magazine http://microsoft.com/library/toolbar/3.0/trademarks/en-us.mspx
For optimal viewing of this digital publication, please enable JavaScript and then refresh the page. If you would like to try to load the digital publication without using Flash Player detection, please click here.