Fog Creek Software
Discussion Board




Non .Net Language to use for new project

At the moment I am trying to decide what programming language to use for a little programming project aimed at corporate type users in a business setting. As this is a new thing I would like to make sure I don't end up making the codebase obsolete by choosing a tool that is a "dead end".

As Joel has pointed out before, the .Net framwork is a significant overhead and I am not sure how log it will take for .Net to be on every desktop in the corporate world (Most of mine are still NT4).

VB has turned into a dead end for non-.Net development due to the fact that it no longer is supported for non .Net apps in Visual Studio .Net. C++ can still be used but lacks some of the ease of developping GUI apps. Delphi is an option but which way is Borland going to go?

Any thoughs would be appreciated.

Florian Heine
Friday, December 13, 2002

C.

Z M
Friday, December 13, 2002

Borland is going toward .NET, however, Delphi 7 is a fantastic product for developing modern applications. You can make runtime-free applications (no ActiveX controls to install!), that support all the current buzzword technologies: SOAP, n-Tier, XP. :-)

Also, there are a lot of excellent add-on components (that also don't require installation at your end-user's site) that can make your app do amazing, amazing things.

You can't go wrong with Delphi. Itsupports both Win32 and Linux today, and will support .NET tomorrow.

Tim Sullivan
Friday, December 13, 2002

Have you considered making this a web app and still possibly using .net? 

(I know you mentioned non .net - but I figured I'd suggest it regardless)

This would only require you to install the .net framework on the server. 

As far as Delphi is concerned - if Borland decides to move it to .NET - it's  very likely that it will break compatibility with previous versions - just like with VB/VB.NET. 

GiorgioG
Friday, December 13, 2002

Delphi, no question.

Woodrow Stool
Friday, December 13, 2002

I respect your decision not to go the .NET route.  However, I'd hesitate to use the fact that customers don't have the CLR as a reason.

How long do you expect the product to be viable and supported?  Likely, most of the released life of the product will exist in the period after the CLR has become ubiquitious.

Also, the CLR is only 20 meg.  Sounds like a lot.  Really, it's just a couple minutes over a DSL connection.

Best of luck, whatever you choose!

Bill Carlson
Friday, December 13, 2002

GiorgioG  -- As far as Delphi is concerned, I would say it is extremely unlikely that the compatibility differences between Delphi Win32 and Delphi.Net will be anything like the incompatibilities between VB and VB.NET.

VB and VB.NET are essentially different languages with VB.NET retaining similar syntax.  VB didn't fully accommodate object oriented programming (e.g., no inheritance) and MS decided to change this by creating a new language: VB.NET

There is no need to make similar changes to Delphi to move it to .NET.    I'm sure there will be some incompatibilities between versions, but nothing like those in VB.  In fact, you can already program using Delphi in .NET (using the .NET preview compiler packaged with Delphi 7).

You can read more about it at:
http://bdn.borland.com/article/0,1410,28972,00.html , which also lists some (simple) things to avoid doing if you want code to be compatible across versions.

Herbert Sitz
Friday, December 13, 2002

Herbert,

Interesting - I haven't messed with Delphi at all since version 2.0...So all else being 'equal' - why go with Delphi instead of VS.NET?  (Just wondering)

Price wise - VS.NET Enterprise Edition comes in at $1799 (or just shop around for a MSDN subscription and it's even less) and Delphi Enterprise comes in at $3000...sounds like you're paying a big premium to program in Delphi/Pascal.  But that's my biased opinion - I really like the VS.NET IDE.

GiorgioG
Friday, December 13, 2002

I believe that VB is far from a dead-end. Even though the current iteration is basically an overhaul that is incompatible with previous versions, it isn't like classic VB just picked up and walked away. Writing your code in VB would give you the ability to quickly right your application and is ideal for small projects. Maybe in a few years when you are on version 3 or 4 you can make the port to .NET (don't kill me Joel) if you want.

While I am on the subject. The .NET overhead is not that great. In the end it is just a little worse than installing the JVM on someone's machine (because of GAC). You can even pick it up through Windows Update. Obviously, I don't know the situation at the firm you are working for/at. You may be faced with a situation where the IT managers don't want to upgrade the machines to .NET. This is common and understandable. But in this case right a program that uses VB. Use Delphi if you want as well. From what I have been reading in this thread it will probably have an easier time translating to .NET in the future. I haven't coded using Delphi, but I have coded in VB and I know that I can pump small apps really quickly.

Giampiero
Friday, December 13, 2002

I think you're right that Borland tools are generally a bit more expensive than MS alternatives.  (Surprising to some, I'd guess.)

