Beta

Slashdot: News for Nerds

×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Best Language For Experimental GUI Demo Projects?

Unknown Lamer posted more than 2 years ago | from the through-the-looking-glass-again dept.

GUI 278

New submitter GrantRobertson writes with a question about quickly developing prototypes for new interface design concepts "My research/tinkering will be along two main lines: (1) Devising entirely new graphical user interface elements, mostly in 2D, though often in a true or simulated 3-D space. I am working on ways to visualize, navigate, and manipulate very, VERY large data-sets of academic research information. (2) Computer based education software, though of a type never seen before. This will combine some of the GUI elements invented in (1) as well as displaying standard HTML or HTML5 content via a browser engine My requirements are: (A) A decent IDE ecosystem; (B) A decent set of libraries, but ones that don't lock me in to a particular mind-set like Swing does in Java. (Boxes in boxes in boxes, Oh My!); (C) An ability to easily draw what I want, where I want and make any surface of that 3D object become a source for capturing events; (D) Ease of cross-platform use. (So others can easily look at my examples and run with them.); (E) No impediments to open-source licensing my code or for others to go commercial with it either (as I have seen when I looked into Qt). So, should I just stick with Java and start looking outside the box for GUI toolkits? Or is there something else out there I should be looking at?" I'm not sure what impediments Qt has to proprietization of software since it's LGPL nowadays; in any case, Qt Quick and GNOME's Clutter seem like they could be a useful. Read on for more context."I am not a professional software developer and never have any aspirations to become one. I've been through a generic university computer science degree-program and I can tolerate C++ begrudgingly. I do OK with Java and prefer it, though I still have to look up every API before I use it. Most of the code I want to write will be not much more than prototypes or proof of concept stuff for the research I will be doing, rather than full-on applications ready for distribution and use. I can learn any language out there, if need be, but these days it is more about the ecosystem than the core language. IDEs, libraries, cross-platform compatibility, user support, open source licensing."

cancel ×

278 comments

GNUstep (1, Interesting)

