A new member recently asked me which development environment he should choose. He said that he was just starting off and wanted a platform that would maximize his chances of succeeding, while giving him the maximum flexibility. I thought about the question a bit and realized that this question applies to seasoned developers as well.
I’ve used Visual Studio 2005 Professional (VS05) and C# for some months now on a couple of projects. Between the two applications, I’ve used quite a bit of both C# and the .Net Framework. I can honestly say that aside from distribution, installation, and possible speed issues surrounding the Microsoft .Net Framework that Microsoft created a winner. You’re reading an article from a software developer that used to swear by the Win32 SDK and the one who always disliked and avoided Microsoft’s Foundation Class libraries even when the rest of the computer community long since embraced the architecture.
With that said, here are the choices. One can choose VB6 (or similar product), C++, C#, or Delphi (Pascal). Borland’s C++ Builder and Microsoft’s new C# have much in common, as both offer a combined graphical and coding environment, much like that of VB6. C# goes further and implements features of VB, PHP, and Java to create an impressive language and uses Microsoft’s new and enhanced .Net Framework v2.0. Other possibilities include straight C/C++ using your own classes, assembly language, and a few other less popular languages/environments.
Many authors choose and swear by Borland’s Delphi . The product, which markets itself as a Rapid Application Development platform, goes a long way to that end. Effectively, Delphi does to Turbo Pascal what Microsoft Visual BASIC did to plain BASICA (Quick BASIC).
Industry Trends and You
If your desire is to be marketable as an engineer to large companies and to be looking towards the future, then without a doubt you will want to verse yourself in everything .Net v2.0 and C# for windows and web forms. Knowing C++ with .Net comes in a close second. Most companies have jumped onto the.Net v2.0 bandwagon, so you would be wise to use the latest version and not an earlier one.
When it comes to what language is the best for commercial distribution of shareware applications to the general masses, the picture becomes a bit murkier. You can use any of the .Net languages (C++, VB.Net, C#) or you can use standard bearers such as Delphi , VB6, or Borland C++ Builder. These are older, more mature environments, but still pack quite a bang for the buck.
Giving a history of the various computer languages used in the last 50-years would make for a very lengthy book. In this section, however, I will give a brief history of the main languages. As the old cliché goes, knowing where you came from helps you to know where you are going.
History of the C-Language Family
Of the famous names in the computer industry, the two people who should really go down in history are Dennis Ritchie and Brian Keringhan of AT&T Bell Laboratories, who in the 1970s created the C Programming Language. Virtually everything that we take for granted today has its roots in their pioneering work. I’m not just talking about the PC. All current languages and professions use work that these two pioneered.
I should also mention Bjarne Stroustrop, who extended the language and created C++ and the object oriented programming that all modern computing now uses regardless of language.
Most programmers starting off today will learn the .Net architecture in school, like students of previous years learnt Microsoft MFC architecture with C++. It’s an unfortunate byproduct of our current scholastic environment that learning the history and origins of the languages gets at best a minor footnote.
Although today C#/C++ are the predominate languages, it is interesting to note that back in years gone by, C had to compete against other languages. C++ started off as just C, which was a higher language to the assembler. C allowed very tight written code, which the author could optimize and correlate directly to machine code. It was quite common in earlier years to look at the assembly listing and compare the assembly generated to what you would have created manually. I know that I did that.
In the early 80s schools taught COBOL, FORTRAN, and Pascal. Pascal was my first language. C wasn’t even a course that you could take. Come to think of it, PC assembly wasn’t either. Studying mainframes and software for mainframes was the ticket well into the 80s.
When Microsoft introduced Windows v3.1, two languages vied for developer’s hearts, Pascal and C. Both interfaced directly with the Windows operating system by calling APIs exported from GDI, Kernel, or User system DLLs. These DLLs were given the name Win16 SDK, which later became Win32 SDK and Win64 SDK.
I used both languages but liked C better, as I liked being close to the operating system and I disliked making code overtly English like. C was also a bit more flexible. I still remember programming books of that era showing sample code in Pascal and C. That seemed to have been a requirement in those days. One advantage was to see the same code done in slightly different ways, which helped reinforce the idea.
As the years went by, C augmented and became C++. C++ gained classes and objects. Microsoft abstracted the SDK by creating their own classes, called the Microsoft Foundation Classes. Microsoft has steadily weaned developers away from accessing low level APIs and resources. The notable exception is the DirectX API for game developers.
MFC introduced the concept of code bloat and multi-layers underneath your code. Unless you stayed with the SDK development, gone were the days of assembly listing or using C. For all that are curious, I loathed MFC then and now. I later adopted C++ first taking it on as a better C than C. I still remember the first time that I heard that phrase.
Anybody who’s ever used VB or C# has used RAD. The idea behind RAD is that you create a Windows or Web form using a GUI environment and then add in properties, methods, and events to control what you see on the GUI. By contrast programming a GUI with C or C++ regardless of whether you use MFC is a major chore, but one well worth doing at least once. There is something to be said for knowing how Microsoft Windows thinks and operates. We’ve become so used to events, methods, and properties that the concept of cooperative vs. asynchronous message queues would probably draw blank faces on most developers. This debate heated up with IBM and Microsoft introduction of OS/2, but that is a different article.
Microsoft eventually replaced MFC with a newer and more powerful class library that filled in many of the holes, namely the .Net architecture. Microsoft introduced C# as a way of creating a safer C++, which does away with pointers. C# introduced the concept of RAD, so you finally have in a sense products coming full circle.
As mentioned earlier, C# is the next leap forward in the C language. Microsoft took many of the good features from VB, Java, and PHP and added them to C++ and called it C#. As I write this article, the latest Microsoft development environment is Microsoft Visual Studio 2005 (VS05), which incorporates the Microsoft .Net Framework v2.0 into all its supported languages.
When Microsoft decided to improve C with the introduction of VS05, I was saddened that a great feature of VB did not make it into C#, namely the with-statement. Also, VB6 still has a slightly easier method of creating events, although C# is not bad either. Another minor advantage of VB6 is that it can match up what’s on the right side of the period automatically with the left side, if you go back and view the context menu. I’m not sure why Microsoft doesn’t implement this minor convenience into C# and C++. Considering that this feature is part of the IDE, you would think that it would be platform independent.
History of BASIC
The “Basic” in “Visual Basic” is really BASIC, which is an acronym for “Beginners All purpose Symbolic Instructional Code”. Okay, they left off the “P” in Purpose, so the acronym is not quite accurate.
BASIC was created to teach students in a simple way how to program. The earliest versions were line based and interpretive, namely that the language compiled the line after you hit enter. There was no compiler in the modern sense of the word.
BASIC wouldn’t be even a footnote in history if not for Microsoft including BASICA for free in its MS-DOS and IBM-DOS operating systems. The “A” in BASICA was for advanced, as BASICA added a few more bells and whistles to BASIC.
Many aerospace companies loved BASICA because the code was “portable” and the language was free. C gained popularity much on the same reasoning, portability and cheap, although Microsoft languages are anything but cheap.
BASIC took a major leap, when Microsoft introduced a form of BASIC to run scripts for their Office products. In the early days each Microsoft Office product included a version of a BASIC based scripting language. BASIC as a language took a leap forward, when Microsoft introduced Quick BASIC (and Quick C) in order to compete with Turbo Pascal.
Microsoft took their hand at a RAD (think Delphi ) tool and introduced Visual Basic (VB). It immediately won converts. Using VB was definitely easier and faster than creating an application using C and the Win16/Win32 SDK. Microsoft in quick succession added features and capabilities until getting to Visual Basic v6.0.
By the time VB6 hit the market, Microsoft incorporated VBScript into their Office products dumping the earlier variations. The VB6 runtime files are commonly distributed by many vendors including Microsoft, which make for very small distributable code in a mature language.
Microsoft went to work on their next generation set of languages and decided to take RAD to the next level. The created the .Net Framework and created a new C-based language, C#, which could compete on many levels. Microsoft dumped the VB class library replacing it with the .Net Framework, hence the name VB.Net. Today C# and VB.Net are quite similar.
By replacing the VB class library with the .Net Framework, Microsoft effectively equated C# and VB. Now the difference is merely one of style. C# is still a bit more flexible, as it is based on C and not BASIC.
Microsoft Visual Basic 6 (VB6), the last version of VB before the introduction of the .Net architecture still has quite a following. I still get surprised by that. I use the platform and quite a few people in the community do too. Other companies have taken over VB6 by creating their own platforms based on Microsoft’s work.
History of PASCAL and RAD
The Pascal language has a very interesting history and its survivability to this day shows the genius of its inventor, Dr. Niklaus Wirth. Dr. Wirth created the Pascal language by using bits and pieces of the failed language ALGOL (ALGOL from ALGOrithmic Language).
ALGOL (see above) was a programming language intended for the scientific community that an international community helped develop in the 1960s in Zurich . The charter was to create a platform-independent language. To achieve this goal the language sacrificed many basic data types. The many deficiencies of ALGOL (see above) led the scientific community to wrap their hands around FORTRAN. When I was at UCLA in the early 80’s, UCLA was still teaching FORTRAN. Today, universities teach C++, but that is another story.
Dr. Wirth saw the deficiencies in ALGOL and knew that he could extend the language and create a better one, so in 1971 he released a structured language that he called Pascal after the 17 th Century French philosopher and mathematician, who built a working mechanical digital computer.
Pascal was innovative for its time in many ways. The compiler compiled down to an intermediate phase. That was not something done by those times. From this phase what we now know as a linker would create the machine specific executable. Because of this two stage compilation, Steve Jobs and company were able to port Pascal relatively easily to the Macintosh.
Dr. Wirth designed Pascal for lightening fast execution; strict data type checking; and object oriented design. Unlike C/C++, which uses symbols, Pascal uses words and reads like a natural language. Pascal is also very structured. You must declare all symbols ahead of time and you can’t mix and match them.
In the 1980s Microsoft wrote compilers for both Pascal and C/C++. How many of you remember Microsoft Pascal? At one point Microsoft decided to focus strictly on C/C++ and decided to sell off their Pascal language, leaving Borland as the main company to back Pascal and its following.
A small company created during the mid 1980s a program called Turbo Pascal, which took the industry by storm and catapulted Borland to be a major player in the development language realm. Turbo Pascal forced Microsoft to follow suit and resulted in Microsoft Quick Basic and Microsoft Quick C and Microsoft’s focus on both BASIC and C/C++.
For a while Turbo Pascal was the defacto language for programming on the PC. Borland through v7.0 of the language continued to extend and expand the language.
At one point, Microsoft released Visual Basic a one stop graphical development environment. Borland followed suit with Delphi , its version of a rapid application development environment. They naturally chose Pascal. I guess Borland calling their product “Borland Visual Pascal” would have been a bit too much, so we are left with only Delphi . Interestingly enough I think Delphi is the only product/language that doesn’t explicitly mention its underlying language.
With the release of Delphi and its Windows focus, Turbo Pascal and its focus on DOS soon got relegated to the history books. Throughout the years, Delphi added many of the features and extensions present in Microsoft Visual Basic or the Microsoft Visual Studio languages.
Delphi remains a relatively easy language to use and with its fast compilation, cross platform appeal, and competition to Microsoft remains a force in the industry.
Pascal had been waning in support over the years, so Borland took a different approach to creating applications. They introduced what they called Rapid Application Development (RAD). The concept was that you could create the GUI with a GUI and then tie-in code (Pascal), when necessary to make the objects work together. Borland called their new RAD based Pascal Delphi. The product still exists today and has many supporters. I know several people in ASP who swear by the platform.
Benefits of C/C++ (No Foundation Classes)
I went for an interview recently and to my big surprise the company had their developers designing their products using C++ and the Win32 SDK rolling in their own classes. I thought that I was the only developer in the last decade that swore by that. I had my own reasons, but was curious of theirs, so like any good reporter I asked.
Their primary reasons were download size and speed. They wanted their complete download file to be no larger than 3 to 4 Mbytes in size. Because they wrote game software that targets the masses, they did not want a behemoth. Considering that the download file included the installer and all necessary components to run on Windows 95 and later that is one hell of an optimization. I might add that their software also accessed server resources.
Interestingly enough, the use of VB6 produces relatively tight code too. The VB6 distributable package plus the application usually compresses down to a couple of megabytes. The problem comes in, when adding in components, especially data access components (i.e. ADO ).
Their other reason was speed. I’ve heard this argument before, and truth be told, I made the same argument in the past. The problem is that most people today run computers with processing power that dwarfs their predecessors from a decade ago. Still I guess if developing a computer based game, the speed argument wins out. VB6 is not exactly known for blisteringly fast graphics.
There was another reason that I did not hear from them, namely that of being closer to the operating system. I for one like control over what I am doing. I like tinkering at the low level and knowing exactly what each piece does. The problem with this approach is that coding takes way too much time.
Another big reason for rolling your own code is stability. I was surprised that the company didn’t furnish me this reason. They obviously haven’t been in the shareware space that long or have just been lucky. For years my father would tell me that he would purposely buy a car with manual windows and a manual transmission. Why? He said that the extra stuff was just more things that could fail. He also said that what happens if the power fails and you want to open a window. Well, the same argument holds for software. I’ve seen my software crash out in the field. A lot of the time the end culprit was a bug in somebody else’s component. I’ve even seen Microsoft’s code (API, Foundation Classes, etc.) fail. The bug may be theirs, but the customer complaint comes to me. Rolling your own code tends to be the safest way to go.
This last argument is a bit weak, especially if you pick your components properly and put them through a rigorous test. Looking at various factors, such as developer feedback, length in business, and version number also helps. Unless you code well, the odds of eliminating bugs might go up, not down. After all, a developer of a component specializes in their component.
Benefits of Visual Basic
I talked a lot about Visual Basic in the last section, but I’ll state what I think are its strengths here. Before getting started, let me restate that when I think of Visual Basic, I am referring to Microsoft Visual Basic v6.0 (VB6) and the couple of competitors that Microsoft has in this arena, not that Microsoft competes in it anymore. I refer to the newest version of VB as VB.Net, which ships with Microsoft Visual Studio 2005.
VB6 offers RAD (Rapid Application Development), a plethora of third party ActiveX components, small footprint, and stability on the “VB framework” on various platforms. VB6 also offers presence on various platforms, simplicity, and an unbeatable price.
Before going into details on what I just mentioned, let me talk about a common negative most often sited to me, when the subject of VB6 comes up, namely that of the “old look and feel”. VB6 does have an old tired look about it. I doubt that there is anyone who will argue that point. The question rather is whether you have to accept that old look. The answer is no. There are companies out there that sell components that skin VB6 applications. You can purchase more modern components, so rather than using a VB6 button, you can use one from a third party. Microsoft created their development environment in such a way that I suspect that almost everything can be replaced and/or updated.
To be fair C#, Delphi , and VB.Net offer just as nice a RAD environment than VB6. Working with VS05/C# at work I can get pretty spoiled, but then going home and working with VB6 is not that bad either.
VB6 still holds the edge with quantity and price, when it comes to third party components. I would venture to say that only in the last couple of months have venders really started to come out with .Net compliant versions of their component wares. The problem is that these components tend to be more expensive, considered a new product or an expensive upgrade, and also might suffer from the version 1.0 affliction, namely being new and therefore buggy.
By the time Microsoft Windows Vista and Microsoft Windows Vienna (follow-on product to the forthcoming Windows Vista Upgrade), Microsoft will have worked out the kinks with the .Net Framework, but for now installing this behemoth on user’s system is a real pain. I know this from personal experience. My first indoctrination came, when I found out the hard way that you cannot install a new version of the .Net Framework over a beta copy. Upgrading the .Net Framework can cause the older one to not work. The size of the .Net distributable is impressive and does not lend itself to distribution, unless you assume that everyone has an Internet connection using fiber optic cable and a 3.4 GHz based computer.
Although you may still want to distribute the VB6 runtime files, most computers in use today already have them installed. In time the .Net Framework v2.0 will be this way, but not now. VB6 based applications run identically on Microsoft Windows 95 all the way to Windows Vista. I haven’t heard of any test on Windows Vienna, but I assume it will work fine on that too.
C++ vs. C# vs. VB.Net
C# and VB.Net are Microsoft’s RAD offerings. Microsoft still offers C++. It’s a great way to learn the intricacies of COM. In order to appreciate C# and VB, developers should code for COM using C++. I got my first experience in this area over a year ago, when I had to code ADO.Net on C++. In many ways C# users are even more shielded from COM than VB users.
C++ offers a lower layer interface, pointers, and the ability convenience and familiarity of C++. Unless you abandon the .Net Framework and roll your own application, then I don’t see much point in sticking with C++. If you’re going to pay for .Net Framework, you might as well make use of it.
C++ and MFC are truly cumbersome for GUI development and torture for using COM. Accessing SQL databases using C++ is a nightmare, especially when compared to VB6. C# does such a good job of abstracting the underlying COM layer that anybody who went to VB so as to avoid C++ and its headaches may want to look at C#. I’d venture to say that ADO is simpler under C# than VB6, if that is even possible. I like the Data Adapter class. That eliminates a world of code. C# adds flexibility not present with VB6. I guess that is obvious, as C# is newer than VB6. BTW, when I’m talking of C# here I’m including VB.Net.
Microsoft .Net v2.0
Thanks to the new version of Microsoft Visual Studio, there are now only minor differences between Visual Basic and C (C#). Both languages are RAD based and fully utilize the v2.0 of the .Net Framework. The integration is so compelling and the feature set so rich that once you use the environment and its rich debugging facilities it is hard to go back to any previous version, even Visual Studio 2003. VS05 offers with the product enhancements that are not just window dressing but an entire Las Vegas style buffet.
Many component developers seem to be coding for the .Net Framework and VS2005, so the availability won’t be a problem, assuming that money to upgrade won’t be an issue. Upgrading VS is one thing, but upgrading all the components is another story.
Distribution of .Net Framework
VS05 adds ease of creating web, windows, and console applications with ease and all from one product in a Rapid Application Development Environment, which makes the product well suited for application development. After all its new, has the latest innovations in virtually everything, and has bugs from previous versions fixed. The product also has the virtue of support from the manufacturer. Unfortunately for shareware authors, we have to distribute and install the .Net Framework. Microsoft currently ships no operating system with the .Net Framework installed. Users that have the .Net framework installed have one of several different versions and not all of them can coexist with the newer ones. Microsoft promised that Microsoft Windows Vista will incorporate the .Net Framework (v2.0 or a later version I presume) as part of the operating system. When that operating saturates the market, then we can dispense with distributing the .Net framework and start using these new tools. Of course, you can separate out the .Net Framework and make that a separate install, but most people don’t want a complicated install. Users don’t like to read. They like complicated or convoluted installs even less.
One story sticks to mind. I released my first product, SI-Metric Kids, and had talked a local business into installing and testing the program. Yeah, for me! They downloaded the program and summarily ran into a problem. Some of their software stopped working. The culprit turned out that they had an older version of the .Net Framework installed than what I installed. The other application refused to work until I backed out my software. Fortunately for me I used InstallShield and no harm was done, except for my time and a lost customer. Also fortunate was that I was able to make a house call. I loathe to think what would have happened if I couldn’t go over and visually see the problem. This incident prompted me to rewrite the product and use VB6. I swore then that as a result that I would not even touch .Net Framework until Microsoft shipped the framework as part of the PC and that operating system gained penetration into the marketplace.
Another issue is that VB6 and its classes are stable regardless of whether you use Microsoft’s tool or one from another vendor. Compare that to the new and evolving .Net Framework, which Microsoft changed from v1.X to v2.0. Some parts require almost a total re-write. I found out about that the hard way. I ran into this problem head on, when I started perusing sample code developed for the previous version and couldn’t even find the replacement. I spent quite a bit of time relearning the classes. Working with some of the form controls dynamically was some of the roughest. If Microsoft changed .Net v2.0 so much from the previous version, you might take pause at what v3.0 will force developers to do. Shareware authors don’t have time to continuously redo development and upgrade their customers. It’s fine if you work for a large company and develop tools for internal use, but it’s not fine for external software distribution.
As a small business and one-person shop, I don’t have the luxury or time to spend with countless hours recoding and dealing with the .Net Framework. I have to worry about adding new features, doing the sales and marketing, maintaining the website, making deals, and providing customer support. That means that there still are only two viable products, Delphi and VB6. One of these days I’d like to play with Power Basic and the other big VB6 compiler firm.
The future of C++ and the Win32/64 SDK
The C/C++ language with direct access to the Windows SDK will continue well into the future. Not everybody wants a full layer foundation classes and not all applications will benefit from them, as my example of the game company earlier demonstrates. Even as Microsoft migrates the underlying implementation of the operating system to a class framework, Microsoft said that they will continue to produce a standard API library to access operating system capabilities.
The future of VB6
I’ve been surprised at the viability on VB6. I don’t think that Microsoft ever intended this particular version to last as long as it has, but then their abandonment of this special language has led to a small cottage industry. Developers who choose VB6 should know that Microsoft will support the VB6 language until March 2008. It remains to be seen if one of them will rise up and become the next Borland. My guess is that as the .Net Framework becomes standard and takes hold of the operating system and more and more developers start coding for it that we’ll see VB6 start to fade away. Then again, Delphi remains strong and healthy in spite of its foretold doom, so who knows?
Microsoft .Net requires a much higher skill level than does VB6 or Delphi . The learning curve is much steeper, but the payoff for corporate projects and more complicated projects will be higher. VB6 and Delphi are much simpler, more foolproof, and better known.
Return on Investment
This question is hard to judge. Much depends on how much you already have, whether you will develop for corporate needs or your own shareware, and how you will address the bandwidth requirement for the .Net Framework.
This topic is a hard one to answer, but each has its unique strengths. The VS05 has a much nicer debugging interface, but gets bogged down by complicated frameworks and extra overhead. The VB6 interface is much simpler and easier to understand.
I guess both platforms are becoming as extensible as control developers cater to both the .Net Framework and ActiveX controls. About a year ago, I would have said that VB6 had the advantage. One company, PerfectionBytes.com, which markets an email control, solved the problem by bundling their email client for a nominal increase ($40) over the single platform cost.
Microsoft finally took the web seriously with the release of Microsoft Visual Studio 2003 and subsequently Visual Studio 2005 offering an environment for software developers to develop web based “applications” using a similar look and feel to that of developing a Windows based application.
Microsoft offers a GUI based RAD environment using their language of choice, C#, to create web based projects. Microsoft extended their component / control interface to web based developers, which is why you see so many third party controls. You will see the distinction going by “for Web Forms” or “for Win Forms”. An example would be Far Point Technologies (fpoint.com), which creates a spreadsheet control for both web and windows forms.
The obvious benefits for using Microsoft Visual Studio 2005 for web development is an increased control over web at the software level. You can easily tie into a SQL Server backend and do a host of things not possible otherwise.
Of course, you are using a Microsoft solution for a Microsoft world, namely IE. Is Microsoft the only game in town? The simple answer is no. I got introduced to an open source solution called Mambo Server (MamboServer.com).
Mambo bases its solution using PHP. Mambo is great for content developers and websites, where you don’t want to create a Windows application but do want content management, user logins, and many other web related tasks.
I’m currently using Mambo to create my JobFish.com sister site and I can tell you that I really love the product. It’s quite innovative and the possibilities are endless. For those taking a look at Mambo, OS Commerce ( oscommerce.com) provides the ecommerce add-on solution to Mambo. The best part of the product is that it is free, flexible, and has quite a few people developing third party add-ons for the platform. I’m reminded of the distinction between Mozilla Firefox and Internet Explorer in the browser wars. One browser is not better than the other. Unlike IE, there are many add-ons for VS2005.
VB6 does offer a cruder web development facility, but one nevertheless. If you want to create a DHTML web application or DHTML web object that can tie into a database, then VB6 is perfect. I had a project come on my desk recently, which calls for creating a DHTML web object that can tie into a database. I looked at the various options available to me and to my great surprise and astonishment, VB6 fit the bill nicely. I already started down that road. I’ve always used VB6 for Windows development and reporting, but never for creating DHTML web objects that I can include in ordinary websites. VB6 offers simplicity and the knowledge that virtually every browser supports DHTML. That definitely for many simple fairing websites makes VB6 a viable alternative. Of course, you won’t get all the nice new bells and whistles, but hey, it gets the job done.
Delphi does not to my best knowledge provide any solution for creating a web application, so Delphi users will have to look elsewhere. I should also mention Adobe Go Live. Prior to Adobe purchasing Macromedia, Adobe also had a great showing in web development. There products are to this day popular on the Macintosh, which is one of the reasons Adobe purchased Macromedia and not Macromedia purchased Adobe. Think about that.
Lastly, there are other web solutions out there, Adobe DreamWeaver to name just one. I use DreamWeaver all the time. It’s a bit pricey but unsurpassed in what it does.
Microsoft Visual Studio 2005 (VS05) is not Microsoft’s first foray into mobile device development. Microsoft has had a GUI based IDE going back to the year 2000 with its “Microsoft Embedded Visual C++” product. I used that product back then to create applications and drivers for products that embedded Microsoft WinCE v3.1. ActiveSync provided the magical connection back then as well as now.
The difference in VS05 is that Microsoft combined their old product into an all in one solution, not unlike Macrovision InstallShield Professional v11.5 for Windows, which combines previously separate products into one. With the new version you get all the new enhancements, an improved debugging environment, and the simplicity of using one IDE and one product. There is something to be said for that. Needless to say, Microsoft created an embedded platform to create solutions using its operating systems and browsers.
So that brings me back to which direction is best? VB6 and Delphi offer small distributable file sizes, compatibility to virtually every computer on the market, support for all versions of Windows from Windows 95 forward, cheaper entry for both the product and components, and shorter learning curve. Disadvantages are that the products are very quickly aging, not used in the industry, worse features and debugging is a bit harder.
Delphi offers a slightly different look and feel, excellent object inclusion, and a huge and dedicated user base. Several popular shareware programs used by ASP members were developed using Delphi . A note for Delphi users that adding in a security wrapper is a bit trickier on Delphi than on an application developed using a Microsoft language.
Having coded now with C#, I’d have a hard time talking myself into using VB6 for another major product, but then I do like that I have all the COM objects, libraries, and don’t have to worry about the .Net Framework, which will take several years before it hits everyone’s desktop. Also, .Net is still suffering 1.0 blues. It’s new and changing. Certain aspects, such as working with stored SQL 2005 procedures, are still rough and will add a few gray hairs.
On the other hand, if you want to improve your marketability as a programmer to other companies than coding for .Net makes sense as this platform is the current rage.
Let me address cost again. Obtaining Microsoft Visual Studio 2005 Professional is relatively cheap. The cost comes into play with controls that you add in, such an email control (PBEmail), GUI controls, or various types of other controls. You need all new ActiveX controls targeted for the platform. If you want the Windows XP look and feel on other platforms besides Windows XP, you will need new controls for even those that Microsoft integrates. Most vendors have really priced .Net compliant controls for the not faint hearted.
What I would like is another competitor to compete with Microsoft by starting with VB6 and then updating the product to include new features. I could imagine that the product would be able to open up VB6 projects and build them cleanly, thereby providing an easy upgrade path. At that point the developer could then learn and implement the new toys. I won’t even comment on Borland with its every few years ditching of Delphi and its languages. Do you all remember Imprise?
Creating shareware requires spending as more time marketing and providing support than spending time coding. Coding becomes a small component, as many of you will realize. That is why choosing a development language is so very important. Life as a shareware author is hard enough.
In summary let me say the following:
Microsoft’s .Net architecture was designed to be very flexible with easy integration of various languages and platforms. VS05 wins hands down, when developing for mobile devices based on a Microsoft solution. Web development the answer becomes a bit murkier, as much depends on what you want to do and the direction that you want to go in and what you want your website to do.
Just shy of two years ago I made a conscious decision to abandon the .Net Framework and go with VB6. I probably should have looked at Delphi more, but I didn’t. I was curious about VB6 and wanted to really give that a spin. Besides, I was thinking of Pascal as old and tired, which was a bit harsh. In those days components were scarce and the Framework for the most part was in beta. The decision by a developer today or any new product that I create is not that simple. Windows Vista will go a long way to standardizing on a .Net Framework version. Components are getting common and stable. PerfectionBytes.com developer Pablo Barvo told me a couple weeks ago that his new version of his email component is now .Net compliant even in the ActiveX version. I upgraded JobFish to his new version and can see that he is right. There’s at least one area, where I won’t have upgrade hassles, when and if I finally port JobFish to .Net.
My recommendation to you is to make a list of what you want. Create two columns and write down the pros and cons and then decide. Do your due diligence.
Let me know your thoughts and which you think is best. In the end, there may be no one right answer, which funnily enough is what I first told my friend.
I’d like to acknowledge my good friend and fellow ASP member Friedrich Steinkuhl for his help in getting this article published.
Sarah M. Weinberger
Sarah M. Weinberger is a Board Member of the Association of Shareware Professionals and the CEO at Butterflyvista Corporation and is the creator of Jobfish, the professional tool for the serious job seeker. She spends her day performing software development and marketing related tasks. You can reach her at the contact form on the site.
Published originally in March 2006 in the Association of Shareware Professionals publication.
Sarah M. Weinberger is the CEO at Butterflyvista Corporation and is the creator of Jobfish, the professional tool for the serious job seeker. She spends her day performing software development and marketing related tasks. She is also politically active and is the founder of Progressives Leading.