Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
GUI Programming

Best Language For Experimental GUI Demo Projects? 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."
This discussion has been archived. No new comments can be posted.

Best Language For Experimental GUI Demo Projects?

Comments Filter:
  • Processing (Score:5, Informative)

    by Deathnerd ( 1734374 ) on Monday February 20, 2012 @11:14PM (#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
  • XUL (Score:5, Informative)

    by La Gris ( 531858 ) <[lea.gris] [at] [noiraude.net]> on Monday February 20, 2012 @11:15PM (#39106463) Homepage

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

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

  • by JoeMerchant ( 803320 ) on Monday February 20, 2012 @11:16PM (#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...

  • Qt and open source (Score:5, Informative)

    by Anonymous Coward on Monday February 20, 2012 @11:22PM (#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.

  • by Simon80 ( 874052 ) on Monday February 20, 2012 @11:29PM (#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.

  • by MrEricSir ( 398214 ) on Monday February 20, 2012 @11:35PM (#39106579) Homepage

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

  • Processing ftw (Score:5, Informative)

    by foniksonik ( 573572 ) on Monday February 20, 2012 @11:38PM (#39106583) Homepage Journal

    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 (Score:5, Informative)

    by Anonymous Coward on Monday February 20, 2012 @11:39PM (#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:Processing (Score:5, Informative)

    by retchdog ( 1319261 ) on Monday February 20, 2012 @11:43PM (#39106621) Journal

    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:Flash (Score:4, Informative)

    by epyT-R ( 613989 ) on Tuesday February 21, 2012 @12:13AM (#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).

  • by icebraining ( 1313345 ) on Tuesday February 21, 2012 @12:46AM (#39106941) Homepage

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

  • Re:OpenGL (Score:4, Informative)

    by PaladinAlpha ( 645879 ) on Tuesday February 21, 2012 @01:17AM (#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.

  • by Rei ( 128717 ) on Tuesday February 21, 2012 @01:40AM (#39107215) Homepage

    Ohhh... right. Slashdot is stuck in the mid-1990s and can't handle Unicode properly. The letter that magically disappeared from my post is this [wikipedia.org].

  • by CadentOrange ( 2429626 ) on Tuesday February 21, 2012 @02:47AM (#39107477)

    On performance - frankly you are dreaming if you think wx and Qt run circles around iOS UI elements, which have all the rendering accelerated by the graphics hardware (since every view is really a plane in a 3D world!).

    Qt renders its widgets using any available 3D hardware. wxWidgets uses native controls, so on the Mac there's nothing stopping you from using wxCocoa which should presumably be equally hardware accelerated as a native Cocoa app. The added benefit of these toolkits is that they're a lot more portable than Cocoa.

  • Re:use Qt (Score:5, Informative)

    by Daniel Phillips ( 238627 ) on Tuesday February 21, 2012 @03:23AM (#39107609)

    Absolutely, seconded.

    Without a doubt, QT is the reigning king of quick, pretty and cross platform GUI development. And of course you would do that with C++ if you want your code to be most widely portable, and to put your demo in the best light by starting fast and responding fast. But QT works well with many other languages, including having excellent Python support. Here is an idea: use Lua both to drive your demos and be the embedded scripting language at the same time. That would rock.

  • by martin-boundary ( 547041 ) on Tuesday February 21, 2012 @03:52AM (#39107693)
      @Lines = sort { $a->{Name} cmp $b->{Name} } @Lines;

    In C++, this would be something like

    sort(lines.begin(), lines.end(), [](line_t *a, line_t *b) { return strcmp(a->name, b->name) < 0; });

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

    In C++, this is impossible as the concept of a filesystem with a directory structure isn't portable. But using Boost, you could do

    for_each(directory_iterator("c:/Windows"), directory_iterator(), [&v](directory_entry e) { string s= e.path().native(); if( ends_with(s, ".exe") ) v.push_back(s); });

    although maybe there's a simpler way.
  • Re:Processing (Score:4, Informative)

    by dkf ( 304284 ) <donal.k.fellows@manchester.ac.uk> on Tuesday February 21, 2012 @05:29AM (#39108063) Homepage

    Biologists. Sure they could program.

    I work with biologists. It's a very rare one that can program. Rarer still that they can program efficiently.

  • Re:Haskell !! (Score:4, Informative)

    by gtall ( 79522 ) on Tuesday February 21, 2012 @06:43AM (#39108359)

    While I do not think you should have been modded troll, I don't think Haskell is best suited for interface. Interfaces typically require a lot of state. Setting up state monads for all that would be painful. And then there's the GUI libraries, does Haskell even have those.

    On a more generic note, Haskell's ecosystem is not ready for prime time. Where are the debuggers? Don't feed me the function language crap, if you cannot produce a decent debugger for a language, no one will use it.

    The type system is wonderful, until something goes wrong. Haskell's feedback about where the type mismatch occurs and why is horrid.

"The one charm of marriage is that it makes a life of deception a neccessity." - Oscar Wilde

Working...