

AskYC: Quick GUI app in off-beat language?  Or...? - lisporama

I want to make a desktop app with a GUI.  I don't have loads of free time and I don't want to have to beg too much help off of "real" developers on forums or whatever.  I want to do my on work and live with the consequences of my descisions and not send every little thing to a committee.  My app needs mostly to put bitmap images on the form and rotate them around and/or stretch them to fit rectangular coordinates.  My app will have a DSL that's mostly just a wrapper for the object model.  <p>I can code C# applications, deploy them, etc. no problem.  With C# I can just code without thinking.  I have proof-of-concept code that runs and I can just focus on making a working application.  This makes C# the default choice even though I can think of dozens of reasons not to go with it.<p>I wish there was a journeyman developer that could just take an hour or so to give me a tour of his alternative platform and show me what to focus on and what to ignore.<p>I'd seriously like to try Common Lisp, Scheme, or Ruby... but I dread the learning curve for all the dipstick stuff like buttons and dropdown menus and windowing crap-- and setting up the environment and making deployment exe files or whatever.  And I'm running on a #^&#38;$#( Windows box, so I also dread getting half my documentation for tool x being only in Linuxese and having to figure out yet more crap just to get up to speed.<p>I'm a true believer and all... but getting a functioning application <i>now</i> is more important than being idealogically correct.  All other things being equal I'd just figure everything out no matter how long it takes, but I'm losing patience.<p>Is there a good alternative to C#, or do I just need to accept that doing something off beat isn't feasable for me yet and just get on with it?
======
iamelgringo
Have you thought about IronPython, or one of the other "off beat" languages
that run on .NET? If you already know C#, my guess is you probably know the
.NET windowing libraries and perhaps are familiar with WPF. If you know those,
you can pretty easily experiment with another language that's more expressive
than C#, but still use the libraries you know.

I'm not sure of the state of any of the other languages, but IronPython seems
to be at a decent maturity level, and it's .NET implementation is actually
faster than CPython in some cases. There's also IronRuby, but that project is
still pretty green. You also have languages like L# (.NET implementation of
Lisp) S# (same, but smalltalk) and F# (.NET ML) that are in various stages of
readiness. I've heard rumors that MSFT wants to make F# a full fledged citizen
of the .NET landscape. We'll see.

I've also messed around with the new PowerShell scripting language. It's
actually possible to access the WPF libraries from a shell script in Windows.
That's kind of cool. I was considering making a Windows app based on
PowerShell for a while there, so I looked into it for a few months.

~~~
iamelgringo
Here's a link you might find interesting:

[http://www.voidspace.org.uk/python/weblog/arch_d7_2007_12_15...](http://www.voidspace.org.uk/python/weblog/arch_d7_2007_12_15.shtml#e906)

------
pchristensen
I reread this at least 5 times to make sure I wasn't missing something, but
what about WinForms? If you code a lot of C#, I assume you have Visual Studio,
and if you need it _now_ , wouldn't it be better to save the language learning
exploration for a different, less urgent project? You could probably have a
winforms app running in less time than it takes to order a pizza.

As I'm writing this comment, I keep looking back at the original to see if
there was some requirement that it be cross-platform or something.

~~~
lisporama
I've got a working prototype in C#-- gui and all; just no DSL, yet. I'd like
to do go to a different language, but dread the learning curve and potential
hassles of moving to something "cool" in the face of a time crunch.

------
luccastera
If you want to give Ruby a try and you are building a small app. Check out
Shoes: <http://code.whytheluckystiff.net/shoes/>

------
DaniFong
Squeak has the nicest, most intuitive GUI system. The language and the system
is designed to be accessible to youngsters, yet it's more than powerful enough
for Trevor Blackwell to recommend it. I'll quote him on good code bases that I
know of include:

"Squeak, which is written in itself. It includes the complete source to its
powerful GUI system, and is the only GUI toolkit I know of that is clean,
readable, and hackable."

------
dpapathanasiou
_I'd seriously like to try Common Lisp_

If so, take a look at Cells-GTK, since it makes the GUI stuff simple, and is
cross-platform:

<http://common-lisp.net/project/cells-gtk/>

~~~
lisporama
Looking at this one...

Installing GIMP as directed did not load GTK to the Common Files directory...
and the path was not added to the environment variables.

The instructions say "(I had to reboot after this, but then I don't know
anything about Win32)" and "On windows under emacs with slime, the gtk window
does not popup."

This does not give warm fuzzy feelings.

Ruby appears to be the way to coding happiness just based on this... ;)

------
menloparkbum
I've written that app in Objective-C, which is pretty offbeat.

~~~
boucher
Objective-C is less offbeat than it seems I think, but its hard to argue with
the fact that its definitely not mainstream.

Nevertheless, great language, and great libraries. Cocoa+IB make GUI work
incredibly easy.

------
davidw
Tcl & Tk sound like something that might work, even if they're not as 'cool'
as some languages. You can get something simple up and running very quickly.
... However... for the heavy lifting bits, you might have to write some C
code.

~~~
jgrahamc
Tk has bindings to other languages as well, you don't have to use Tcl:
<http://wiki.tcl.tk/17264>

------
richcollins
You could use Io (<http://iolanguage.com/about/>) with Flux
(<http://iolanguage.com/about/screenshots/>)

------
greendestiny
If you to do something a bit different XUL might interest you. If you want to
do it fast C# is probably the best tool for making simple GUI applications
available.

------
DarrenStuart
why don't you do it in C# uaing Mono.net

or you could use something leftfield like the torquex game engine...

------
curi
It's easy in Ruby. For example:

    
    
     require 'tk'
     root=TkRoot.new{title "curi"}  
     label = TkLabel.new(root) {text "i'm text"}.pack
     button = TkButton.new(root) {text "click me"}.pack
     Tk.mainloop

~~~
iamwil
Tk looks kinda ugly, if you're a stickler for those kinda things. If you want
a prettier one, albeit less features since it's new, check out Shoes for Ruby
by the venerable _why.

<http://code.whytheluckystiff.net/shoes/>

~~~
davidw
Tile makes Tk look a lot better.

