views:

1303

answers:

18

For the sake of the question, by 'shareware' I mean a software which is relatively small in size (up to few dozens of mb) and available for download and evaluation through a web site.

I'm asking this question, because I don't understand something regarding the current state of windows commercial desktop development. It seems to me that:

  1. There is no reliable statistic regarding the extent of windows systems with .Net Framework installed.

  2. It makes no sense to force the end user to install the 20-60mb .Net for an application which may be smaller.

  3. Applications conforms to the term 'shareware' above have a big share on the win os market. Much of them don't need the capabilities of low level languages like c++, and therefore ideally they should be developed with a RAD environment.

So, One would suppose there will be a blossom of RAD environments for native win code. But I know about only one - Delphi, and Delphi is so unpopular.

How is that?

A: 

1: no, except "all modern ones". it is quite widely used starting with Vista.... like "as part of windows". Quite a lot of software uses it by now.

2: Except that it speeds YOU upas develoepr by a factor of X (x > 2). It is a recommended update from Windows anyway so it should be on all computers. And your time has value, too.

3: häh? Seriously? what low level capabilities would that be? What typical shareware would that be? Note that .NET has a LOT of capabilities to call into the native stack... and a lot of very good capabilities without that.

To answer the end:

  • Because your assumptions are wrong. Simple.
TomTom
1) There are a lot of Windows XP machines still around, your safer with Delphi than .Net if you want to run your software on Windows XP and higher. 2) .Net has indeed a large library available, but compared to what is the speedup 2X, can you elaborate? 3) Read the post again, the poster says shareware doesn't need low level functions. Seriously.
The_Fox
.NET is a garbage collected langauge designed for programming efficiency. It is the logical successor of Delphi with C# (as in: the person designing delphi is responsible for .NET / C# - Anders Hejlsberg). it is definitely about 10 times more efficient than C++ for most tasks.
TomTom
@The_Fox - I had to rebuild an XP machine recently starting with the SP2 base installer and then a complete SP3 patch. Several cycles of Windows Update later and I had .NET 3.5 on my machine and that was without installing any applications.
ChrisF
Anders joined MS to work on Java. .NET is the successor of Java, not Delphi.
gbjbaanb
@ChrisF: True, but when you are developing some application and you want to distribute this to the majority of Windows users, are you going to rely on an installation of .NET? Sure you can, but don't be surprised when there are users that haven't installed a .NET runtime. What I am saying is that you are safer using Delphi, than using .NET or another VM-needing language. Don't expect John Doe to install a .NET runtime just to run your little application.
The_Fox
@fbjbaanb: I would say clone of Java, not successor
Marco van de Voort
It is a successor. I was doing Java when .NET came out, and laungauge wise, .NET is a lot better than java. It is truly a successor style - MS started with something very close in concept to the Java specs back there and cleaned it up with a lot of good things (like: real properties, for example).
TomTom
+2  A: 

use .Net - this reduces your time to market. native languages like c/c++ can be used for system programming, where every ms counts :-)

henchman
One of the reasons that Delphi is still popular is that it offers both.
Bruce McGee
can delphi be run on mac os and linux, too?
henchman
@henchman - Not yet, but Delphi for the Mac and Linux are in the works right now.
Bruce McGee
The Delphi IDE doesn't run on the mentioned platforms (neither does Visual Studio), but Delphi is almost 100% source-compatible with FPC. That makes it pretty easy to do cross platform development. It compiles for the following processors: Intel x86, Amd64/x86_64, PowerPC, PowerPC64, Sparc, ARM, and the following operating systems: Linux, FreeBSD, Haiku, Mac OS X/Darwin, DOS, Win32, Win64, WinCE, OS/2, Netware (libc and classic) and MorphOS.
Wouter van Nifterick
+4  A: 

Windows XP SP3 comes with .net 2.0. So you can target that without excluding too much potential users.

jdv
+2  A: 

Scott Hanselman gives a figure of "over 65% of PCs have .NET 3.5 SP1 installed". Don't know the source of this figure though.

