Click to Rate and Give Feedback
Related Articles

See the changes the CLR team made to the CLR .for NET Framework 3.5 SP1 and the improvements you’ll get running your existing CLR 2.0-based apps against this service pack.

Surupa Biswas

MSDN Magazine April 2009

...

Read more!

This column shows you how to secure the .NET Services Bus and also provides some helper classes and utilities to automate many of the details.

Juval Lowy

MSDN Magazine July 2009

...

Read more!

We show you how .NET Services within the Azure Services Platform makes it easy to bring workflow apps to the cloud.

Aaron Skonnard

MSDN Magazine April 2009

...

Read more!

This month we demonstrate how easy it is to use IronPython to test .NET-based libraries.

James McCaffrey

MSDN Magazine June 2009

...

Read more!

Microsoft Velocity exposes a unified, distributed memory cache for client application consumption. We show you how to add Velocity to your data-driven apps.

Aaron Dunnington

MSDN Magazine June 2009

...

Read more!

Also by this Author

Howard Dierking concludes that the business domain must drive software design—even if the natural paradigm is not what is most comfortable. See how he got there.

Howard Dierking

MSDN Magazine February 2009

...

Read more!

Howard Dierking talks to the inventor of C++, Bjarne Stroustrup, about language zealots, the evolution of programming, and what’s in the future of programming.

Howard Dierking

MSDN Magazine April 2008

...

Read more!

Howard Dierking

MSDN Magazine June 2009

...

Read more!

This month Howard Dierking cautions against designing applications in a vacuum with no connection to reality.

Howard Dierking

MSDN Magazine March 2008

...

Read more!

At an open spaces conference in Austin, Texas, Editor-in-Chief Howard Dierking realizes that software development and business goals can both coexist and benefit each other.

Howard Dierking

MSDN Magazine December 2008

...

Read more!

Popular Articles

One-time passwords offer solutions to dictionary attacks, phishing, interception, and lots of other security breaches. Here's how it all works.

Dan Griffin

MSDN Magazine May 2008

...

Read more!

Ray Djajadinata

MSDN Magazine May 2007

...

Read more!

We introduce you to the benefits of building composite applications with the Composite Application Guidance for WPF from Microsoft patterns & practices.

Glenn Block

MSDN Magazine September 2008

...

Read more!

When incorporating the ASP.NET DataGrid control into your Web apps, common operations such as paging, sorting, editing, and deleting data require more effort than you might like to expend. But all that is about to change. The GridView control--the successor to the DataGrid-- extends the DataGrid's functionality it in a number of ways. First, it fully supports data source components and can automatically handle data operations, such as paging, sorting, and editing, as long as its bound data source object supports these capabilities. In addition, ...

Read more!

Jeff Prosise explains when it's better to use UpdatePanel and when it's better to use asynchronous calls to WebMethods or page methods instead.

Jeff Prosise

MSDN Magazine June 2007

...

Read more!

Editor's Note
Overcoming Language Barriers with Elegant Design
Howard Dierking


  
Several weeks ago, I was in Barcelona where I was a speaker at the Tech•Ed Europe conference. To everyone who came to my session or stopped by the MSDN booth at the exhibition hall, many thanks—it was a fantastic experience that I hope to repeat.
On the last day of the conference, I decided to be somewhat adventurous, so I hopped on a subway and went into downtown Barcelona. I stopped into a small restaurant and attempted to order. I should emphasize the word "attempted" because nobody in the restaurant spoke English. And while I speak a whole bunch of Turing-complete languages, I don't speak Spanish. At any rate, the restaurant staff was very good-humored about my inability to effectively communicate what I wanted to eat (in fact, I imagine that my hostess is probably quite good at the game Charades). But that experience really got me thinking about the language tools we use—and how we use them.
As I'm writing this, Visual Studio 2008—and with it, C# 3.0 and Visual Basic 9.0—has been officially released to manufacturing and made available online to MSDN subscribers. As I'm sure you know, these new versions have even greater support for functional programming through core language features like lexical closures. Furthermore, the language extensions built in to support LINQ add a whole new level of expressiveness when it comes to a more declarative style of programming.
If you look around, particularly in Web development, you can see dynamic languages continuing to grow in popularity—so much so that Microsoft has built a runtime and set of language tools that allow popular dynamic languages like Ruby and Python to actually run on and take advantage of the Microsoft .NET Framework. And if you really want the best of all worlds (the safety of strong static typing with the feel of a dynamic language), you probably cheered Microsoft's recent announcement that F# would be released as an official, Visual Studio-supported language.
But it's not just about the choice of programming language anymore. Domain-specific languages are now starting to come into the mainstream, thanks in large part to the Ruby community. Even in more mainstream programming languages, debates around software design have shifted from object models and design patterns to the expressiveness of an API. As the complexity of software grows at an exponential rate, the requirements for programming languages grow in tandem. A language must provide more than just a means of generating instructions for the machine—it must allow the developer to express the actual intention behind code.
And it is with this notion of expressiveness where things get really interesting—because this is the characteristic that makes programming languages very personal. For example, let's say I want to find the number of words (we'll loosely define "word" to be a block of characters separated by a space) in this article with more than eight characters. Which of these is more expressive?
article.Split(new char[]{' '}).Where(w => w.Length > 8);
or
[\S\(\)]{9,}
The answer, of course, is that it depends not just on how you understand and think about the elements of software design but on how you understand and think about text parsing. Even within a single application, there are a variety of problems that, based on the individual, are most naturally expressed in different languages—and giving that individual the ability to solve those problems by using those natural expressions is the mark of elegant design.
Now, if we can just agree on a common language for ordering food ...

Thanks to the following Microsoft technical experts for their help with this issue: Cagri Aslan, Keith Boyd, Shawn Burke, Bill Chiles, James Clarke, Peter Donnelly, Charles Finkelstein, Elisa Flasko, Ted Hart, Pravin Indurkar, John Justice, Masahiko Kaneko, Lawrence Liu, John Robbins, and Chris Tavares.


Page view tracker