Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am wondering about which programming languages people see fit to create a program idea that I had. I am looking to create a fairly simple program whose main functions are adding to, managing, and searching through a database of people, all through a polished GUI. It will be for use in the business world, so I think Windows would be the priority, but Mac and Linux support wouldn't be bad. Also, eventually I would like to add the ability for an instance of one program on a computer to interact with other instances on the same network, mainly through the sharing of a database.

Most of my experience is in Java, but I don't particularly like the appearance of Java GUIs, so I'm looking for an alternative. I noticed that a lot of people have suggested C++ or C# in similar posts, so what are some of the advantages/disadvantages of one or both if that is your suggestion.

Thanks for any help in advance.

share|improve this question

migrated from Jun 15 '11 at 23:49

This question came from our site for professional and enthusiast programmers.

most languages have a descent db-interface available. Choose one you are comfortable with. E.g. python with wxpython creates beautiful GUIs and it's cross-platform – Fredrik Jun 15 '11 at 22:18
You have the experience level inducing an open question like this (clarify: you don't know your tools), yet you want to reinvent the wheel with a 'polished UI'? Good luck with that. – sehe Jun 15 '11 at 22:19
If your main objection to Java is the appearance of the GUI, it's worth looking at SWT. (Using a language you already know instead of learning a new one can help a project succeed; this varies depending on the language features and frameworks available of course.) – Bruno Jun 15 '11 at 22:19
+1 for python. You said you don't want to rely on Java libraries, but what are you looking for in your GUI appearance? Personally, I'd slap together a web page with a python backend, that's about as cross-platform as it can get. – user507078 Jun 15 '11 at 22:27
Is there a reason you aren't thinking web for gui? I am a huge desktop dev but have gotten to the point where it would take a fairly strong argument for me to choose desktop over web. – ShaneC Jun 16 '11 at 0:54

I suggest C#. It's very similar to Java in terms of syntax and the libraries available, and the Visual Studio Windows Forms designer is epic. It's also very easy to deploy on Linux and Mac if needed with Mono and C#.

share|improve this answer
Deploying with Mono can hit snags if you're using code that uses the Microsoft-only parts of the .NET framework, although its unlikely, its still something to keep in mind. Apart from that, I agree, C# is a great choice =) – William Lawn Stewart Jun 15 '11 at 22:39
I'm a C# Developer and until you said GUI I was going to suggest Ruby. If you want easy, polished GUI tools it's gotta be C#. Using Mono to release across multiple platforms is surprisingly easy (though not without a few snags occasionally). – James P. Wright Jun 16 '11 at 2:39
Also, the CLR has what is probably the best base class library I've seen. – configurator Jul 18 '11 at 20:03

Tcl/tk, and python with tkinter or wxpython are good solutions. GUIs are much easier to write with dynamic languages than compiled languages in my opinion. Both of these toolkits - tk and wxpython - support native widgets on windows and mac.

Tcl has an added advantage that deployment can be really simple, because you can wrap the whole tcl/tk runtime along with your app and data files in a single file. Python has this ability too, but it's not quite as easy or as cross-platform.

Tcl is an acquired taste, however, so you may not like its simplicity. If you prefer an object oriented approach python is the better choice. You can do OO programming in tcl but it's not quite as easy.

share|improve this answer
tk and wxpython are not exactly what I would call "sleek". They both look pretty 1995. – Morgan Herlocker Jul 18 '11 at 20:47
Agreed: they aren't what I would call "sleek" either. But they are more than adequate for most business apps. They both use native widgets on mac and windows machines. It is possible, for instance, to create a tk app that is virtually indistinguishable from most native windows applications. Plus, for business applications "sleek" isn't usually as important as "functional", and both of those toolkits are quite functional. – Bryan Oakley Nov 12 '11 at 21:55
@ironcode I disagree, at least regarding wxPython. It's native. If Windows 7 looks "sleek" and "2011", then, by definition, wxPython apps look sleek and 2011. – Chelonian Nov 13 '11 at 17:13

The only advice I would give are:

  1. Use a browser for presentation - you can host it locally, in the enterprise server or in the cloud - gives you tons of options.
  2. If you're comfortable with Java then stick with it or something from that family (Groovy, Scala?)

The above 2 address all issues of portability. The first point above also allows for centralized communication between clients (if you decide to go that route).

Lastly I would suggest leveraging a few powerful frameworks like Spring to allow you to quickly and uniformly get all of the base components in place.

If you don't like point #1 then I would still suggest to use Java as a base and either throw SWT or Python (as was suggested) on top. If you have access to the JRE then I would recommend looking at JavaFX.

share|improve this answer

Well, some will hate me for this, but I say Perl. Perl's Tk module is great, easy to learn IMO, and takes less code than Java.

Also, Perl has a great DBI module which integrates well with Perl/Tk.

share|improve this answer

If you want to get the native system's UI and you do not like Java's implementations for native UIs or you want to go with C++ as your solution, I would suggest using the Qt framework. It offers a very "Java-esque" library for UI/Networking/Etc.

The advantages:

  1. Easy (in my opinion) to use library.
  2. Write once, compile anywhere.
  3. Produces native binaries.

The disadvantages:

  1. Requires Qt library DLLs (if you want a singular binary, static linking can get big)
  2. Uses proprietary, thus non C++, "code" (can complicate an external build process)
share|improve this answer

Building an application such as this can take a couple of forms. On one hand, you could build it in a .NET application using a language such as C#, but you are limiting yourself to running the application on the windows platform. On the other hand, you could write a web application in a language such as PHP or ASP.NET. If you are looking to develop in windows, ASP.NET might be a good choice. I recommend developing your application for the web because you can avoid installations, multiple instances will work on the network and it will be platform independent(for the most part). If you do go with ASP.NET, make sure to detect and handle different browser types appropriately. Hope this helps.



share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.