Ben Lings
65% means that 35% does NOT have it installed and they might possibly give you a support call when they are unable to install your software. if you sell the software to 10000 customers and only 1% has trouble installing the .NET platform this means 10000*35%*1%=35 support calls only for that. With trouble installing I also mean customers who are simply very technophobiac. With low prices this means that each support call nullifies several sales and hence it is a big issue.
Ritsaert Hornstra
+3  A: 

I'd target the .NET environment since, as mentioned, it is more and more becoming an integrated part of Windows. And even though it might need a download once most people find it useful.

Paint.NET is a successful shareware that targets the .NET platform. Balsamiq Mockups is another very successful licensed software that uses yet another platform, Adobe Air. So I wouldn't view the platform download requirement a showstopper.

Niklas Winde
+3  A: 

Also take a look at ClickOnce that should make the .NET installation and the installation of your application a lot easier for the user.

They would still have to download the framework if they don't have it but it will happen automatically.

TimothyP
+34  A: 

I would use Delphi. Tools and people make programs, not opinions. Why? Simply because it is perfectly suited.

Aside from the runtime download issue, for shareware there is the constant changing .NET framework to deal with, and to be honest I don't think Winforms is that great. (or is WPF nowadays, make up your mind Microsoft?)

ASP.NET is absolutely great, but for desktop apps I don't think .NET is such a great improvement over Delphi.

Marco van de Voort
You might be right, but the problem of dealing with a changing .NET Framework is nonexistent. I have never seen MS break compatibility on that.
Slavo
I remember making quite some changes going from 1.0/1.1->2.0
Marco van de Voort
1.1 -> 2.0 had breaking changes, especially in ASP.Net. Microsoft has been better at making sure new versions of the framework since then don't break old applications.However, if you want to use any new .Net features, users need to have at least that version installed.
Bruce McGee
@Marco, For desktop applications I'd agree that Delphi is currently a better choice thanks to ongoing support from the vendor. Windows Forms has been neglected by Microsoft in recent years in favor of WPF, but WPF still has some rough edges and is not applicable to all desktop applications. Having said that you can still build pretty much anything in WinForms if you are willing to delve into GDI, COM, unsafe code (ie pointers) etc
Ash
Probably. But that is exactly what I meant: "possible with dependancies to worry about" vs "perfectly suited without dependancies", those are two different things.
Marco van de Voort
(moreover WPF has a GUI designer - programmer separation as paradigm that doesn't match most shareware and small companies)
Marco van de Voort
+7  A: 

The only reasons I see why Delphi is not as popular today as .Net:

  1. Embarcadero spend MUCH less money on advertisement than Microsoft
  2. Delphi already is not so new and fancy

If this reasons does not matter for you, than you can freely use Delphi or C++ Builder.

Torbins
Delphi costs $900 in US and 1000+ EUR in EU. VS is about $200 and you can even get it for free if you're a microisv. I would say these factors add much more to the "unpopularity" of Delphi than the lack of advertisement from Embarcadero.
Amati
1. Embarcadero doesn't have Office and Win itself to pay for advertising of products; while MS does. (That's why MS can charge so little for VS; it's not the major $$ stream, and it means more apps rely on Windows, which means more sales of Windows.) 2. Delphi is new and fancy enough. It supported Windows Vista before any MS development tools did, and supports touch and gestures better than MS products. (MS products depend on Win7's gesture/touch support, while them on XP and Vista as well.) Since Delphi supports Windows better than MS tools, you can't say it's "not so new and fancy", can you?
Ken White
3. Embarcadero has to gain back the ground that Borland lost by neglecting Delphi for years.
Bruce McGee
Ken, yes, I know why Delphi is expensive but that doesn't change the fact.
Amati
Visual Studio 2010 won't be available in a Standard edition. The cheapest one other than the free Express edition will cost $799, or $549 for the upgrade. Delphi 2010 Professional is $899 new or $399 for the upgrade (USA online price). If you can't make a $899 investment to start your business then you need a new business plan.
Jan Goyvaerts
+17  A: 

