Today marked a significant step in SwiftPad’s development: with the recent release of .NET 4.0 Beta 2, we were able to upgrade the base framework without much more than the push of a button. Previously, the migration was made impossible by various errors in the Visual Studio 2010 Beta 1 installer. Apparently, my complaints were adequate incentive to weed out the bugs, as the beta 2 installation worked without a glitch.
SwiftPad development began with .NET 3.5. While the framework provided many powerful tools to speed up the development process, it was inadequate for the needs of such a complex application. Ultimately, we succumbed to the fact that we were not about to get what we needed entirely from the .NET Framework, settling on good old platform invokes. Platform invokes involve communicating directly with the operating system, bypassing any framework wrappers. While they support just about any function you could imagine, they have one major downfall: they are considered relatively low level. In terms of programming, the level indicates how close a technique or language is to the raw data that gets sent to a computer’s processor. The higher the level, the further away it is from what a computer can actually understand. The power of any given level is subjective to the techniques of the programmer and is often the target of debate. Choosing an appropriate language is a crucial step in the development of any application, and often shapes the resulting program more than any designer’s planning. Given the various criteria determined during the conceptual stage, I narrowed our selection of languages down to two options: C# and C++. The C family of languages provides a level of power unmatched by any other, in my personal opinion. The object-oriented nature of the family allows for the development of more than just a program, but an organized, well-structured work of art. C, the earliest member of the family, is the lowest level of the group, but is the least object-oriented. C++, the next in line chronologically and level-wise, is a bit more accommodating. It has the low-level efficiency of C, yet it provides powerful object-oriented features such as abstraction. However, after a great deal of thought, I eventually settled with C# for various reasons. C# has a stronger object model than C++, based entirely on event/object structure and doing away with C++’s remnants of a procedural past. These characteristics effect to a more extensible product, opening up opportunities for a futuristic level of customizability seen only in the newest and the greatest applications. It is also a managed language by nature, though it does support actively switching between unmanaged and managed code, much like VC++. Managed code is generally more reliable than its unmanaged counterpart, though a small amount of efficiency is lost as a result. Finally, C# has native support WPF, an absolutely stunning new technology. The significance of WPF is something that deserves its own article, but to make a long story short, it allows us to utilize shiny new technologies—such as Vista/7 Aero—in a fraction of the time that it would normally take, all the while opening up even more opportunities for customization and extensibility.
Needless to say, every language has its disadvantages as well as its advantages. In our case, C#’s major advantage is also its most significant disadvantage: its reliance on the .NET framework. In order to achieve some of the more advanced features, we inevitably needed to work with the operating system directly. Unfortunately, this is not quite as easy in C# as it is in C/++.
TO BE CONTINUED