views:

643

answers:

15

Other than .NET or Java, which language can be used to write an application for Windows and Linux?

+6  A: 

Python is a great option to look at with PyQT and wxPython as two widely used frameworks for desktop GUI apps.

Amit
Sounds like a definitive answer.
Joe
..definitively since it has two definitive(s) in it :D
Amit
You can't have "a" definitive choice - it should be "the", except then you would be wrong.
anon
@Neil: thanks. I rephrased my answer.
Amit
+2  A: 

Well you said windows and linux, so you could always fall back on C++. A lot of good desktop apps are done with it.

Tesserex
+8  A: 

C++ with the Qt framework: http://qt.nokia.com/products

laura
A: 

Depends on how you define a GUI application.

You could use HTML/Flash/Flex/JavaScript to create an Adobe AIR application that could run like a normal application..

James
+8  A: 

You could reverse your question : what toolkits are there, and which languauges do they support?

For Example GTK : (from wikipedia)

C           GTK+ 
C++         gtkmm 
Ruby        ruby-gtk2 
Python      PyGTK 
Java        java-gnome 
.NET        Gtk# 
PHP         PHP-GTK 
Perl        Gtk2-Perl

You can find support for many languages if you explore these other widget toolkits :

Juce — An extensive cross-platform UI toolkit
FLTK — A light, cross platform, non-native widget toolkit
FOX toolkit — A fast, open source, cross-platform widget toolkit
GTK+ — The GIMP toolkit, a widget toolkit used by GNOME applications
IUP_(software) -- IUP cross platform static/dynamic library C/LUA, Lua (MIT) licence
JX Application Framework
Microsoft Foundation Class - The most commonly used widgeting toolkit for Windows.
Motif
Object Windows Library & OWLNext
Qt — A widget toolkit used by KDE
Standard Widget Toolkit — SWT for Java
Swing — Java widget toolkit
Tk — Toolkit part of the Tcl - project and often used by Perl and Python programmers
Ultimate++
Visual Component Library
wxWidgets — A free widget toolkit
XForms
Peter
+1  A: 

x86 assembly

Eli Bendersky
It is not real advice, it is just for fun. C.O.
Vi
+1  A: 

If you want to use Ruby, try FXRuby.

jamesaharvey
+2  A: 

Ruby Shoes. It is the prettiest API I've ever seen, and it runs on Windows, OS X, and Linux.

jleedev
Ah yes, I wanted to mention Shoes as well, but thought it disappeared when why the lucky stiff, its creator, took down his sites.
jamesaharvey
That's the beauty of open source.
Jörg W Mittag
+1  A: 

It really depends from many factors, anyway if you want a multi-platform application with native UI, I suggest you the combination wxWidgets and C/C++ ( I'm using right now ).

Salv0
+2  A: 

Any language that provides access to the GUIs you care about.

Bob Jarvis
+1  A: 

I'm a bit surprised no one has suggested REALbasic, as it's in a very similar vein to .NET and Java (an IDE that is very much a cross platform clone of Visual Studio, and that started out as a Java development tool on the Mac), not least as they regularly run adverts on Stack Overflow.

The language itself is 'OO VB'. Not quite VB.NET, but very similar. Personally, I don't like the language, but as an environment for graphical application development, it's great regardless. It has some bugs, but it's still quicker to work around the bugs than implement the same UI on 2 or 3 target platforms (unless your app is a huge project that justifies writing your own GUI framework).

I would probably leave heavy lifting to external components written in C/C++, but it has full and very functional API's, including everything from a high level SOAP client to raw TCP sockets as well as 2D and 3D (including OpenGL surface) API's.

You could also use Mono - and use C#, for example - but with GTK instead of WinForms, using Mono Develop (I suggest this as technically it's not ".NET", but you may have already considered it). For GUI apps, it's pretty mature on Windows and Linux, as long as you build your app with both in mind from the ground up.

Iain Collins
+5  A: 
  • Every programming language (or more precisely every programming language execution engine) which can interface with native code can be used to implement GUI applications. This alone already includes pretty much every single programming language ever created in the last 60 years, including but not limited to C, C++, Objective-C, Objective-C++, D, Eiffel, Fortran, Pascal, Modula, Oberon, Go, Haskell, OCaml, Python, Ruby, Perl, PHP, Tcl, C#, VB.NET, Java, Scala, F#, Newspeak, Animorphic Smalltalk, Eiffel, Lua, Potion, Falcon, Dao, Nimrod, Genie, Vala, Scheme, CommonLisp, Cobol.
  • Every programming language that runs on the Java platform can be used to write GUI applications. This includes about 400 languages that we publicly know about, plus who knows how many languages that are not publicly known. This list includes Java, Scala, NetRexx, Python, Ruby, PHP, ECMAScript, Groovy, Fan, Clojure, JavaFX, AspectJ, Fortress, Cobol.
  • Every programming language that runs on the CLI and/or .NET platform (hint: .NET is not a programming language, it's a marketing term for a combination of a CIL execution engine, CLI implementation, CTS implementation, BCL implementation and a framework) can be used to write GUI applications. This includes about 200 languages that we publicly know about. This list includes C#, VB.NET, F#, Eiffel.NET, Spec#, Sing#, X#, Polyphonic C#, Cω, Ruby, Python, Perl, Tcl, PHP, C++, SABLE, Scheme, CommonLisp, Clojure, Fan, Scala, Cobol, Cobra, Perl.
  • A lot of programming languages bring their own GUI framework for writing GUI applications, for example Tcl, Newspeak, Dolphin Smalltalk, Squeak Smalltalk, Delphi, Rebol.

And that's just the ones that I could think of off the top of my head.

Jörg W Mittag
+1  A: 

Erlang and its bindings to Wx.

I didn't come across a language that didn't have bindings to some GUI toolkit: if folks care about a language, they build bindings.

jldupont
+1  A: 

One important thing to take in account is your previous experience, that is not a minor topic, because mastering a programming language takes time.

Said so, I love Smalltalk in any flavour, so you can select (in Smalltalk world):

  • Dolphin Smalltalk (Is Windows native, but the exes works on Linux under Wine)
  • Visual Works
  • Visual Age
  • Smalltalk/X
  • Squeak/Pharo

They are the main Smalltalk's, and are named in no particular order.

Germán Arduino
+1  A: 

Tcl/Tk

mouviciel