10

I have been developing Windows GUI applications since many years and jumped into .NET in early 2005. .NET is a undoubtedly a remarkable platform and I am still using it, but with a variety of technologies out there, I don't want to remain dedicated to this camp. I want to learn new languages with which I can develop GUI applications.

I am learning Ruby and just installed Python. I read about WxRuby, a framework for developing Windows GUI app. in Ruby. I am searching for a similar framework for Python.

Apart from that I want to know which language is more suitable for a production-level GUI app. I doubt that Ruby is more focused on Web platform with it's glamor, Ruby on Rails.

I know that I may not get those rich .NET classes and that impressive Visual Studio IDE, but still I want to follow the road less traveled. I don't want to go with IronPython and IronRuby, however sometime later, I may dip hands to explore them.

10
  • 5
    Real shame that Microsoft decided to just randomly ditch IronPython and IronRuby. I don't think they really understand what kind of disturbing message they sent out to the industry/community in doing so. Dec 28, 2010 at 10:55
  • 2
    @Mahmoud They stopped spending money on it; they're just letting the community run it now. The lead developer, Jim Hugunin, could no longer work on it from Microsoft, so naturally, he left the company as well: hugunin.net/microsoft_farewell.html Jun 19, 2011 at 21:35
  • 1
    @Thomas: h-online.com/open/news/item/… Jun 19, 2011 at 21:38
  • 9
    @Thomas It's still ditched. Just because I ditch my girlfriend doesn't mean she no longer exists or is no longer viable... whatever the latter might mean. Jun 19, 2011 at 21:50
  • 2
    @Rei, as far as you're concerned, she no longer exists :) Ditched is a one-way ticket to that singles bar where you can hang out with MSDOS, FoxPro, VB6, Silverlight, Flight Sim, IronPython and IronRuby and tell tales of how much love you got in the old days.
    – gbjbaanb
    Jun 20, 2011 at 15:21

8 Answers 8

14

Check Qt.

it's arguably as rich as .NET, and the IDE (QtCreator) is simple yet pretty powerful. Of course, it's better used on the native C++, but the Python binding is kept complete and up to date.

On top of it, it's really crossplatform, and that includes mobile platforms now too :-)

3
  • 1
    It's hard to call Qt a native C++ system given that it needs a separate compiler before building with it. It's not a bad system though. Jun 19, 2011 at 20:52
  • 1
    not at all, its 'native' as "compiles straight to machine language, no bytecode/VM/JIT there", also as: "no platform emulation layer, the resultant code is OS-specific". the moc precompiler is nothing more than some syntax sugar to make simpler-looking code in some specific corners (mostly signal-handling); it fits the compile chain in roughly the same place as the C preprocessor. It's mostly a historical artifact of the API stabilization before certain C++ features had stabilized across compilers
    – Javier
    Jun 20, 2011 at 14:02
  • To be fair, moc does add dynamism that C++ lacks even these days. Nov 3, 2011 at 13:39
6

Well, wxRuby is just a Ruby binding for wxWidgets, an awesome cross-platform GUI toolkit. There is a similar binding for Python called wxPython, as well as bindings for many other languages.

3
  • The widgets are there but how seamless they integrate with the core language? How active is the community support?
    – RPK
    Nov 16, 2010 at 20:44
  • 1
    @RPK - You'll have a fairly small community using any given GUI toolkit with either Python or Ruby. wxPython community is bigger than Ruby though; Ruby's community is dominated by Rails now but Python has more apparent diversity.
    – Jeremy
    Nov 16, 2010 at 21:43
  • @Jeremy Ruby's community isn't dominated by Rails but it gives the perception that it is, which is a shame. Apr 24, 2011 at 0:32
5

I'm not sure if your question is limited to determining if Ruby or Python is better or if you're asking which other languages you might want to learn to develop Windows GUI apps in general. I'm assuming the latter.

There are also Java, Delphi, or native Win32 programming. Any of those are suitable for developing GUI apps on Windows. Native Win32 code can (must?) still be written through Visual Studio, but there's no .NET dependency.

13
  • 4
    +1 for Delphi. Build fast, native 32-bit Windows apps without the baggage of .NET. 64-bit version probably coming sometime in 2011.
    – tcrosley
    Nov 16, 2010 at 20:58
  • 1
    Java GUI's are slow ? Where is that proved ? Nov 16, 2010 at 21:29
  • 9
    @Tim Williscroft - SWT is fast but most Swing apps are somewhat-to-very sluggish. Its so evident I can't even imagine needing to prove it.
    – Jeremy
    Nov 16, 2010 at 21:41
  • 1
    @Jeremy I bow to your superior knowledge. I'm so embarassed, I've been doing it wrong for years but now I know. Nov 16, 2010 at 21:47
  • 2
    Native win32 is fine. Not great for quick development, but it's not grievously hard. Nov 16, 2010 at 21:51
5

HTML5 and JavaScript.

I wish I were kidding, but I'm not.

Scary to think that no one had this answer half a year ago.

Sad...

