So how should one go about choosing the correct tool for their project (programming language, runtime, etc...). When creating my product, these are the things I considered:
- My familiarity with the language
- Will it run on Windows?
- Availability of components, librarys and online help.
- Is a runtime necessary and how many people have it?
- Most flexible
Things I did NOT consider:
- Is the language "manly" enough
- Is the language popular
Software development is perhaps the one industry where using the tool that is easiest is looked down upon. I have heard time and time again people using C# over Visual Basic .NET, because its "more techy" or "not as embarassing". I've heard similar arguments about using LISP over perl, or C++ over Java. People that use the "easiest" tool often get mocked and get into holy wars with other developers. Can you imagine a similar argument in any other profession? "Dude, you use an jackhammer? Everyone knows REAL construction people use thier bare hands". Maybe you see where i'm going with this. Yes, this program was largely written in Visual Basic .NET. I'm proud to say it, because even though I know and use C#, Java, perl, and C++, I can develop 100 times faster in VB .NET.
Your end user has no idea what you created your program in. Even if you use something more exotic on the windows platform like perl or java, 98% of people will not know. Currently on the web there is an "Ajax revolution", where everyone is trying to integrate AJAX into their app. Go show that to some non-techy sometime... you know what they'll say? "I've seen things that are much cooler then this like 5 years ago, flash something or other".
So what finally led me to develop this in VB .NET? (it's also maybe 20% C#) #1 reason was familiarity and speed. Before discovering .NET, I had written all my windows apps in C++. It took me about two weeks to write a snazy Blackjack program in C++ a few years ago. How long would that same program take in C#? Probably about 4 hours. Visual Basic .NET? 3 hours. While it took quite a lot to get used to Visual Basic being so "friendly" (it still feels dirty not putting semi colons after each line), in the end, it plays much nicer with the IDE then C#.
Now, a lot of people will take their decision for a programming language and deride what anyone else does. I will not. If you can develop apps faster and better in Java or Perl go for it. The only time I believe actual language matters is when writing something Open Source. If you use a popular language you're more likely to get more people working on it. Otherwise, it does not matter.
One thing that is a major negative of "easier" languages is the runtime required. This is a big concern to any .NET developers. From my own completely unscientific research approximately 70% of Windows users have some version of .NET installed. Perhaps 50% have JRE installed, and maybe 2% have ActivePerl installed. This gives non-runtime languages like VB6 and C++ a huge advantage. No large runtime to install. If you are offering a program that is only distrubuted over the web (say a solitare program), C++ or VB6 is probably a good bet, because people won't want to download a 25MB runtime to run your 600KB program. The plan for SearTech though is to distribute our app 99% of the time by physical CD. This may seem old school, but one of the things we are stressing is a high value, personal relationship with the customer. We don't plan on selling more then 10-20 copies our first year, so every one will matter. A huge impersonal download goes against our current thinking. Giving a CD means we also don't really need to worry about the runtimes. Getting a .NET program to run on a fresh install of Windows 98 requires quite a lot of extra things. They all fit nicely on one CD.