Space cowboy (13680) | more than 2 years ago | (#39106423)

I'd use Cocoa on a Mac, and stick to the (large) subset supported by GnuStep. Bonus, you'd be able to test IOS devices with your data set with a little more effort...

Simon

Haskell !! (0, Troll)

Weezul (52464) | more than 2 years ago | (#39106553)

Haskell is the best language for anything new and interesting!

Re:Haskell !! (2, Interesting)

Anonymous Coward | more than 2 years ago | (#39106695)

banana
http://www.haskell.org/haskellwiki/Reactive-banana

Re:Haskell !! (3, Funny)

Wonko the Sane (25252) | more than 2 years ago | (#39107035)

I typically reply to any "which language" type of question with "Forth" but it seems that it's becoming less effective as a joke because not as many people seem to know what Forth is.

Re:Haskell !! (4, Funny)

devphaeton (695736) | more than 2 years ago | (#39107101)

Han Solo: Hokey religions and ancient weapons are no match for a good blaster at your side.

Obi Wan: But the forth will be with you, always.

Re:GNUstep (1)

Eponymous Coward (6097) | more than 2 years ago | (#39106969)

Is GnuStep still alive?

Re:GNUstep (2, Insightful)

wisty (1335733) | more than 2 years ago | (#39107083)

Cocoa isn't exactly very productive. Maybe when neXt first came out :/

If you want to use Apple's Interface Builder, it's OK, but virtually nobody writes the GUI code by hand. wx and Qt run circles round it.

Speaking as a VC wonk... (5, Funny)

owenferguson (521762) | more than 2 years ago | (#39106429)

I'd be tempted to do it in English, but, given current demographic patterns, Chinese may be better in the long run...

Re:Speaking as a VC wonk... (0)

tobiah (308208) | more than 2 years ago | (#39106799)

heh

Re:Speaking as a VC wonk... (1)

Higgins_Boson (2569429) | more than 2 years ago | (#39106861)

I'd be tempted to do it in English, but, given current demographic patterns, Chinese may be better in the long run...

English? Really?
I was more thinking of crayons, construction paper, a juice box and a nap to call it a day.

Processing (5, Informative)

Deathnerd (1734374) | more than 2 years ago | (#39106449)

Im sort of in the same boat (Graphic Designer with aspirations to be a UI/UX designer) and am learning to code of my own accord. I've had much success with Processing [processing.org] . It's really easy to get started and get functional code running. Also, you can run your processing files on a webpage with Java or Processing.js. I don't know about the large data sets you're dealing with, but since Processing is java based, I assume there won't be much difficulty

Re:Processing (1)

Anonymous Coward | more than 2 years ago | (#39106491)

I took a very quick look. Cool, but the language itself looks a lot like Java without classes. WTF...? Why not just provide a Java-based framework and class libraries...

Re:Processing (3, Insightful)

foniksonik (573572) | more than 2 years ago | (#39106599)

Take another look.

Re:Processing (4, Informative)

retchdog (1319261) | more than 2 years ago | (#39106621)

so that non-programmers can script up their concept without even the cognitive overhead of java. processing is intended for use by journalists, biologists, &c... and it is, to great effect.

Re:Processing (2, Funny)

Anonymous Coward | more than 2 years ago | (#39106829)

processing is intended for use by journalists, biologists ...

Whoa, whoa, whoa! Don't get carried away with wishful thinking there. Biologists. Sure they could program. If you'd said dog catchers, garbage men, or ditch diggers I could believe they'd be capable of programming too.

But journalists? Give me a fuckin' break. That's just completely unrealistic.

Re:Processing and Java: not always play nice (4, Interesting)

Dr Herbert West (1357769) | more than 2 years ago | (#39106923)

Don't assume too much in terms of playing nice with straight-up JAVA. I've been building a lot of interactive video projects (kinect interface with JSON queries to databases holding IP addresses, for mapping animations on spheres) and I've been using the Eclipse rather than the Proceesing IDE. There's a lot of weird shortcuts that the Processing IDE does to make it easy for n00bs (that's why I got into it ;) but once you start doing stuff with openGL, threading, or (most importantly for the OP) using fonts and UI elements, things get really convoluted. And the debugger blows.

Not to say you shouldn't do it-- but while the Processing learning curve is pretty easy, it gets quite steep when you want to incorporate more high-level functionality.

That said, there's a lot of libraries that will address most stuff you'll need in terms of UI elements-- controlP5 is one that deals with text fields, text boxes, etc, for instance.

Based on your requirements... (4, Insightful)

Anonymous Coward | more than 2 years ago | (#39106457)

...I would recommend a careful combination of watercolor and origami.

Re:Based on your requirements... (1)

retchdog (1319261) | more than 2 years ago | (#39106629)

really? based on those requirements, i think origami would be a bit much for him.

Re:Based on your requirements... (5, Funny)

Sulphur (1548251) | more than 2 years ago | (#39106709)

really? based on those requirements, i think origami would be a bit much for him.

The project might fold.

OpenGL (4, Insightful)

Spykk (823586) | more than 2 years ago | (#39106459)

If you need 3d and you are building your interface from scratch then you are probably going to want to use OpenGL in whatever language you are most comfortable with. Trying to bend an existing GUI toolkit into something it isn't designed to be will probably be more trouble than it is worth.

Re:OpenGL (4, Insightful)

timeOday (582209) | more than 2 years ago | (#39106821)

OK... but this will be a task of the same magnitude of, say, writing GTK+. OpenGL by itself takes pages of code to open a graphics context or put a string of text on the screen. GLUI/GLUT is a weak joke. If he manages to write this over OpenGL, and it's any good, it will be the first time anybody has written a decent GUI library over OpenGL.

Re:OpenGL (3, Interesting)

ZackSchil (560462) | more than 2 years ago | (#39106851)

This isn't true at all! It doesn't take "pages" of code to open a context and draw something, not even close. It is a poor choice though, since you're starting from absolutely nothing. You don't have a single resizable button control or any way to kern/reflow text for labels.

Re:OpenGL (4, Interesting)

timeOday (582209) | more than 2 years ago | (#39107053)

Here [codeproject.com] is the code to draw 3 triangles in OpenGL without an abstraction library such as GLUT (which is very limiting). Have fun with that!

For that matter, I had to look down to about the 8th page of google hits for "opengl hello world" to find one that did NOT use an abstraction library. Which tells you how many people actually do that. So, "use openGL" isn't much help. How about, "try using openGL throgh wxWidgets" or somesuch. Nobody uses straight openGL.

Re:OpenGL (3, Informative)

PaladinAlpha (645879) | more than 2 years ago | (#39107109)

The code you linked is written against the Windows API and most of the code on display is conforming to that. The OpenGL code takes up less than a screen.

GLUT is limiting because it's cross-platform; the limitation isn't in the abstraction but in the union of deployable platform features.

Re:OpenGL (2)

timeOday (582209) | more than 2 years ago | (#39107163)

That's right, without an abstraction layer, the initialization code for openGL isn't even cross-platform compatible. That is wgl code (for windows). The glx equivalent code (for X11) is at least as bad. So, double the above, smoosh it all together with some #ifdef's for something resembling platform independence, and you're good to go!

XUL (4, Informative)

La Gris (531858) | more than 2 years ago | (#39106463)

https://developer.mozilla.org/En/XUL [mozilla.org]

Multi-platform with Xulrunner, integration with HTML5 engine if needed.

Flash (2, Interesting)

Anonymous Coward | more than 2 years ago | (#39106465)

This is probably going to draw some heat, but frankly, it sounds like using Flash and ActionScript 3 may be a good fit for the prototyping work. You probably wouldn't want your final deliverables that way, but as a prototyping framework, you could get pretty far with it.

I'm not sure what the state of Flash's 3D support is these days, but I know that back in the day when I used to work with it more heavily (about 8 years ago) there were things like Swift3D that you could export 3D models from applications like Lightwave and bring them into Flash. Although I think this was less from a data-driven standpoint and more from an animation standpoint, but that may have evolved since then - I simply don't know.

AFAIK there shouldn't be any problem with you open sourcing AS3 code. And while the Flash IDE itself is commercial, you can get an AS3 compiler from Adobe for free and just write everything in AS3, although you wouldn't have the ease of use of the IDE itself for drawing on the stage, doing keyframe animation, etc. But that may not matter to you.

Flash has a plethora of UI components and modules out there that are free (and some commercial, too) that you can use. It ships with many re-usable components to add things like collapsable lists, windows, text editing fields, etc. It also has some sugar to make working with data easier, though personally I always preferred writing clean AS directly.

Full disclosure: I haven't bothered with Flash in at least 3 or 4 years now, but based on my current knowledge it still sounds like a potential fit. Haters are gonna hate no matter what, so don't let all the negative hype get in your way of using it in a controlled environment as a prototyping system. After all, a prototype is just a prototype, not the finished product.

Re:Flash (3, Informative)

epyT-R (613989) | more than 2 years ago | (#39106783)

flash is a bloated mess. might as well use java/.net at that point, but even guis built on these lag noticably more than native. how about using existing toolkits that target your platforms? if you want a wrapper, use something like wxwidgets. if your goal is something that wxwidgets won't handle well, then maybe your application's needs are specific enough to warrant explicit targeting of platforms (ie a windows target, a *nix target, etc).

Re:Flash (-1)

Anonymous Coward | more than 2 years ago | (#39107073)

I hate you. Flash is awesome, I've seen so many cool things people have brought to life with it over the past decade that haters like you can fuck off. It's bloated? So what, doesn't bother me none. It's not running the computer that controls my car, it's playing games and bringing awesome artwork to life.

Re:Flash (1)

Anonymous Coward | more than 2 years ago | (#39106887)

I agree that AS3/Flash would be perfect for this project. It already has GUI framework components and event handling built-in, but it is easy to write new components from scratch too. In addition the IDEs are very mature, and AS3 source code is very similar to Java.

Re:Flash (2)

TheInternetGuy (2006682) | more than 2 years ago | (#39106929)

ull disclosure: I haven't bothered with Flash in at least 3 or 4 years now,

If you had, then you would have known that there has been loads of progress on 3D in the last year or so. Used in combination with Flex UI framework (which is the only reasonably mature UI frame work I have seen that allow 3D transformations to it's UI components). And the hardware accelerated Stage3D with AGAL can give you lots of power to push polygons if that is what gets your juices flowing.
After hating on flash for a long time, they are slowly reeling me in and I am starting to realize that the main problem with flash is actually more what content creators have been using it for than anything else.
The OP stated this was for demo/quick and dirty work. Otherwise there might be concerns about memory and read-write performance of huge data sets. Although I have been positively surprised in this area lately as well.

Some ideas (4, Insightful)

mikera (98932) | more than 2 years ago | (#39106473)

1. Processing (http://http://processing.org/) is great for visualizations, worth a look. It's used a lot for interactive visualisation tools

2. Clojure is a great option for general purpose prototyping. It has the advantage of being able to use all the Java libraries and tools, but on top of that is an excellent modern dynamic programming language with great code-generation capabilities. It's great for creating DSLs, for example there is a Clojure GUI library called seesaw that defines UIs like this:

(frame :title "Hello", :content "Hello, Seesaw", :on-close :exit)

Python with wxWidgets (5, Interesting)

ikedasquid (1177957) | more than 2 years ago | (#39106475)

I don't always write GUIs, but when I do, I prefer wx. But in all seriousness - I hate writing GUIs. I write embedded C for a living and am lost when it comes to the differences between window manager(s) on Linux or Windows or whatever. When I need to whip something up quick (and it's not embedded, and we're not going to sell it) sometimes I switch over to Python, and if that quick thing needs a GUI, wxPython (the port of wxWidgets from C to python) is something you can tack on there with minimum hassle. If you need a portion to be fast for your math calcs or whatever you can write that part in C. There's a boatload of tutorials via google (and youTube).

Re:Python with wxWidgets (2)

Hooya (518216) | more than 2 years ago | (#39107105)

> I don't always write GUIs, but when I do, I prefer wx.

After that line, I swear I heard "stay thirsty my friends".

One for all "best language" questions (3, Informative)

JoeMerchant (803320) | more than 2 years ago | (#39106477)

Use the language your developers know. If they say the problem is too hard in the language they have been using, maybe you need new developers?

Seriously, C++ is pretty awesome, for me, I use it for lots of rapid gui design - mostly with Qt, but it sounds like you'll be crunching some of your own 3D...

Speaking of Qt, what about QML? (4, Informative)

MrEricSir (398214) | more than 2 years ago | (#39106579)

What about QML [wikipedia.org] ? It's designed for rapid prototyping, it's cross platform, and you can extend it with C++.

Qt and open source (5, Informative)

Anonymous Coward | more than 2 years ago | (#39106519)

Well, Nokia open sourced Qt under the LGPL 2-3 years ago. I am a Nokia systems engineer. We are still the primary maintainers, but we are committed to keeping it that way (open source), and with the current moves of the company toward Windows Mobile on our high-end phones, we may well be considering pushing it out to the community entirely, but with some resources still assigned to it. I don't know for sure, but I'll try to find out what the plans are for it. Qt is an important part of our Meego and Symbian phones, which are still popular and getting a few new models. My own company phone is an N8 Symbian device.

Re:Qt and open source (3, Informative)

Simon80 (874052) | more than 2 years ago | (#39106551)

For clarity regarding the original post, this means that Qt has been freely available for commercial use for the last few years.The LGPL is the same license that is used by glibc on Linux, so if you release commercial software for Linux, you will be using LGPL code anyway unless you deliberately avoid it. Unless you statically link an LGPL-licensed library, the licensing requirements are pretty easy to fulfill.

Re:Qt and open source (-1)

Anonymous Coward | more than 2 years ago | (#39107119)

My own company phone is an N8 Symbian device.

Lumia 900/Ace is where it is at! Anyways, I don't think it is constructive for you, as a Nokia Employee, to be providing these type of comments. Most companies like to keep communications within official channels so that they can control the message/damage control if needed. Going cowboy and trying to free some information is just as bad as the people who are leaking our phones before they are released. And yes, I did say "our".

Just create (5, Funny)

PenquinCoder (1431871) | more than 2 years ago | (#39106523)

A GUI in Visual Basic. I hear its good for this internetz stuff.

When I think of a quick GUI project, C#. (1)

Anonymous Coward | more than 2 years ago | (#39106539)

And not because C# is 'superior' or anything like that.
The basics are easy to learn (for C++ or Java programmer).
But more importantly it is the integration with Visual Studio. Netbeans, Eclipse, KDevelop are all a distant 2nd compared to the ease of development in Visual Studio. Besides, I think you need a i7 Extreme edition to run Eclipse....
WYSIWYG development. Drop in a button, anywere you want, then start using it.
For 3D and graphics you have WPF, XNA and a little off the reservation, stuff like SDL.NET.

I personally enjoy how they blended the Visual Basic stuff in. Enumerators make for some interesting code when you use them like rate buffers. I hate most multi-threaded programming. 15 years ago I thought it was cool. Now I've come to realize that it has ruined most applications. Which is why I personally believe most Java applications suck. Because the only solution that the novices seem to come up for any requirements seems to be spawn a thread and have it do whatever is required. You end up with programs that are either non-responsive, or worse, the response is variable - click a button, nothing happens, click again, then it suddenly happens twice. Ugh. I built programs on 133Mhz Pentiums that were better. If you can avoid garbage collection, learn how to use enumerators to pull data as needed, it makes for snappy programs.

Re:When I think of a quick GUI project, C#. (3, Insightful)

Big Smirk (692056) | more than 2 years ago | (#39106581)

One big negative on C#. Your code ends up looking like Visual Basic.
You end up with single files with massive amounts of code. I've seen C# files with thousands of lines of code. Each button, each rule for the button etc. and they are not grouped by any rhyme or reason. The are simply tacked on the bottom as the next function. Thankfully Visual studio helps you find everything.

Makes code walk throughs either hit or miss (did we go through all the functions on that button?) or scatter brained (function 1 - start button, function 2 - dialog box, funtion 3 - menu item).

Re:When I think of a quick GUI project, C#. (2)

adonoman (624929) | more than 2 years ago | (#39106605)

This is better now with partial classes. All the designer generated stuff goes into it's own file that shows up as a sub-file of the main file. You're free to split up the classes into whatever groupings you want. With WPF and XAML you have even better separation of logic and design.

Re:When I think of a quick GUI project, C#. (3, Interesting)

mikera (98932) | more than 2 years ago | (#39106651)

Visual Studio with C# isn't very useful great for cross-platform development (which was one of the requirements of the OP)

Also I personally find that "visual" editors, while good for producing something quickly, aren't much use for more advanced GUI development where you need to do much more meta-programming, develop custom components and have detailed control over layouts and behaviour etc.

Even when I was using Visual Studio a lot (which I'm glad to have left behind), I tended to code all the GUI stuff by hand.

Re:When I think of a quick GUI project, C#. (3, Interesting)

rev0lt (1950662) | more than 2 years ago | (#39106703)

I think you need a i7 Extreme edition to run Eclipse....

The same one you need to run Visual Studio 2010? Not that I'm an Eclipse fan (I'm not), but VS is no speed beast by any metric, and it gets worse once you load external plugins, heavy components or are working with a medium codebase. That's one of the motives why I use SharpDevelop.

when I think of Microsoft paying teachers (4, Insightful)

decora (1710862) | more than 2 years ago | (#39106711)

to use Office products during classes in college, I think about how they wouldn't be above paying someone to spam slashdot with this stuff, over and over, even after the guy -specifically required portability-.

Re:When I think of a quick GUI project, C#. (2)

Surt (22457) | more than 2 years ago | (#39106809)

Trolling, or omitted IDEA because it embarrasses visual studio so badly?

LOGO (1)

drfreak (303147) | more than 2 years ago | (#39106545)

Isn't that vector-drawing in a nutshell?

Take a Good Luck at Delphi and FireMonkey (4, Interesting)

Ronin Developer (67677) | more than 2 years ago | (#39106547)

Yes...I know...Pascal..Ugh (it's a shame so many people under rate Delphi's Object Pascal). But, Embarcadero Delphi will enable you to build FireMonkey based apps that can run on Mac, Windows and iOS. FireMonkey still has a ways to go. However, if you look at the whitepapers posted on the Embarcadero.com website, you will see some interesting stuff. FireMonkey is evolving. Once of the nice things is that it can use the GPU vs the CPU for rendering. This makes 2D and 3D rendering a piece of cake. Additionally, FireMonkey controls can (and should be) stylized. The number of effects one can achieve for a simple button is amazing. Imagine what one can do in terms of designing new UI paradigms.

Are are some blog on using FireMonkey to render functions and demonstrate wave interference (in 3D).
http://blogs.embarcadero.com/ao/2012/02/02/39215/
http://blogs.embarcadero.com/ao/2012/01/30/39208/
http://blogs.embarcadero.com/ao/2012/01/27/39206/

and, for a commercial product by TMS Software http://blogs.embarcadero.com/davidi/2012/02/07/41510/

FreePascal w/ Lazarus is another way to experiment (and, get Linux and ARM as target environments as well). FireMonkey for iOS depends on the ARM compiler to bring the apps to iOS (at least until Embarcadero writes their own ARM compiler).

Granted, the tool isn't cheap. But, if you have the budget, it's worth adding to your tool bag.

Another alternative is getting intimately family with JQuery and the DOM. There is a lot you can do to experiment with new UIs.

Re:Take a Good Luck at Delphi and FireMonkey (0)

Anonymous Coward | more than 2 years ago | (#39106601)

I am a delphi/ObjectPascal developer, have used it for years, and while Firemonkey is an impressive release, it's a 1.0 technology. If the goal is to ship yesterday, Firemonkey isn't totally ready for the bigtime yet. Maybe in a year's time it will be. But it's truly the only professional 3D framework that is NOT designed for games, but rather from the ground up for business use.

It's cool stuff, but (A) the OP is looking for open source stuff, so the whole app can be redistributed and built by anyone from source, and (B) seems to be interested in C-like languages (Java, etc) only.

W

Re:Take a Good Luck at Delphi and FireMonkey (0)

rev0lt (1950662) | more than 2 years ago | (#39106725)

And let's not forget the habit of discontinuing Delphi products (Kylix anywone?), or having years pass by without a useful update, and lack of a long-run clear vision: I'd used to love Delphi, and still have some application codebases on it, but we never know when the next release will be and what they will break next.

Re:Take a Good Luck at Delphi and FireMonkey (1)

codepunk (167897) | more than 2 years ago | (#39106789)

Did anyone mention anything about borland delphi, or code gear or whatever is left of them?

We pointed the man to open source alternatives.

Re:Take a Good Luck at Delphi and FireMonkey (1)

codepunk (167897) | more than 2 years ago | (#39106661)

Yes lazarus would be a good choice given his requirements.

opendx (0)

Anonymous Coward | more than 2 years ago | (#39106573)

good luck with that.... as a coder i'd just use opendx [ocean.dal.ca] , make it work properly(not an easy task), and show some results quickly, less effort and you will have fun with the data.

Groovy and Griffon (1)

Foofoobar (318279) | more than 2 years ago | (#39106575)

For those who love how Groovy/Grails makes Java less verbose and its convention over configuration approach, I highly recommend Griffon. It can work with Swing, AWT, QT or whatever you want to use and is very clean, simple and easy to understand and is based on tried and true technologies and libraries.

Re:Groovy and Griffon (1)

tobiah (308208) | more than 2 years ago | (#39106817)

How well does it eat gigabyte files? I'm thinking not very well.

Processing ftw (4, Informative)

foniksonik (573572) | more than 2 years ago | (#39106583)

http://processing.org/ [processing.org]

It's been ported to nearly every language, does 2d and 3d, has a straightforward syntax and lots of math libraries, physics engines, etc etc.

Javascript (5, Informative)

Anonymous Coward | more than 2 years ago | (#39106591)

As someone with experience with just about every major programming language. I'd seriously consider Javascript. Rather than "Embedding" something to render HTML, embed your special sauce in an HTML5 Canvas. Specifically consider writing it as a Chrome App. Not only will it be fast you'll automatically have a standard platform to release your work onto, no installer, no pain in pushing out updates as your work evolves.

See some examples here: http://net.tutsplus.com/articles/web-roundups/21-ridiculously-impressive-html5-canvas-experiments/

JSON is becoming the defacto data interchange format used by just about all web services and Javascript can also be used on the backend via node.js. You or anyone you're working with can easily learn javascript from places like http://www.codecademy.com/. Plenty of IDE support, but Chrome itself provides excellent debugging tools via "Inspection" and a javascript console which can be used as a rapid prototyping shell.

As an added bonus, javascript provides the best of both functional and object oriented programming, and just about every decent programmer knows javascript or can learn it easily.

Re:Javascript (3, Interesting)

Outtascope (972222) | more than 2 years ago | (#39106735)

I'd seriously consider Javascript.

As an added bonus, javascript provides the best of both functional and object oriented programming, and just about every decent programmer knows javascript or can learn it easily.

For varying definitions of the term "best". Shoot me in the head before I take on the nightmare of debugging a project like this written in Javascript. The thought of it truly makes me *cidal. (where * is sui and/or homa)

Use .NET (-1)

Anonymous Coward | more than 2 years ago | (#39106623)

Forget about cross-platform bullshit, just download a free copy of the Express edition of C#.NET or even VB.NET. The visual studio IDE gives you a good set of controls and components to work with, and if you want to draw your own then you can do that too. The form designer is WYSIWYG. There's a decent library of code for you to paint your controls however you like (pixel by pixel if you have to), and if you are writing custom controls then usually your custom-drawing works in design view as well as at runtime. As far as the actual code goes, there're plenty of good libraries built in, and Intellisense makes it so you don't have to have an extra few browser windows open to library documentation in order to bang out some working code quickly.

QT controls are not designed with either the user or the UI designer in mind (and they're not easy to learn to program for, either). AND, they're ugly! Designing layouts with QT seems to be built around a philosophy that the application developer should not actually have much control over how the controls are rendered at runtime, but the end user should somehow understand how to reconfigure everything about the application's visuals to his liking. Plus, as much as nobody wants to hear it, no cross-platform IDE holds a candle to a vendor provided solution such as Visual Studio or Borland's very fine offerings.

(I would be talking up Borland product here instead of Microsoft's, as I did much professional work using Delphi over a decade ago, but in more recent times the Express editions of Visual Studio made me a convert.)

Nyet, Use Qt (1)

Dragon Bait (997809) | more than 2 years ago | (#39106989)

QT controls are not designed with either the user or the UI designer in mind (and they're not easy to learn to program for, either). AND, they're ugly! Designing layouts with QT seems to be built around a philosophy that the application developer should not actually have much control over how the controls are rendered at runtime, but the end user should somehow understand how to reconfigure everything about the application's visuals to his liking. Plus, as much as nobody wants to hear it, no cross-platform IDE holds a candle to a vendor provided solution such as Visual Studio or Borland's very fine offerings.

I admit to not having used Visual Studio in a while -- and I have never used .NET. I have programmed extensively using the Qt framework and find your comments about Qt to be completely off the mark. If you want to control your Qt widgets programmatically, you can. If you want to "skin" them with CSS, you can. If you want to drag-and-drop design your layouts, you can.

I'm old school -- I code everything by hand and find Qt to be very simple and straightforward to use. I also have found that I can have complete control over my widgets. If you don't want to use QLayout (QGridLayout, QHBoxLayout, QVBoxLayout, ...) then just implement QResizeEvent and take pixel level control over where your widgets to go and what their sizes are.

Having used MFC (yes, I'm showing my age), I find that the Qt approach is far more powerful. The signal-slot mechanism for inter-object communication decouples class dependencies offering a much cleaner design. The event propagation through the class hierarchy is another sound approach. I find overall classes are much simpler to manage with far less inter-class dependencies.

I am not a professional software developer (1)

Osgeld (1900440) | more than 2 years ago | (#39106625)

WXlua lua fltk, wxpython, processing (java)

"I am not a professional software developer" (4, Insightful)

c0lo (1497653) | more than 2 years ago | (#39106631)

That explains:

Swing does in Java. (Boxes in boxes in boxes, Oh My!)

Oh my, is that what it troubles you? Let's see...

draw what I want, where I want and make any surface of that 3D object become a source for capturing events;

And you want to do this without imposing any hierarchy (of the type "boxes withing boxes") on the 3D object's surface, yes? Assuming that it is possible, once the event is generated, how would you implement the event processing if you can't discriminate on the type of your "event source"?

I do OK with Java and prefer it, though I still have to look up every API before I use it

Looking into every API, you say. And you say you'd like to finish looking in this life, so that you could do something?

My advice for this case: the shortest path to destination is the one you already know. Otherwise, if you don't plan to become a professional software developer, hire one.

Re:"I am not a professional software developer" (0)

Anonymous Coward | more than 2 years ago | (#39106793)

And you want to do this without imposing any hierarchy (of the type "boxes withing boxes") on the 3D object's surface, yes? Assuming that it is possible, once the event is generated, how would you implement the event processing if you can't discriminate on the type of your "event source"?

Why do you need a hierarchy to have an event source? Maybe each piece of data is an event source. Maybe the data is "drawn on the 3D surface" because it matches some criteria which can change over time and has no impact on the behaviour of interacting with the data. Whatever! Given that one of the areas of research is developing new UI components it seems reasonable to want to do away with the standard models (or at least not be restricted to them).

I do OK with Java and prefer it, though I still have to look up every API before I use it

Looking into every API, you say. And you say you'd like to finish looking in this life, so that you could do something?

Looking up every API before they use it only implies they will look into API they are going to use. If your going to be a pedantic jerk you at least be an accurate pedantic jerk.

Re:"I am not a professional software developer" (3, Interesting)

c0lo (1497653) | more than 2 years ago | (#39107043)

And you want to do this without imposing any hierarchy (of the type "boxes withing boxes") on the 3D object's surface, yes? Assuming that it is possible, once the event is generated, how would you implement the event processing if you can't discriminate on the type of your "event source"?

Why do you need a hierarchy to have an event source? Maybe each piece of data is an event source. Maybe the data is "drawn on the 3D surface" because it matches some criteria which can change over time and has no impact on the behaviour of interacting with the data. Whatever!

Unless he asks for a holographic GUI, when interacting with a 3D projection in 2D, one will need to solve 2 problems:
1. data presentation and exploration - you know, like rotating the POV, zooming in/out, etc. Believe me, it is necessary
2. Interaction - even if only the selection of one sample point.

You'll need to distinguish then between an event that doesn't have the subject a sample (like a navigation gesture) from an event that have the subject a data point.
But... as you say... whatever.

Given that one of the areas of research is developing new UI components it seems reasonable to want to do away with the standard models (or at least not be restricted to them).

Huh? Developing new UI components in the context of "I am not a professional software developer and never have any aspirations to become one" ? Go away, I wonder why I'm bothering to answer to AC trolls.

Re:"I am not a professional software developer" (2, Insightful)

Anonymous Coward | more than 2 years ago | (#39106919)

You wrote a much nicer version of what I was going to say. This guy doesn't know what in hell he's talking about, and suggesting a language or API to him is like suggesting which particular brand of rifle someone should use when you know they're just going to accidentally fire it when they decide to see if the barrel is clean.

Stick with Java (4, Funny)

glwtta (532858) | more than 2 years ago | (#39106649)

Are you really going to have time to learn something new with all that groundbreaking paradigm shifting you'll be doing?

Leverage your core competencies to push the envelope on impactful best practices, and hit the ground running - it's a win-win!

Synergy.

Physion uses some Qt variation, I think... (0)

Anonymous Coward | more than 2 years ago | (#39106653)

Subj sez it all... Cf Physion.net for details (I didn't notice any src being offered there...)

Of beat possibilities... (2)

Panaflex (13191) | more than 2 years ago | (#39106659)

You might look at some game engines, they have decent GUI's these days and are designed to handle large data sets. They usually have multi-lingual support also so you can work in a few languages.

I did a few projects in Irrlicht and ogre3d and was really impressed - I was able to work in Java, C# and C++ in the same project with some work and message passing.

Good luck

GWT (2)

CyDharttha (939997) | more than 2 years ago | (#39106681)

GWT [google.com]

does anyone know wtf he's talking about? (1)

decora (1710862) | more than 2 years ago | (#39106693)

"Devising entirely new graphical user interface elements, mostly in 2D, though often in a true or simulated 3-D space"

"This will combine some of the GUI elements invented in (1) as well as displaying standard HTML or HTML5 content via a browser engine"

Re:does anyone know wtf he's talking about? (1)

Osgeld (1900440) | more than 2 years ago | (#39106759)

VRML

Re:does anyone know wtf he's talking about? (1)

tobiah (308208) | more than 2 years ago | (#39106831)

I was going to say "yes", but that's not what I was thinking.

Re:does anyone know wtf he's talking about? (2, Insightful)

Anonymous Coward | more than 2 years ago | (#39106805)

"Devising entirely new graphical user interface elements, mostly in 2D, though often in a true or simulated 3-D space"

"This will combine some of the GUI elements invented in (1) as well as displaying standard HTML or HTML5 content via a browser engine"

What is he talking about? The same sort of bullshit every toolbag who's never studied the history of UI design think of - imagine every craptacular "3D" interface that you've ever seen in a movie. The key tipoff: bragging about "very, very LARGE" data while insisting that they don't want to be a programmer. Utter horseshit.

QT (4, Interesting)

BravoZuluM (232200) | more than 2 years ago | (#39106719)

You dismissed the one framework that would do what you want. LGPL and if really necessary, Digia does not charge that much for a commercial license. I've been doing cross platform work for 20 years. Java was my first foray. Star Framework (Star Office was written with this) was a pretty good framework. But QT beats them all hands down.

Expressive versus easy-to-learn (4, Interesting)

Okian Warrior (537106) | more than 2 years ago | (#39106737)

If you want demonstrations and "proof of concept" stuff, you want a language which is expressive, not a language which is easy to learn or which generates heavily optimized code.

In the demo phase, you're not really worried about performance. The goal is to have something showing as quickly as possible, and not worry too much about how fast it runs, or how much memory it takes. Overspec your demo system for the time being (ie - make it really fast and install lots of memory), and once you have a reasonable interface go back and recode it in a simpler language which can be more easily optimized.

Languages which are simple to learn (c++, for example) are generally not very expressive. You end up wasting tons of time debugging issues of memory allocation, library interface details, and datatype conversion.

Languages which are expressive are a little harder to learn, but any individual line in the expressive language does a lot more. Since you are writing fewer lines, and since the fewer lines do more, you end up making programs more easily and in less time.

Yes, the programs will execute a little slower, but as mentioned, this is not important in the demo stage. Your productivity will be much higher.

Perl was written by a linguist, not an engineer. As such, it's harder to learn (it's got tons more keywords and context), but once you get the hang of it it's much more expressive. The following single line:

@Lines = sort { $a->{Name} cmp $b->{Name} } @Lines;

unfolds into several lines of C++, plus a subroutine definition with datatype definitions. The following line:

@Files = <c:/Windows/*.exe>;

can be implemented using one of over a dozen possible library calls in C++, but is builtin in perl. You don't have to look up the library call interface specific to your system.

I hear that Python is also expressive, although I don't use it.

Re:Expressive versus easy-to-learn (0)

Anonymous Coward | more than 2 years ago | (#39106857)

not sure which universe you live in where c++ is simple and perl is difficult. Anyone who can code can write perl, that's one of its main strengths. c++ generally takes years to be able to develop the knowledge to even understand how things like functors and binders interact with stl containers and how powerful a few lines of templates can be. And that's before C++11 which I think could get your perl examples down to one line if you really wanted to.

Re:Expressive versus easy-to-learn (4, Informative)

icebraining (1313345) | more than 2 years ago | (#39106941)

An equivalent in Python would be:

lines = sorted(lines, cmp = lambda a, b: cmp(a.name, b.name))

Alternatively (faster, but less similar):

lines = sorted(lines, key = lambda line: line.name)

Of course, if the class implements the __cmp__() method, you can just do lines.sort().

Qt license issues (0)

cstec (521534) | more than 2 years ago | (#39106745)

One quirk to be aware of with Qt. Once you do work with it in the LGPL, then you can never upgrade that work to a commercial license, thus even experimenting with it carries risk.

Who wants a commercial license you ask? Ignoring the pricetag, without a commercial license you can't static link the Qt libs. So if you want a mobile Qt app, your say 150k program will have to come with 11Mb of 'library', which has been enough to blow some mobile app store limits (to say nothing of how much your end users will appreciated it.) Unless Qt's already supported on the platform, so that gets you ... Symbian.

Re:Qt license issues (1)

Anonymous Coward | more than 2 years ago | (#39106981)

One quirk to be aware of with Qt. Once you do work with it in the LGPL, then you can never upgrade that work to a commercial license, thus even experimenting with it carries risk.

Who wants a commercial license you ask? Ignoring the pricetag, without a commercial license you can't static link the Qt libs.

What are you talking about? I think you are confused.

Droid (1)

rsilvergun (571051) | more than 2 years ago | (#39106763)

either that or (god help me) Silverlight + C#/VB. Both do a really good job of separating GUI & program logic, and both have easy access to high performance display libraries (opengl for Droid, directx for Silverlight). I'm working on a combination Droid/Sliverlight app where the front end user data stuff runs off Android and the backend creations tools are in Silverlight. Oh, both have the added value of being free to develop on.

Why Html (the language of commercial ads)? (0)

Anonymous Coward | more than 2 years ago | (#39106765)

I'm sure you won't like opencobalt.org since it's not biased towards Html ...

I Am A Greybearded Curmudgeon (1)

Anonymous Coward | more than 2 years ago | (#39106775)

Programmers stopped being programmers when they stopped talking about what algorithms they should use and started going on about what languages and IDEs and APIs they should use.

Re:I Am A Greybearded Curmudgeon (1)

Eponymous Coward (6097) | more than 2 years ago | (#39106965)

You may want to get yourself checked out for Alzheimers. Programmers have always loved to talk and argue about their tools, or have you forgotten about the whole vi vs emacs debate that has been raging for 35 years now.

Re:I Am A Greybearded Curmudgeon (3, Insightful)

greg1104 (461138) | more than 2 years ago | (#39107057)

vi vs emacs? Please. Real greybeard curmudgeons argue over the best set of TECO macros to use, and about whether editing on a full screen really makes sense.

doesn't exist (1)

tobiah (308208) | more than 2 years ago | (#39106795)

I've been following the protyping languages closely, looking for a better and more open option than Matlab. I haven't found it, but in the process of writing a book on scientific prototype-to-product development, I'm getting a better idea of what this language/environment should do.

Re:doesn't exist (0)

Anonymous Coward | more than 2 years ago | (#39106885)

Mathematica

3D Studio Max (1)

stanlyb (1839382) | more than 2 years ago | (#39106869)

Short answer.

Matplotlib (5, Interesting)

mchnz (457843) | more than 2 years ago | (#39106881)

Python Matplotlib covers some of what you might be interested in and it can be used with other GUI toolkits see http://www.scipy.org/Cookbook/Matplotlib and http://matplotlib.sourceforge.net/ - at the very minimum it might provide some food for thought about the feature-set you're seeking.

sencha/extjs (0)

Anonymous Coward | more than 2 years ago | (#39106905)

worth a look anyway...
http://sencha.com
http://www.sencha.com/products/extjs/
http://www.sencha.com/products/extgwt/

The case for iOS (1)

SuperKendall (25149) | more than 2 years ago | (#39106907)

I know you said cross platform but...

iOS offers you touch sensitive pane of any size (UIView), onto which you can put any controls you want - then you can apply a 3D transform.

You can group the views (place one view inside another and move the whole unit). You can apply alpha to any view, arbitrarily block or accept input on any surface. Any of the views can be an OpenGL surface itself for more advanced rendering.

You can draw bitmaps into views, or also use a vector based system to place shapes in views which the system will render with high levels of performance.

On top of all that you can also easily animate many properties of views, allowing motion to easily and smoothly factor into your UI.

To my mind iOS is a pretty awesome system for exploration of alternative UI's, which I have been thinking about myself for a long time...

Squeak/Croquet? (1)

martin-boundary (547041) | more than 2 years ago | (#39106909)

Isn't this what Croquet [wikipedia.org] was designed for? Does anyone have experience with it?

Don't knock it (0)

Anonymous Coward | more than 2 years ago | (#39106957)

Don't knock it, but for fast, easy and deployable experimental UI work, give Flash a shot. The Flex UI toolkit can be used (and skinned) for custom looks, or completely ditched for the Flash display tree. It works everywhere (except cell phones, heh).

Approaching Flash development with Flex Builder as a C/C++ guy, ended up being extremely easy (ActionScript 3 is somewhere between C/C++ and JavaScript, with most of the nice features of both, with only a few of the ugly bits).

Flex is open source these days too (the platform isn't however).

Paint (0)

Anonymous Coward | more than 2 years ago | (#39107001)

Since it sounds like you are uninterested in programming (and talking about 'prototyping' significant/difficult functionality), why not play with ideas at a much more prototypical level. Your favorite painting/drawing tool (could even be non-electronic!) or something like PowerPoint could allow you to try out ideas much quicker. I've seen some pretty good mock-ups through PP that showed an entire user flow for some specific functionality.

For 3D, specific 3D drawing/rending tools would obviously be part of the toolchain as well.

Classical language! (0)

Anonymous Coward | more than 2 years ago | (#39107009)

"Sanskrit" is the best candidate for this.

Lazarus (4, Interesting)

DMFNR (1986182) | more than 2 years ago | (#39107013)

My suggestion for you would be to check out Lazarus and Free Pascal. Lazarus is a cross platform and open source clone of Borland's (or whoever the hell own the company now) Delphi. Free Pascal is the compiler it uses, and it is pretty damn close to source compatible with Delphi, and also provides compatibility modes for other Pascal dialects as well, including it's own Object Pascal mode which fixes some of the stupid design decisions in the Delphi version of Object Pascal. The compiler itself has very speedy compilation times compared to C++ compilers, and generates decently quick code as well. The compiler itself is very mature and well maintained, and it gaining new features all the time. Lazarus is the IDE, which provides you with a RAD environment to quickly piece together the UI, and it is packed with all kinds of awesome features. The LCL, it's supporting library, wraps all of these functions up in a way that makes it very easy to deploy cross platform applications. It covers OSX, Linux (GTK+ and Qt), and Windows. The Free Pascal compiler can compile code for many more platforms, and has in fact supported some even before GCC. If you stick with the LCL, just about everything is covered between platforms and it uses the native components of the platform it is compiled for. It has a very healthy community, with plenty of bindings for all different kinds of libraries. It also provides a good method for creating custom components and reusing them, allowing you to install them in to the IDE and drag and drop them in the form designer just like you would with a standard button or text box. I've never done any stuff with 3-d graphics, but there's all kinds of OpenGL stuff available, and anything you can do in the native widgetsets you can do with Lazarus. The issue with Lazarus is that the IDE is still beta, and there still are a few bugs here and there, but they are fixed pretty quick, and there aren't any major show stoppers. The big issue is that it uses GDB for debugging (there is a native Object Pascal debugger in the works, but it won't be finished anytime soon), which is really aimed towards C based languages, so debugging isn't always smooth. Most of the basic tasks, like setting breakpoints and stepping through a program/function work fine, but there are a few issues with the differences between Pascal datatypes and C datatypes that can make things confusing.

The reason I recommend this tool is because even though it doesn't have a massive ecosystem like C++, it is coherent and works very well between platforms. The Object Pascal language is very easy to learn, it's powerful, and well designed. While not as fast as C or C++, is you look at the alioth debian language shootout page, it is pretty quick compared to other languages. It provides access to all of the familiar C library functions, and includes all kinds of stuff in the language for compatibility with the C language. It's not the old Pascal from the Turbo Pascal days that people like to bash, almost all of the complaints I hear about the language itself were taken care of a decade ago. The only issue I can really think of is that the language can be a bit verbose compared to C, but compared to Java it's pretty succinct.

Why not WPF? (0)

Anonymous Coward | more than 2 years ago | (#39107021)

I've never used a language better than WPF for experimenting with unconventional GUIs, even with very large datasets. You can create both 2D and 3D designs quickly using imported data from Illustrator or any vector graphics and turn them into usable controls easily, with practice. It encourages you to objectify everything, which is great when doing quick GUI mockups, in case one of them is selected so you don't have to rewrite the hacked code you had before.

I know people love their open-source here on slashdot, but WPF is just awesome for GUI design.

Give JavaFX a go (1)

Anonymous Coward | more than 2 years ago | (#39107063)

JavaFX is worth a look. It's now a Java library, works really well. At present it's supported on Windows, and is close to general release on Mac (it works well in OS X 10.7), and just released in beta for Linux. I have written some pretty complicated UIs in JavaFX, so speak from personal experience.

Boxes in swing? (1)

Anonymous Coward | more than 2 years ago | (#39107113)

Not that I would recommend swing as the greatest option for prototyping, but the boxes within boxes issue that you describe has nothing to do with Swing itself, but with your layout manager. If you use the built in layout managers, sure, you will have those issues: I tend to only use BorderLayout out of those, and that's under duress. There's other options for layouts that do away with the problem. If you are using a graphical editor for your layout, there's FormLayout by JGoodies. If you want to lay it all down in code, there's MiGLayout instead.

Anything with Lua embedded (0)

Anonymous Coward | more than 2 years ago | (#39107139)

There are plenty of 3D engines with Lua scripting [sourceforge.net]

Load More Comments
Slashdot Account

Need an Account?

Forgot your password?

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>
Create a Slashdot Account

Loading...