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

9 points by lisporama ↗ HN
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.

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.

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.

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 #^&$#( 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.

I'm a true believer and all... but getting a functioning application now 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.

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?

20 comments

[ 2.5 ms ] story [ 58.7 ms ] thread
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/

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

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

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

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

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

Tile makes Tk look a lot better.
Cute. Had to pop over to ActiveState to download TCL, but that worked pretty good straight from the REPL-like fxri prompt.... (Now I just need a library for doing transformations with bitmap images.)

Thanks.

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.

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.
I've written that app in Objective-C, which is pretty offbeat.
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.

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

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.