So, One would suppose there will be a blossom of RAD enviroments for native win code. But I know about only one - Delphi, and Delphi is so unpopular.

If I read this, I would say, you've already made up your mind.

Both environments (.Net 3.5 and Delphi) have their own advantages and disadvantages. In our shop we use both platforms; the Delphi platform is used for software that needs to run on tens of thousands of machines we're we sell the software for only a few bucks / instance. We do this to avoid support calls. (a single Delphi executable with everything inside and only dependencies to system dll's is really really stable). This saves us quite some money.

.NET 3.5 is usually chosen (with the c# language) when interoperability with Microsoft software is needed.

What we see is that developers that know both tend to prefer Delphi for new projects. Developers that only know one of the two environments tend to prefer their own environment.

I think both platforms will exist in another 5 years. Delphi is a bit more stable (fewer latest and greatest API's introduced) and .NET a bit more experimental. In the end both platforms perform well, there is enough sourcecode and expertise out there (in The Netherlands where I live you can get developers easy enough).

Ritsaert Hornstra
I am one of those developers who uses both extensively and prefer Delphi for new development. ASP.Net is the only automatic exception. I disagree about the number of new APIs introduced. Delphi and the VCL are certainly more mature, but the latest releases introduced specific support for Vista and Windows 7 that are not yet available in Winforms.
Bruce McGee
@Bruce: I am not saying Delphi is backwards (I also prefer Delphi for non web development). But was more referring to the fact that Delphi code tend to stay the same for years to come. Microsoft defines new API's for almost every new iteration of the framework (WinForms -> WPF). If you build your own libraries in Delphi and .NET they tend to keep their value longer with Delphi. in short: I think we agree, I might just have been a rude dutch guy.
Ritsaert Hornstra
Yes, I think we agree, too.
Bruce McGee
I rely heavily on Delphi's incredible backward compatibility, and I find Microsoft's own intransigence, and technological waffling to be a reason why I shouldn't run out and get on board with whatever new think Microsoft is hyping this year.
Warren P
+1  A: 

If you compare PC share in market, it's way high. I love using Linux and with "mono" in Linux it is possible to use .net applications in Linux. .net 2.0 is the core framework and you can certainly target that as the base requirement. Microsoft has always developed products which has backward compatibility.

Yes, a good example is Paint.NET, they have changed with .net framework. Earlier the requirement was .net 2.0 now you need .net 3.5 and the features have improved as well.

Vivek
+24  A: 

Look at my answer to this SO question, and you'll see that Delphi is the tool of choice in many cases (so not really unpopular).

As Nick Bradbury explains it very clearly in "Why I use Delphi".

François
+4  A: 

Delphi is not a bad choice but unless your software is strictly Windows-oriented, I'd suggest exploring QT as well: http://qt.nokia.com/products You can make your software cross-platform and sell to Mac people as well.

Also, since you mentioned the "low-level language C++", keep in mind that pascal isn't that high in the language hierarchy either :) It's the VCL library and the Delphi IDE that make the RAD environment. So, you shouldn't be comparing C++ to Delphi or .NET, you should be comparing C++ Builder vs Delphi vs QT vs Visual Studio.

Amati
Apparently, the next Delphi version will also target Mac (possibly also Linux)
PhiS
@PhiS but will Delphi 2011 provide a native user interface builder for Mac?
mjustin
@mjustin -- that is something that currently only Embarcadero can answer
PhiS
QT is not a free lunch, for cross platform. I have read as much, or maybe more, complaints from people with established stable C++ QT apps as I have read praise of QT in recent years.
Warren P
+26  A: 

Unless there is a specific reason to do otherwise, I always use native code (specifically Delphi) for client side development. Reasons include, but are not limited to:

  • Faster start up time (no jitting or .Net startup time). This is especially visible when running client applications.

  • Lower memory usage. Apparent in an empty application, and even more so in something more functional.

  • Better UI performance (VCL vs Winforms) and specific support for Vista/Windows 7 themes and APIs and even support for gestures in Windows 7, if you like that sort of thing.

  • Does not require an additional framework. This is the biggie. The actual requirements for version 2.0 and 3.5 the .Net framework are higher than the 20-60 MB that you suggest. And, unless you limit your applications to features available in an earlier version of the framework, users will need to make sure they have the latest one installed. Even Vista and Windows 7 won't have .Net 4.0 installed by default, which is due out shortly. I prefer having the option to do an XCopy install with few if any dependencies.

  • The "time to market" argument applies equally well here. Delphi has an extremely productive development environment, from the productivity tools in the IDE to a blindingly fast compiler. This, along with the lack of deployment dependencies makes the development/test/release cycle very smooth.

  • You might be surprised how many other developers are using Delphi for exactly the same thing. Here is an incomplete, but impressive list. Embarcadero is featuring some of these in a slightly flashier showcase.

  • Answering your third point - Delphi is a RAD environment that still lets you get at the low level details, even supporting inline assembler.

There are lots of other reasons why I prefer Delphi, but I'm limiting my list to things that I think are relevant to the question.

I'm not intending to bash .Net. I like C# and Visual Studio is a great IDE in its own right with lots of productivity tools. I just think that .Net is better for server side (e.g. ASP.Net) and long running applications where startup times and jitting are less of an issue and it's easier to manage the .Net installs on a few servers than on each and every client PC.

And, if someone wanted to use .Net but craves the Delphi (Object Pascal) language, there is always Delphi Prism, which is included as part of RAD Studio.

Update:

The first line of my response makes it sound like I only prefer Delphi for client applications. It's actually my first choice for all development, with the exception of ASP.Net, which can also be a good excuse to use Delphi Prism.

Update2:

Some more details on the hardware requirements now that .Net 4.0 has been released. The minimum disk space requirements seem a little steep:

.Net 2.0 - x86: 280MB x64: 610MB
.Net 3.5 - x86: 280MB x64: 610MB
.Net 4.0 client- x86: 600MB x64: 1.5GB
.Net 4.0 - x86: 850MB x64: 2GB
Bruce McGee
I worked it out that going to 3.5 with SPs from a clean XP machine was roughly a 500Mb download.
gbjbaanb
Your "biggie" misses the point. The .NET Framework Class Library is a huge set of classes that provide well-tested functionality that you would otherwise need to build yourself. When you combine this with the services provided by the CLR, you can spend more time building functionality that people actually want than focusing on lower level details. Of course it is also trivial to dip into the WinAPI and non-managed code when required. Best of both worlds.
Ash
@Ash - My point is that the .Net framework is a significant (check the links) additional requirement for users above and beyond your application. You can't guarantee what version is installed on client PCs, or if it's installed at all. Delphi, for example, has its own rich and well tested functionality (the VCL) that doesn't require users to have an additional framework installed beyond Windows (XCopy install).
Bruce McGee
@Bruce McGee: You know what, your thorough list has convinced me too, a hardened .NET developer. Although personally I won't be switching away from .NET I have to admit your list is objectively quite correct. ... Damn you Bruce McGee! You haven't seen the last of me... I'll be back!
John K
John K
@jdk - Happy to help. I like having more than one set of tools in my toolbox. It gives me more options.
Bruce McGee
@Bruce, my point is that the benefits of the framework regularly outweigh the negatives of requiring a user to have the framework installed. As Jan Goyvaerts says, if your application is actually good enough, users will not care if they need to download a framework or not.
Ash
@Ash, What benefits are you thinking of specifically? Presumably they are unique to the .Net framework. There are probably .Net applications that are so compelling and unique that users will install .Net on each and every PC without any question. If they're that highly recommended, I'd certainly take a look at them.
Bruce McGee
@Bruce, I could give you a list of the benefits, but they are so amazingly wonderful and unique to the .NET framework that the mere reading of them would blow your mind! All non .NET code you've written in the past would seem utterly futile and pointless (so much wasted time!). Your mental health is far more important to me than merely winning a discussion in these comments, so I'll leave it as an exercise for you to gradually learn to appreciate the infinite beauty that is the .NET framework. It won't happen overnight, but it will happen!
Ash
@ash - Better not risk it, then.
Bruce McGee
@ash: it must be great to only have users that think your app is the center of their world :-)
Marco van de Voort
@Bruce, the very first sentence in your answer proves that you're no different to the millions of Microsoft fan boys that I've had the "pleasure" of working with over the years. Your attempt at balance is laughable and your largely unsubstantiated points just exacerbate the stupidity. Having Delphi as a viable alternative to .NET is critical for ongoing innovation/competition, I just get so sick of this blinkered "mine is always better" BS. Human nature I guess.
Ash
@Ash: If I use more than one tool (and I do), which one is "mine"? You could always post your apparently dangerous list of .Net benefits.
Bruce McGee
A: 

I would use a framework such as Qt or wxWidgets rather than the native API. I don't trust the .NET framework and developing requires the target platforms to be running the correct version of .NET.

Thomas Matthews
Really... you trust third party GUI APIs more then the vendors own frameworks... I guess that's one way to go.
Matthew Whited
+4  A: 

Speaking from pure experience, select whatever tool generates a resulting program which has the least external dependents. You want your program to run out of the box... not prompt to install another piece, or refuse to run until you make appropriate patches to work with a library which was changed and released when your attention was focused elsewhere.

If your targeting a large audience, keep your absolute requirements as minimal as possible. You might have 16gb of ram and a high end video card, but that doesn't mean that everyone does. A good test is to create a VM with the oldest OS you can find, with the minimum requirements for the OS...and seeing if you can install into it without any updates or an internet connection.

Keep in mind that those that can't run your software the first time are very unlikely to contact you and complain...they are more likely to give up and move on.

skamradt
+16  A: 

Developing and selling my own shareware, as you like to call it, has been my full-time occupation and only source of income for over a decade. I have been using Delphi all this time. Though things didn't look too bright during the final years of Borland, the new owners (Embarcadero) give me confidence in Delphi's future and I'm happy with the choice I made all those years ago.

I recommend that you get your advice from people who have been there, done that rather than asking "if you were", "would you" kind of questions. All successful shareware developers will tell you that:

  1. While choice of tooling is important, it isn't going to be what decides your success. If your app rocks people will download all 50 MB of it. Choose the tool that you are most productive with even if that tool is unpopular.
  2. What matters is whether you can release an application that does something useful or desirable without crashing too much.
  3. What matters even more is whether you can market that application. Worry about your business plan first. Where is your product's demand coming from and how are you going to reach those people? When you have a concept that you believe can make money, then you can choose the tool to implement it.
Jan Goyvaerts
+1 It's good to finally read an answer based on real world experience of creating software that people actually want to buy. Many of these other answers completely miss the point.
Ash
+2  A: 

Bottom-line, use the platform you are most productive in.

In my experience there is an enormous amount of FUD spread about .NET which seems to stem from dislike of Microsoft in general.

Get a real understanding of the pros and cons of .NET by reading some excellent books such as CLR Via C#, C# in Depth etc.

Ash
A: 

The nice thing about .NET is that the "is the framework installed?" problems are going away. All you have to do is wait!

.NET 2.0 is easy to target, is suitable for most applications, and is bundled with Vista and newer (and is a fast install on XP). And if 2.0 doesn't do what you need, the .NET 4.0 Client Profile is a vast improvement over the (admittedly terrible) .NET 3.5 install.

And with either an MSI or ClickOnce, you can just tell it to automatically detect the framework, and download and install your selected version if necessary. So the impact on that small minority of users without the framework is minimal.

Finally: the idea that .NET itself is slower to the degree a user might care about is ridiculous. Usually it's a problem with your own code (a common one is inefficiently parsing XML at startup).

Andrew Russell