Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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.

share|improve this question
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. –  Rei Miyasaka Dec 28 '10 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 –  Rei Miyasaka Jun 19 '11 at 21:35
1  
@Thomas: h-online.com/open/news/item/… –  Rei Miyasaka Jun 19 '11 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. –  Rei Miyasaka Jun 19 '11 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 '11 at 15:21
show 5 more comments

closed as off topic by Walter, Anna Lear Oct 6 '11 at 18:58

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

8 Answers

up vote 14 down vote accepted

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 :-)

share|improve this answer
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. –  Billy ONeal Jun 19 '11 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 '11 at 14:02
    
To be fair, moc does add dynamism that C++ lacks even these days. –  Tamás Szelei Nov 3 '11 at 13:39
add comment

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.

share|improve this answer
    
The widgets are there but how seamless they integrate with the core language? How active is the community support? –  RPK Nov 16 '10 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 '10 at 21:43
    
@Jeremy Ruby's community isn't dominated by Rails but it gives the perception that it is, which is a shame. –  alternative Apr 24 '11 at 0:32
add comment

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.

share|improve this answer
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 '10 at 20:58
1  
Java GUI's are slow ? Where is that proved ? –  Tim Williscroft Nov 16 '10 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 '10 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. –  Tim Williscroft Nov 16 '10 at 21:47
2  
Native win32 is fine. Not great for quick development, but it's not grievously hard. –  Paul Nathan Nov 16 '10 at 21:51
show 8 more comments

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...

share|improve this answer
    
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. –  systemovich Jun 20 '11 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. –  Rei Miyasaka Jun 20 '11 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 '11 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. –  Scott Whitlock Jun 20 '11 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 '11 at 15:05
show 6 more comments

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

share|improve this answer
4  
This isn't strictly true. In the *nix world, we have and use GUIs quite extensively. –  greyfade Nov 16 '10 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 '10 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. –  David Thornley Nov 16 '10 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 '10 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 '10 at 21:54
show 1 more comment

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.....

share|improve this answer
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. –  Wayne M May 14 '11 at 21:16
add comment

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.

share|improve this answer
add comment

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.

share|improve this answer
4  
-1 because he states in the question "I don't want to go with IronPython and IronRuby" –  Inaimathi Nov 16 '10 at 21:59
add comment

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