11
  • A year or so ago, I commented on Programmers that Microsoft threw VB6 out with the bathwater and that they could do the same with .NET. Somebody responded to me and wrote that MS would never ditch .NET. Well, surprise, surprise! That is why I rather stick with the freedom software and open source communities. If .NET was open source, MS's behaviour would not have mattered that much, because the community could have taken the framework forward.
    – Geoffrey
    Jun 20, 2011 at 7:02
  • 1
    Mono has largely caught up. The problem is that the stigma and politics around it make it impossible for other companies to adopt it comfortably. The same story applies to Java, which is open source, with Sun trying to sue Google. The difference is that Google didn't expect Sun to sue them. Everyone expects Microsoft to sue them, and so even though they've vowed not to, people avoid .NET/Mono/ECMA C#. Really, this isn't about open source vs. anything; it's about MS having completely lost its head. Almost all software run the risk of its main contributors going crazy or bored, open or not. Jun 20, 2011 at 9:19
  • +1 because it's great to be able to port HTML5 and JS straight from the browser into a native desktop application. Now we have web, mobile (using PhoneGap) and windows 8 all under one open source platform!
    – Raynos
    Jun 20, 2011 at 14:08
  • 1
    The end of the article you linked to suggests that MS isn't going to abandon their huge developer base and/or make them all code in HTML5+JS, and that this is more of a PR gaff than anything else. Jun 20, 2011 at 14:25
  • @ScottWhitlock it's just microsoft expanding the tools you can use without it deprecating or dropping support for any existing tools. It's a great way to pull in more developers into the microsoft eco system.
    – Raynos
    Jun 20, 2011 at 15:05
4

Remember that the hard-core non-microsoft non-apple people are command-line driven, and GUI design is fairly useless there. They will, to some extent, compromise and make GUIs in HTML, to be consumed by browsers, but that's for their clients, not for themselves.

If you with to stay in the GUI world, I suppose you might want to look at Apple or stay with .NET on Windows.

Makes sense?

HTH

6
  • 4
    This isn't strictly true. In the *nix world, we have and use GUIs quite extensively.
    – greyfade
    Nov 16, 2010 at 20:37
  • @Christopher: I know and absolutely aware of it. Take for instance, Oracle. They came out with HTML GUI, which is very slow. I am not looking only negatives, probably Oracle can be managed via command-line very well.
    – RPK
    Nov 16, 2010 at 20:43
  • @RPK: IIRC, Oracle 9i had a wonderful administration tool, which was a GUI desktop app. I much preferred it to command-line administration. Oracle 10g implemented that as a web page, which wasn't nearly as nice. Nov 16, 2010 at 21:37
  • 1
    GTK is pretty popular on Linux desktops, and there are other GUI toolkits. I don't think its common at all to run a desktop without a GUI even if you use terminal for a lot of tasks; though *nix servers you usually would do everything through a command line.
    – Jeremy
    Nov 16, 2010 at 21:38
  • 2
    +1 because I resemble that remark. Typically, GUI programming I do is web-app related. I do make a conscious effort to put that design degree to work by making it intuitive, simple and obvious, but my own computing experience is something like 80% Emacs, 15% browser, 6% other (with a 1% margin of error).
    – Inaimathi
    Nov 16, 2010 at 21:54
3

I'd recommend Java in your situation.

Reasons:

  • If you know .NET, you'll be relatively comfortable with Java (C# was largely inspired by Java and many of the conventions and even library names are very similar)
  • Java has some impressive GUI capabilities (even if they are not so widely acknowldged). The best cross-platform GUI toolkits are in my opinion Swing (which is totally cross-platform, with a consistent look and feel) and SWT (which also harnesses native components, as used by e.g. Eclipse). JavaFX 2.0 also looks promising for the future.
  • There are plenty of "GUI builder" type tools for both (generally available as IDE plug-ins for e.g. Netbeans or Eclipse)
  • It's probably a matter of personal preference but I'd argue that Netbeans or Eclipse are, overall , better IDEs than Visual Studio, and certainly more capable than you see for any other languages or platforms.
  • The Java platform/ecosystem is a great place to be in general - huge variety of libraries and tools, particularly if you like open source.

Alternatively, you could try one of the new innovative JVM languages like Scala or Clojure if you are feeling adventurous.....

1
  • 3
    Also Java developers tend to be more up to speed on the proper way to write software, while many more .NET guys just sling code without applying design patterns, SOLID, etc. May 14, 2011 at 21:16
-1

Python works fine for GUI. You can have a look at PyQt, PyGTK, WxPython etc. Those are actively used for GUI development (in Linux) and said to be cross-platform.

-4

Look into other programming languages that work with the .Net runtime, like IronRuby and IronPython. Next, check out the mono project.

These steps will get you out of your .Net comfort zone and developing on Linux. From there, it's a small leap to full-on UNIX-style development.

1
  • 5
    -1 because he states in the question "I don't want to go with IronPython and IronRuby"
    – Inaimathi
    Nov 16, 2010 at 21:59

Not the answer you're looking for? Browse other questions tagged or ask your own question.