The internet has made global marketing and distribution of products easier than ever and it has nurtured a market for new offerings like Flex and Silverlight that deliver cross-platform rich Internet applications. But against the colorful backdrop of a dynamic industrya spotlight on managed and dynamic code and colorful new toys is cropping up every day for developerslet's not forget the importance of tools that produce fast, lean applications that can be easily distributed and installed with as few dependencies as possible.
Native code remains the core foundation for desktop, client/server, and workstation application development. ISVs and Micro ISVs rely on native code to deliver high-performance packaged software, and the ubiquity of multicore architectures enables programmers with abilities in native languages like C++ and Delphi to drive application development in high-growth industries like healthcare, financial markets, and services and telecommunications. And even when we peel back every dynamic language, managed virtual machine, RIA runtime, or Web 2.0 framework, we ultimately find a native code foundation built with native C++ or Delphi compilers. Native code is the wizard behind the curtain. It will always be in fashion.
A Fork In The Road
The world of application development has bifurcateda recent development wave has been geared toward the browser while the need for application development tied to hardware is growing just as aggressively.
There are many business scenarios where competitive advantage could not be achieved without native code:
- Programs that can run without any installation or prerequisites.
- Projects with a large code base that is in maintenance mode.
- Applications that require direct hardware interaction.
- Systems with proprietary encryption or compression algorithms.
- Industries where low latency and high performance yield competitive advantage
Many feel that Microsoft .NET's performance lags behind native code because of impediments like runtime loads and required assemblies, reliance on JIT compilation for high-speed code execution, and garbage collection. The result is decreased performance and predictability and increased resource consumption, which are not acceptable traits in high performance, data-intensive industries.
Binckbank, the largest online stockbroker in the Benelux region (Belgium, the Netherlands, and Luxembourg), has enjoyed great financial success by relying on native code development. The firm has developed a middleware system based on a native code infrastructure that processes 40,000 updates per second coming from 200,000 customers. High performance, security and scalability are paramount in this kind of real-time trading environment along with an application development path that allows them to take advantage of new multicore chip architectures from vendors like Intel and AMD.
The processing speed Binckbank has been able to achieve gives them a comfortable head start against the tripling of trade data volumes predicted for the next decade. Currently one third of U.S. equity trades are done using algorithmic trading. This figure is expected to soar to more than 50 percent by 2010. The flip side is an expected decline of 90 percent for human traders. This means an increased reliance on machines to drive the world financial markets and a demand for developers who can program to these kinds of applications.
In the old days, we had data and a rich GUI desktop interface. Today, we find a major change in where and how we experience rich features. Enterprise application developers feel pressure to bring the richness in content of Web 2.0 applications down to the desktop without bringing latency performance issues along for the ride. As data volumes continue to increase across all industries, it is virtually impossible to be a generalist. Developers need to understand the systems they are programming for and the tools and languages that will allow them to extract the best performance. Significant business opportunities can open and close in less than the time needed just to define a new application in the traditional way. The developers with a solid understanding of native programming and the languages associated with it will be the ones creating innovation and driving policy on a global level.