views:

720

answers:

14

hi all!

I'm going to advise a company on a project soon, and I'm not too sure about what programming language I should advise.

It's a fairly straightforward (desktop based) application with a central datasource on the network, for storing and editing parts that make up a machine. The machine needs to be configured in the application, and with this configuration production documents (manuals, software, bill of material) are generated. (e.g. if part A and B are added to the configured machine, then variation X on chapter 5 of the manual has to be used, if that makes sense)

There's a few non-standard components like a tree with radio & checkboxes, and it has to have some sort of version control in it. It needs a WYSIWYG editor to edit chapters of manuals. It doesn't necessarily have to run on platforms other than Windows because it will only be used on the company network and everybody runs windows.

I was thinking Java because of it's huge numbers of useful libraries and free IDE's. I'm a Java programmer myself so I'm not very familiar with other programming languages. Any thoughts on what language I should use, and why? I believe there's a bit of VB/VBA and Delphi knowledge present in the company (it's not an IT company and I'm not likely to program it myself).

Thanks heaps!

A: 

Well, there is a lot of wisdom with using what you know (Java).

However, just to counter the "because of it's huge numbers of useful libraries and free IDE's" - .NET also has a huge library base, and free IDEs (including the Express editions of Visual Studio). For .NET, C# would be a "closer" language to Java than VB.

I reckon you'll end up with Java, though (through familiarity - not always a bad thing).

Marc Gravell
+4  A: 

Depends. On many things. What language are you familiar with? What database do you use (MS SQL has some advantages when used with a .NET language, but can also be used with java, or ...)?

The libraries are (at least for me) not a main decision point since there are a lot libraries for other languages too.

If you do not program yourself, ask the developer doing the job. Projects have other marks than technology such as time used and money spent. If you choose a language the developer is familiar with, it's more likely to be in time and in cost.

Your question is somehow far too open to give an exact answer. But maybe this helps you to think about it.

Sascha
+2  A: 

Of the tagged languages, avoid asp.net as it's a desktop application. Other than that all the other languages would do a good job. It would come down to personal preference (more importantly the personal preference of the developer).

Stevo3000
A: 

When we build client side systems we use .Net (C# usually). We do Java on the back end, but it sounds like you may not have a traditional back end. For all the libraries and frameworks that are available for Java the vast majority of high quality UI components are in the .Net space these days.

Jim Blizard
+6  A: 

Well the scenario you describe is not very language specific, so here are a few hints:

  • generally, java is absolutely ok but:
  • In a windows world, you can live easier with .net languages, because of direct access to COM/activex for combining documentation snippets in adobe or Word
  • since there's some vb knowledge about in the company, maybe the task of maintaining the software becomes cheaper.

I would suggest c#, because via mono, you can go Linux where and if necessary.

well, that's my 2 cents.

AndreasT
+1  A: 

I'm a Java programmer myself so I'm not very familiar with other programming languages.

If you're going to write the software you should use Java. You're already familiar with it and your familiarity can help you delight your customer.

CLaRGe
+1  A: 

If you aren't writing it you need to find out who is and take their experience into consideration. Having them learn a new language just because you don't know what they are familiar with is not exactly a good way to go.

Java would work, C# would work (I would personally pic C#), it really just depends on the experience you have available.

What is this about the "non-standard" components? If there are 3rd party controls they want to use that might dictate the language/platform to work with. There are lots of free controls and examples in Java and C# as well and extending the standard Java / .NET controls might even work better that going with the 3rd party controls.

Sounds like you need to know more about the application and some other things that are out there before you can really be advising somebody else on what to do.

bdwakefield
+3  A: 

You should use whichever language is:

1) Most appropriate for the project

For example: If your project requires real-time processing, use a language that is conducive to performing that task.

2) You (and your team) is most comfortable with.

You would need to discuss with your team whether any languages that you currently know between you all are appropriate (keeping point 1 in mind). If none are appropriate, which language (with point 1 in mind) will all be most comfortable with in learning, developing and supporting (maintaining) throughout the life-time of your project.

This sounds like very curt advice, but I believe it's crucially important. If your project is to succeed, you need a language that you can "live" with, and will work with you rather than against you. If you were a wood-worker, you could use a hammer to put screws into a piece of wood, but wouldn't you be much more comfortable using a screwdriver?

CraigTP
A: 

I think it doesn't really matter that much in which programming language and environment you program, as long as you get to know it thoroughly. C++, Java and C# all have good libraries and all have their strengths and weaknesses. The important thing is that you know the peculiarities of the language, the development environment, the debugger, a good profiler, the standard libraries, the best third party libraries, etc... Moreover, after a while you can reuse your own code as well. For example, you mention an advanced tree widget. In our company, we have our own tree (in C++) which we can finetune as we like.

Dimitri C.
A: 

When you are managing the development and someone else is doing the implementation and maintenance then I'd suggest to negotiate the programming language with them.

When you have to do the maintenance then focus on languages that you know.

If you do all/most of the work, just use what language you are familiar with, when you don't have enough time to learn a new language on the way. Especially if the application is important and needs to be pretty bug free. (although there is never a "last bug" as we all know) ;-)

The amount of 3rd party libraries is not a good criterion because this doesn't reflect their quality (maybe most stuff is crap) and many libraries means also a big chance to select the wrong one.

Don't forget to check if the chosen language is capable of doing the job. (Speed, platform constraints, memory footprint, ...)

Patrick Cornelissen
+16  A: 

for desktop applications ( plus with database/win32 things) i'd recommend delphi. u can find many good components availabe .

avar
+19  A: 

I think if you have Delphi knowledge in your company : it is a very good choice for Desktop application and as avar says : you can find a lot's of good components here Torry's Delphi Pages.

I recommend this article

Hugues Van Landeghem
I second the Delphi recommendation. Having worked in other languages, including the latest C#.NET I still prefer Delphi for desktop applications. Plus it has the simplest deployment (no runtime!)
Jim McKeeth
+21  A: 

From what your describe of your application and environment, nothing can beat Delphi!

It's the ideal case for Delphi to shine:
- native desktop application with fastest performances and development combined.
- plethora of excellent (often free) components; you'll probably find your tree
- extremely powerful yet simple for DB applications
- very active and helpful community

See also why I recommended it for another SO user.

François
Even though Delphi is a general purpose application, for database applications like you are describing it really does amazing. You have the maximum options for databases and data access methods so you can find the one that fits your situation perfectly!
Jim McKeeth
+7  A: 

You probably want to choose the language that your team has the most experience with. I personally am into Delphi, and it sounds like this might be a good choice for what you describe. Delphi is highly suited for Desktop apps talking to a database. However if your team (those writing and maintain the app) are more experienced with Java / C# / VB then you should go with that.

Alister