Welcome Guest!
Create Account | Login
Locator+ Code:

Search:
FTPOnline
Channels Conferences Resources Hot Topics Partner Sites Magazines About FTP RSS 2.0 Feed

Free Trial Issue of Visual Studio Magazine

email article
printer friendly

Code Generation Drives the Future
by Peter Varhol

August 15, 2005

Code generation is a hot-button topic for many developers.

Debates rage on about how code generation is either the salvation for building complex software systems, or the end of programming as we've known it over the past several decades. But both sides of this argument miss the real point. Code generation, based on an abstract definition or high-level model of application design and behavior, is all about delivering a high-quality application despite increasing constraints of cost and schedule. If generating some or all of an application automatically results in a higher quality application that can also be built more quickly, then code generation should become the standard for application development.

ADVERTISEMENT

It's been a long time coming, but we are almost to the point where predefined code is largely replacing handwritten code in the vast majority of applications. In fact, developer-written code in most .NET applications today constitutes no more than 20 percent of total application code.

Ah, that's different, you might argue. The .NET Framework is a set of libraries, not generated code based on a higher level of abstraction. But most code-generation systems are sets of libraries whose methods build an application or component based on the specifications defined in a model or other representation of the software. It's a matter of degree rather than approach.

We have become dependent upon code libraries and frameworks because they provide us with reliable code that does tasks that don't contribute directly to unique application features. Generated code is reused code, and its quality gets proven in many different applications and uses. But code-generation technologies provide more than high-quality code. The productivity gains derived when working from a model or other high-level representation can overcome many inefficiencies in execution, especially with the ever-faster performance of processors.

Code libraries have a long history of enabling developers to improve productivity and application quality. A compiler is a code generator in a broad sense; few of us would prefer to work exclusively in machine language. Even if you look only at the PC era of computing, we've worked at successively higher levels of abstraction, requiring ever more sophisticated libraries simply to build an application.

Application quality has improved dramatically in that time. With managed code, we abstract common housekeeping chores such as memory management. The result is that developers can focus more on the implementation, rather than the mundane and error-prone details.

Performance has always been a point of contention when using code generation. While performance remains one of the cornerstones of application development, execution technology has become so good that managed execution environments have become the norm. Ironically, libraries and frameworks have become so pervasive that it's almost impossible for a developer to improve overall application performance more than a few percent.

This article requires registration. Please login below or click here to register.
 
E-mail Address:
Password:
Remember me:
 



Back to top














Java Pro | Visual Studio Magazine | Windows Server System Magazine
.NET Magazine | Enterprise Architect | XML & Web Services Magazine
VSLive! | Thunder Lizard Events | Discussions | Newsletters | FTP Home