I'd say one of the main reasons to choose Delphi is the concern the original poster in this thread has:  you may need to deploy to machines that don't have the CLR and aren't likely to be getting it soon.

Other reasons:

--- related:  Develop now for Win32 and (hopefully) an easy port to .NET a couple years down the road. 

--  You aren't tying yourself to MS.

-- Available 3rd party components for Delphi are easy to use (no activex install problems, they're compiled into your executable) and top-notch quality, both in product quality and quality of support.

--  Cross-platform not only to .NET, but also to Linux via Kylix.

-- Delphi program can be easily downloaded from internet via a dial-up connection, not practical if client also needs to download and install .NET CLR.

-- Others?  I'm sure I've left some out.

Herbert Sitz
Friday, December 13, 2002

I forgot to mention - nothing's stopping you from putting the .NET framework runtime in your installer/setup process on the client side.  I'm not really sure what your environment is - but either you're deploying via CD (20mb of runtime is nothing in this case), via a LAN/WAN - not really too big a deal unless your clients are on dialup/remote-access.  Just a thought...

GiorgioG
Friday, December 13, 2002

"All else being equal"

Well, all else isn't equal. Delphi produces smaller, faster, easier to maintain code than Visual Basic. There are no ActiveX controls to deploy, no runtimes, nothing (unless, of course, you want to deploy using packages or DLLs or whatever - the choice is yours).

Why is Delphi more expensive than Visual Studio.Net? Easy: Borland doesn't have an OS monopoly financing it with an 85% profit margin. It needs to generate money to stay in business, and does that by consistently providing tools that are better than any alternative.

Besides, you can get Delphi 7 Pro for, like, $450 or something. You don't NEED the Enterprise version to do most things. But if you want Bold, Rational Rose and some other, enterprise-level features, you can get Delphi Architect, which has them all.

Having said that, the cost of Delphi will be the smallest cost in your development process. You'll spend a LOT more on your wetware. :-)

Tim Sullivan
Friday, December 13, 2002

Without knowing anything about the app, it's difficult to make a recommendation.

Wait...no it's not....Python.

and wxPython for the gui stuff.

fool for python
Friday, December 13, 2002

Funny, no one has mentioned Java.

Crusty Admin
Friday, December 13, 2002

What is wrong with using C? Ultimately maintainable code because so many programmers know it, the API was designed for it, there are a dozen Windows compilers that can be used, you're not pinned to a vendor, etc.

OR -- give http://www.powerbasic.com/ a try if you're coming from VB. It makes tiny, fast, standalone exes.

Troy King
Friday, December 13, 2002

Any scripting tool like Perl or Python that offers a GUI tool, or PowerBasic :-)

Frederic Faure
Friday, December 13, 2002

Tim,

<<
Delphi produces smaller, faster, easier to maintain code than Visual Basic. There are no ActiveX controls to deploy, no runtimes, nothing (unless, of course, you want to deploy using packages or DLLs or whatever - the choice is yours).
>>

Just to clarify, I was asking about VS.NET vs Delphi, not VB vs. Delphi.

Faster?  Unless his apps are cpu intensive, this isn't an issue as .NET apps are not java-slow.

Smaller - sure.  But in a standard corporate environment, installing the .net framework is not a huge issue.


Easier to maintain?

A pig can easily make a mess in any environment.  Just as any half-decent & discipiled programmer can write elegant & maintanable code in any language.  Personally, I don't like VB/VB.NET.  I'm more of a fan of C++/C#/Java-like languages but claiming that Delphi code is more maintanable intrinsically - does not make sense to me.

As "fool for python" pointed out - it is very difficult to judge what is the best tool for this specific situation as we have no idea what type of applications are required. 

However, as this is quickly turning into my tool is bigger than your tool... I'm done talking about my tool ;-)

GiorgioG
Friday, December 13, 2002

GiorgioG - troll! ".NET is not Java slow". FUD! FUD! FUD!

