.NET 4.0 and the Future of Windows Programming

Bookmark and Share

When a company like Microsoft talks about the future of computing, you can expect a fair bit of self-serving market positioning - public software companies need to be careful to sell a vision of the future that doesn't jeopardize today's revenue streams. But, when a company like Microsoft releases a new version of its fundamental development framework - .NET, in this case - you can see more clearly the company's technical vision for the future of computing. 

.NET 4.0 is expected to be released in early 2010, simultaneously with Visual Studio 2010. Visual Studio 2010 implements many of the new features in 4.0, and introduces some unique technologies.  While the .NET 4.0 framework is effectively free, Visual Studio is a distinct revenue stream for Microsoft and a way for the company to monetize their substantial investment in software development frameworks and tooling.

It's been clear for some time that today's most popular programming languages are not particularly well-suited to building applications that take advantage of the parallel processing capabilities of multi-core and multi-processor systems. Therefore, .NET 4.0 introduces many enhancements and simplifications for those writing multi-threaded or parallelized applications. 

The .NET languages also have gained the functional programming capabilities popularized in languages such as Objective Caml and Haskall.  Functional programming is hard to succinctly define: functional languages eliminate the distinction between function and data, use functions as arguments to other functions and emphasize recursion rather than iteration.   Functional language proponents believe functional programming can lead to significant advances in programming productivity and program functionality. For example, F# is a new .NET language that explicitly supports functional program paradigms, while still allowing object orientation and full .NET interoperability. 

Perhaps surprisingly, .NET 4.0 also introduces formal support for the IronPython and IronRuby languages. These are implementations of the open source Python and Ruby languages engineered to run within the .NET Common Language RunTime (CLR). In theory, this allows Python and Ruby languages to be used within .NET applications.   

Microsoft introduced the ADO.NET Entity Framework in .NET 3.5. The Entity Framework provides a common mapping and abstraction layer between various data stores (XML, RDBMS, etc.) and the typically object-oriented model of the data used in the application.  Together with Language Integrated Query (LINQ), the Entity Framework allows an application to work directly against a conceptual model of the data, without having to use SQL or deal with the physical database implementation.  .NET 4.0 significantly improves on the Entity Framework, and Microsoft hopes this release will lead to more widespread adoption.

.NET 4.0 also includes the modelling capabilities from Microsoft's "Oslo" initiative.  The Oslo modeling framework incorporates a SQL Server-based repository for models; the "M" language for defining models and domain specific languages; and the "Quadrant" UI for working with models.  It is more than just a tool for generating diagrams and specifications, however.  An Oslo model is intended to form the basis of a model-oriented application in which key parts of the application logic are derived directly from the model. 

The many other new features in the base .NET coding framework include bolstered support for standards-based technologies such as JavaScript, Ajax and REST, and a wide range of enhancements to sibling technologies such as ASP.NET.

Individually, the .NET 4.0 features are evolutionary rather than revolutionary.  Taken in combination, however, they paint a vision of a development landscape that includes model-driven applications, functional programming, massive parallelism, and data abstraction. It's a persuasive and modern vision of software development and one that is likely to gain the support of the .NET programming community.