

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."
Speaking as a VC wonk... (Score:5, Funny)
Re: (Score:3)
It's an experimental GUI. Go with something unexpected, like Icelandic. Plus, the letter makes for better emoticons than P. Example:
.
. :
Re:Speaking as a VC wonk... (Score:5, Informative)
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].
Re:Speaking as a VC wonk... (Score:4, Funny)
Processing (Score:5, Informative)
Re:Processing and Java: not always play nice (Score:5, Interesting)
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.
Re: (Score:3)
Re: (Score:3, Interesting)
Try Piccolo, also known as Piccolo2D.
It's a ZUI (zoomable user interface) framework in Java. Essentially a 2D scene graph model, with event handlers for zooming, panning, tapping/clicking, etc. Nodes can be 2D vector graphics, or can contain bitmapped images, and standard Java UI controls.
http://www.piccolo2d.org/
Re:Processing (Score:4, Insightful)
Take another look.
Re:Processing (Score:5, Informative)
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: (Score:2, Funny)
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 (Score:4, Informative)
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.
Based on your requirements... (Score:4, Insightful)
...I would recommend a careful combination of watercolor and origami.
Re: (Score:2)
really? based on those requirements, i think origami would be a bit much for him.
Re:Based on your requirements... (Score:5, Funny)
really? based on those requirements, i think origami would be a bit much for him.
The project might fold.
Re: (Score:3, Funny)
really? based on those requirements, i think origami would be a bit much for him.
The project might fold.
But hey, at least it looked good on paper.
OpenGL (Score:5, Insightful)
Re:OpenGL (Score:5, Insightful)
Re:OpenGL (Score:4, Interesting)
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 (Score:5, Interesting)
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 (Score:4, Informative)
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: (Score:3)
Re: (Score:3)
Re: (Score:2)
OpenGL? The heck? You need some sort of a scenegraph on top of that. In OpenGL if you want to draw a fine circle, you have to tesselate it yourself. I presume that has been done enough times by now and you'd be insane to suggest that the OP goes to do it yet once again.
XUL (Score:5, Informative)
https://developer.mozilla.org/En/XUL [mozilla.org]
Multi-platform with Xulrunner, integration with HTML5 engine if needed.
Flash (Score:2, Interesting)
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 li
Re:Flash (Score:4, Informative)
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: (Score:2)
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 mai
Some ideas (Score:5, Insightful)
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 (Score:5, Interesting)
Re: (Score:3)
> 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 (Score:4, Informative)
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? (Score:5, Informative)
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 (Score:5, Informative)
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 (Score:4, Informative)
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.
Just create (Score:5, Funny)
LOGO (Score:2)
Isn't that vector-drawing in a nutshell?
Take a Good Luck at Delphi and FireMonkey (Score:5, Interesting)
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: (Score:2)
Yes lazarus would be a good choice given his requirements.
Re: (Score:2)
Did anyone mention anything about borland delphi, or code gear or whatever is left of them?
We pointed the man to open source alternatives.
Groovy and Griffon (Score:2)
Re: (Score:2)
How well does it eat gigabyte files? I'm thinking not very well.
Processing ftw (Score:5, Informative)
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)
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: (Score:3, Interesting)
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)
Re:Javascript (Score:5, Funny)
I agree. There are several very good WebGL-abstracting graphics libraries for Javascript, such as three.js (and some others). You can use Javascript and CSS to place (and style) all of your buttons and widgets, as well. For data visualization, you might consider d3.js. I'm currently working on integrating both three.js rendering and d3 visualization in a GWT app, and it's mindblowing how slick some of the Javascript libraries are. I deeply regret having avoided Javascript for so long, because ... I'm really starting to like it.
three.js: http://mrdoob.github.com/three.js/ [github.com]
d3: http://mbostock.github.com/d3/ [github.com]
d3 examples: http://mbostock.github.com/d3/ex/ [github.com] (nearly all are amazing.)
Re: (Score:3)
Add jquery.mobile.js in the mix for CSS optimized page transitions and single-page web designs.
And maybe a dash of webgl.js [queness.com].
I second the notion that I'm *really* starting to like Javascript. At this point, I'm consider 100% javascript applications; since things like node.js and mongodb are now available.
I am not a professional software developer (Score:2)
WXlua lua fltk, wxpython, processing (java)
"I am not a professional software developer" (Score:5, Insightful)
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: (Score:2, Insightful)
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.
Re:"I am not a professional software developer" (Score:4, Interesting)
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.
Stick with Java (Score:5, Funny)
Leverage your core competencies to push the envelope on impactful best practices, and hit the ground running - it's a win-win!
Synergy.
Of beat possibilities... (Score:3)
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 (Score:3)
Re:GWT (Score:4, Insightful)
Answer: Here's a web framework.
Moderation: Informative!
Only on Slashdot...
does anyone know wtf he's talking about? (Score:2)
"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: (Score:2)
VRML
Re: (Score:2)
I was going to say "yes", but that's not what I was thinking.
Re: (Score:2, Insightful)
"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 (Score:4, Interesting)
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 (Score:5, Interesting)
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 (Score:5, Informative)
An equivalent in Python would be:
Alternatively (faster, but less similar):
Of course, if the class implements the __cmp__() method, you can just do lines.sort().
Re:Expressive versus easy-to-learn (Score:4, Informative)
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.
Droid (Score:2)
doesn't exist (Score:2)
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: (Score:2)
Easily fails points A, B, and E.
Matplotlib (Score:5, Interesting)
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.
The case for iOS (Score:2)
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 w
Squeak/Croquet? (Score:2)
Re: (Score:2)
The wikipedia page makes some big claims with some nice pictures, but there is little evidence of use and their website consists of single link to download a zip file.
Lazarus (Score:5, Interesting)
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.
So: I want X, but not in Y, even if Y supports it? (Score:5, Interesting)
Why not just use Flash & ActionScript, along with Unreal. Specifically, Scaleform. [youtube.com] Since it already does the "never before seen" 3D GUIs you want, and game engines are particularly good at visualising extremely large data sets (we call them game worlds).
Any amount of searching "HTML 3D" would have turned up WebGL [google.com], which uses OpenGL in existing browsers... That would be a good prototype platform for me.
I take particular issue with the childish statements against using Java (and Swing), considering they already support 3D Swing components (see XTrans demo). [jogamp.org] Swing displays HTML components, even in tool tips. In fact, there is already an entire 3D collaboration framework in Java [openwonderland.org] ready for any "Never Seen Before" GUIs you wish to dream up... It displays HTML, images, & PDFs etc.
Furthermore, their indignant remarks smack of ignorance, considering Java 2D & Java 3D exist, and both have rich non standard box shape intersection libraries, which can be used to create custom components of any shape or position, hierarchical or not restricted only in that they should be used in a Canvas, to save yourself some time.
They want someone to hand them a magic library that has all the bells and whistles already to go, but heaven forbid any of them have an API that requires using... Have fun inventing that shiny new wheel.
Hire a coder (Score:2)
Know your limits as a coder. You need someone with several years of experience to help you identify the technical limits and guide your design. Someone who
Example of OpenATC (Score:4, Interesting)
I thought I would share some info with you about how one team did this, what was cutting edge work at the time.
Not that I am saying you should use these tools although it seems they are one possibility.
Here are links related to a quite interesting software project developed by Christophe Mertz and others at CENA.
The Digistrips system was a user interface prototype demonstration system written in Perl for the design of new touch screen based air traffic controller systems that mimic the traditional system in which paper strips are used to represent aircraft in flight. The demonstration is said to have been successful, and there are a number of papers written about user interaction in the system.
It used Ivy (a cross platform message bus in Perl) and TkZinc (an OpenGL and 2d capable canvas).
Below are numerous links to papers and software sites although the openatc.org website is no longer in service itself. It is possible to download Ivy and TkZinc it seems.
keywords: cena france french aircraft controller prototype perl perl-anim gui prototyping tk-zinc opengl perl strips
Ivy Software Bus
http://www2.tls.cena.fr/products/ivy/ [tls.cena.fr]
http://freecode.com/projects/ivy [freecode.com]
http://www2.tls.cena.fr/products/ivy/download/desc/ivy-perl-deb.html [tls.cena.fr]
Ivy is a simple protocol and a set of open-source (LGPL) libraries and programs that allows applications to broadcast information through text messages, with a subscription mechanism based on regular expressions. Ivy libraries are available in C, C++, Java, Python and Perl, on Windows and Unix boxes and on Macs. Several Ivy utilities and hardware drivers are available too.
Ivy is currently used in research projects in the air traffic control and human-computer interaction research communities as well as in commercial products. It is also taught to CS students.
http://wiki.tcl.tk/9246 [wiki.tcl.tk]
Christophe Mertz
Zinc.pm
http://search.cpan.org/~zincdev/tk-zinc-3.303/Zinc.pm [cpan.org]
Patrick Lecoanet
http://search.cpan.org/~cmertz/svg-svg2zinc-0.05/svg2zinc.pl [cpan.org]
though openatc.org is down.
TkZinc
http://www.tkzinc.org/tkzinc/index.php [tkzinc.org]
http://freecode.com/projects/zincisnotcanvas [freecode.com]
http://wiki.tcl.tk/2798 [wiki.tcl.tk]
TkZinc is a Tk widget developed with Perl/Tk, Tcl/Tk and Python/Tk bindings. TkZinc widgets are very similar to Tk canvases in that they support structured graphics. Graphical items can be manipulated, and bindings can be associated with them to implement interaction behaviors. But unlike the canvas, TkZinc can structure the items in a hierarchy, and has support for affine 2D transforms. Clipping can be set for sub-trees of the item hierarchy and the item set is quite more powerful, including field-specific items for Air Traffic systems. TkZinc is fast enough to allow the implementation of 2k2k radar displays with smooth animations. It is structured enough to allow the implementation of direct manipulation desktop GUIs.
Since the 3.2.2 version, TkZinc also offers as a runtime option, support for openGL rendering, giving access to features such as antialiasing, transparency, color gradients and even a new, openGL oriented, item type : triangles. In order to use the openGL features, you need the support of the GLX extension on your X11 server.
Zinc Is Not Canvas!
Tkzinc has been developped at CENA to help building experimental user interfaces for Air Traffic Control. Tkzinc is a Tk widget, with Tcl, Perl/Tk, and Python/Tkinter bindings. Tkzinc is available as open source under the GNU Les
Re:When I think of a quick GUI project, C#. (Score:4, Insightful)
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: (Score:3)
Re: (Score:3)
Your complaints seem directed at WinForms. I much prefer WPF--for instance, finding all the functions on a button can be done manually by going to the XAML file, finding the button's UI code, seeing which events go to which functions, and finding those functions in the code-behind file. WPF's separation between business logic and the interface is very appealing to me, as are a bunch of the features WPF offers, like recursive templates.
My evaluation of WPF and C#.NET along the points outlined by the OP:
(A)
Re:When I think of a quick GUI project, C#. (Score:4, Interesting)
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#. (Score:4, Interesting)
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 (Score:5, Insightful)
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: (Score:3)
Trolling, or omitted IDEA because it embarrasses visual studio so badly?
Re: (Score:2)
Is GnuStep still alive?
Re: (Score:3, Insightful)
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.
Re:GNUstep (Score:5, Insightful)
"run rings around it" is a matter of opinion. I've used all 3 in anger, and I'm far and away more productive in Cocoa. Of course you'd use the gui interface builder (on either GnuStep or cocoa), that's an integral part of the system.
Pure cocoa would get you farther, easier - the GnuStep stuff imposes limits, but personally I'd use core data for persistence, quartz composer for data visualisation, Grand Central for parallelism (using NSOperation) and you can drop into C or C++ for performance when you need to. All basic building blocks that work well together and ObjC is far nicer to work with than plain old C and desnt have the gargantuan complexity of C++.
Simon.
(rather surprised that I was modded down to 0....)
Lots of people write ObjC GUI code (Score:4, Insightful)
virtually nobody writes the GUI code by hand. wx and Qt run circles round it.
Both statements are false.
There is a whole school of thought that people should shun IB for better UI performance. As a result there are lots of people that write all UI elements by hand. It's not hard, but there are a lot of properties you usually need to tweak.
I myself like to use IB when possible, but have also done a LOT of dynamic UI, including building whole screens dynamically from configuration files.
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!).
Re: (Score:3, Informative)
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: (Score:3)
The added benefit of these toolkits [Qt, wxWidgets] is that they're a lot more portable than Cocoa.
And the disadvantage is that they don't look or behave in a native way on OSX without lots more work. At the prototyping stage this doesn't matter (and for some users it never matters) but it becomes a major PITA when you're ramping up to the level of becoming a product.
I used to care about cross-platform development, but I don't now nearly so much. Platforms differ. It does make sense to make the core functionality independent of platform though. Sometimes that's best done by offloading that core to a serv
Paper and pencil, story boards (Score:5, Interesting)
I'd use [software environment and platform here] ...
No. Just use paper and pencil. Create a story board, http://en.wikipedia.org/wiki/Story_board [wikipedia.org], showing how the user will use the interface.
Go to the academics that represent your users. Ask them what they want to see in a visualization, how they expect to do a search, how they expect to manipulate things. Give them paper and pencil and tell them to just draw things however they think it should be, not what they are used to seeing in their current environment and applications, rather whatever they can imagine would be a good way, a way that feels natural.
Re: (Score:3)
^^^ This! And once you have your UI sketched on paper, you could use Qt (with or without Quick) to implement it. Your requirements for ease of cross-platform use *and* big datasets just begs for Qt.
Re: (Score:2, Interesting)
banana
http://www.haskell.org/haskellwiki/Reactive-banana
Re:Haskell !! (Score:4, Funny)
Re:Haskell !! (Score:5, Funny)
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: (Score:3)
Ok, I kind of agree to the preformance clause. But!
The site you linked to - probably self promoting since there isn't any other reason in your text to post AC -
is UI overkill. Self constructing animations of sites were hot in 2002. I doubt that any designer, no matter
how much of a showoff, would go to such an extent with a presentation UI... Minimalism is very hot atm!
Also I had the impression that Scaleform GFX is a UI development product for studios.
two points here:
1. UI development is not UI prot
Comment removed (Score:4, Insightful)
Re:Haskell !! (Score:4, Informative)
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.
Re: (Score:2)
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 (Score:4, Insightful)
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.
Nyet, Use Qt (Score:2)
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
Re:Qt license issues (Score:4, Insightful)
Unless you are modifying the library, then you need to release the changes. But you shouldn't have to modify QT itself.
Re:use Qt (Score:5, Informative)
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.