I remember sitting in a Cold Fusion seminar and people being worried about Java's performance on the server side - oh please! Modern VMs like Hotspot run fast ( http://www.artima.com/designtechniques/hotspot.html , http://www.javaworld.com/javaworld/jw-08-2002/jw-0802-performance.html ).


Given that Crusty Admin asks why no one has mentioned Java.

If it's to be a web app Java is just as viable as .NET (+ flexibility to port to Linux, etc) and there is a a large Java developer community (+ it's taught in most CS programs) so a Java application will be supportable in the future.

If it's to be a desktop app (for Windows only clients) then Java is probably not a good option (see discussions about weaknesses of Swing - one thing... it's slow :) ).

If you don't want to go to .NET on the clients (these machines are running NT - they may be 3-4+ years old and not have enough resources to run either .NET or Java very happily client-side) then I think Delphi sounds like a very good option. Remember Delphi and .NET had the same architect ( http://c2.com/cgi-bin/wiki?AndersHejlsberg ) and share many of the same concepts. Delphi will become a .NET language and should be fairly easy to support in the future.

Walter Rumsby
Friday, December 13, 2002

Hey - I wasn't trolling.  Yes, java apps can be fast on a 1.4ghz machine (as mine is) but chances are if this guy's users are running NT 4.0, they're running 266-400mhz machines (and that's being optimistic.)  I did technical support a few years back with a java based chat support tool on a 400mhz.  It was ungoddly slow.  As were all other java based apps on pre-700mhz+ machines with less than 128mb of ram.

In my opinion it's not as responsive as a normal win32 app (or .net for that matter) which was my initial point.

GiorgioG
Friday, December 13, 2002

Ok, my previous post was just a response to the 'troll-FUD' accusation ;-)

As far as Java is concerned, in general I think it's a good platform for the server side.  Unless you're talking about Websphere ;-)  JBoss, Orion, et al may be better to that end.  My biggest gripe with Java is the crappy visual IDEs.  Websphere is so slow it's unusable IMO.  Netbeans, Eclipse etc still seem sluggish compared to VS/VS.NET.  I don't like IDEA's IDE (not sure why everybody gushes over it - especially with a $399-499 price tag.) 

If I'm not doing any UI work, then I'd just stick with Visual SlickEdit.  But my mainstay these days isn't middleware, so I'm usually working on something that requires a UI.

JBuilder may be an exception, but I tried for several days to get it to debug/deploy on a websphere server and never managed to get it running properly.  Without going on a tangent, this is one of the reasons I like microsoft dev products...generally, they work out of the box.

Please folks - I'm not trolling, these are my opinions and should only be taken as such.

GiorgioG
Friday, December 13, 2002

GiorgioG, I agree, IBM has a knack for turning out very resource hungry software (which I assume you are supposed to run on IBM hardware and pay IBM consultants to tweak for you - ie. "buy more memory... from us!") and VisualStudio is a very good product - a couple of years ago I was using Visual J++ and it's very nice.

These days I use IDEA which I find very intuitive (it uses a Swing interface, so no Alt+Space, etc - sorry Joel - although it does support VisualStudio keyboard mappings) and fairly responsive (my machine at work has < 200MB and IDEA certainly is more responsive than NetBeans or WebSphere). Some chap has a list of "25 Reasons I Love Using IDEA" - http://home.iprimus.com.au/trinexus/idea.html - for me it's mostly because it gets out of my way and lets me do my work (no wizards!), but then when I need it to help me out (eg. I move some source files around using Windows Explorer or I want to change a method's name) it does a really good job - ie. I don't have to clean up things it doesn't do properly because it seems to do everything properly.

In terms of the original question - if you're doing Java development use IDEA - it costs less than VS.NET Studio :). Delphi sounds realistic for a desktop solution.

Walter Rumsby
Friday, December 13, 2002

I can't imagine why anyone hasn't mentioned COBOL?

Another option would be M or [MUMPS] or [M]UMPS or [M][U][M][P][S]?  It comes with a built in obfuscator -- the editor!  (rimshot)

Fred Savage
Friday, December 13, 2002

Walter R.,

I just downloaded the latest & greatest version of IDEA trial version and to my dismay it's incredibly slow.  I have a 1.4ghz with 1.5gb of ram and a 250gb of hdd space +(running at 1600x1200x16bit).  A pretty hefty dev box at least by my standards anyway. 

Just as a test I created a little hello world project and closed IDEA.  I reloaded IDEA and timed the load till I could edit the code - 19 seconds.  Menus seem to take a bit over half a second to open.  That's my gripe with Java ;-)
And it's sad to say that this is probably 3-4 times faster than Websphere Studio (4.x anyway)

With VS.NET I load up the IDE & am staring at code in 5 seconds.  Sure, parts of the IDE are not built in .NET - but I don't care what it's built with as long as I don't have to wait for it.

God knows I don't hate java for the language itself.  We all know C# is basically Java++.  But the speed really is an issue.  But I digress. 

GiorgioG
Friday, December 13, 2002

I think a lot of people can't get by java's second rate and slow gui.  I agree with a previous poster that server side it is rock solid and the cross-platform ability is cool.  It does seem that Microsoft manages to kick the living crap out of almost everything out there for gui responsiveness and feel.  If you get used to this on Windows I think it is really hard to use tools with crappy gui performance. 

Crusty Admin
Friday, December 13, 2002

Florian,

How about supplying us with some more information regarding the corporate business application who plan on building? 

How many people do estimate will be using it?  Type of architecture you plan on using, etc.

one programmer's opinion
Sunday, December 15, 2002

Powerbuilder?

Ben
Sunday, December 15, 2002

Hi GiorgioG,

"Just as a test I created a little hello world project and closed IDEA.  I reloaded IDEA and timed the load till I could edit the code - 19 seconds...."

Well, you are talking about the startup time here.  My mom thinks her computer which has MS Windows installed on it is slow to load. 

"Menus seem to take a bit over half a second to open." 

Yes, this is much better!  Talking about the sluggishness of a program (execution speed) while it is being used is a far more relevant and important metric imho.

one programmer's opinion
Sunday, December 15, 2002

one programmer's opinion:
<<
Well, you are talking about the startup time here.  My mom thinks her computer which has MS Windows installed on it is slow to load. 
>>

Well, I was just citing the most blatant example ;-)  But yes, the menus are slow and the entire UI as a whole is just not crisp & does not 'snap to attention' like VS.NET or Visual SlickEdit.

GiorgioG
Sunday, December 15, 2002

Thanks to everybody who has provided feedback and ideas so far.

Here are some more details about the kind of application I am thinking about:

The front-end should be useable both as a standalone app using files and in conjunction with a back-end server for data sharing. I am thinking along the lines of copy and run with an installer to give icons in the right places, if needed. The reason I don't want a big installer is that I want people to be able to download this easily and to pass it around (In my experience, 20MB still takes a few minutes even over a "decent" network connection and is more or less a no-no as an email attachment).

As for the target environment, it isn't really specified since this is somenthing that should be useful in all kinds of companies (and therefore should run in all kinds of places).

From looking at the thread so far it looks that Delphi could be a good choice with maybe Powerbasic and Python as alternatives.

Excuse me if this is a stupid question, but how would you write a Windows app in C? I am old enough to remember the mess that Windows programming was before Visual C++ and MFC took a lot of the pain out of the message loop.

Florian Heine
Monday, December 16, 2002

Take a look at REBOL (www.rebol.com). Plenty of platforms to run the same code unchanged on, nice language. Might want to talk to Rebol Technologies about a better license than their default one. Overall a nice language/platform.

Lennart Fridén
Monday, December 16, 2002

Florian: Contrary to common belief, MFC does not make simple Windows programs easier to write. If all you need is a few buttons and a few menus, well written C code is usually as small as (or smaller than) MFC.

You do get farther ahead with MFC if you use the more advanced controls, document/views MDI (why you'd want to do that is beyond me, though), embedded explorer, etc.

Personally, I prerfer FLTK to almost any other toolkit. It's fast, it's light, it's cross platform, and it leaves me in perfect control over what's happening.

I would recommend you to give Python a look. a ~500K DLL is about all you need to distribute it (McMillan's installer will package it nicely for you so you don't have to figure out what to include). It's easy to learn and use, has interfaces to more or less everythinig, can compile to Java bytecode (and I assume .NET byte code in the future), usually fast enough for most stuff, easy to delegate slower parts to faster languages. And it has a JIT compiler (Psyco)  in the pipeline that is really fantastic.

Ori Berger
Tuesday, December 17, 2002

*  Recent Topics

*  Fog Creek Home