views:

1552

answers:

12

What is the best language for rapid prototyping? Here are the main aspects that I'd be looking for:

  • Has a good GUI-builder tool that integrates well with the language

  • Easy to read

  • Quick to write short snippets of code and integrate them into a project

  • Interpreted, or else a quick write/compile/run cycle

  • Easy to integrate code from C/C++ (as a linked library)

  • Well documented and has good libraries available

I'm especially interested in options for Linux, but suggestions for Windows are also welcome.

+5  A: 

VB.Net is the obvious choice.

cletus
Maybe for Windows?
+1 to counter someone's apparent VB phobia.
Juliet
-1 because I really hate VB.Net.
Charlie Martin
+1 to counter the stupidity. The OP stated that Windows suggestions are also welcome, so VB.NET is just as valid as C# for a quick prototyping language with easy to use GUI.
HardCode
Wow, VB.Net meets the criteria and gets downvoted... just cos people don't like it. Look no further for proof that voting is just a popularity contest not any measure of the best (or even a good) answer.
cletus
In all fairness this question is subjective and a good example of argumentative when people are downvoting a good answer (even from an objective standpoint).
Adam Davis
It seems that people need to learn the difference between "best" (or even "good") and "something I like" eg "-1 because I really hate VB.Net".
cletus
+12  A: 

Python with wxPython for the GUI part. For the C++ integration, use SWIG or Boost.python.

The C++ integration is admittedly not as easy as integrating, say, Groovy with Java, or Jython with Java, but it works.

Update due to popular demand: There is also a GUI builder for wxPython. It's called wxGlade.

5 upvotes and this answer supplies *NO* gui-builder which is ESSENTIAL for rapid prototyping .. crazy
Scott Evernden
Yeah but Python is cooler than VB amongst the pony tail brigade so...
cletus
I don't agree that a GUI builder is essential for rapid prototyping. Some languages and toolkits are sufficiently easy to use that a GUI builder isn't much of a time saver.
Bryan Oakley
wxPython really falls down in the "well documented" category. The documentation there is really awful. Though, in spite of that it makes a decent choice because of all of the built-in widgets.
Bryan Oakley
+2  A: 

Oh, how I hate "best language for" questions.

Very good languages, not counting the small number of people who want to pick them up: Smalltalk and Common Lisp. (Yes, Common Lisp. There are good guis and gui builders.)

Ruby and Python of course.

Java isn't bad, seriously.

Charlie Martin
As for Java: Use Java for the more heavy-weight tasks, and build apps around it with Groovy.
please, tell me what good gui toolkits for common lisp are out there!!
fortran
There are a bunch of them, actually — remember Lisp was one of the *first* languages that supported windowing. Google around for CLIM http://en.wikipedia.org/wiki/Common_Lisp_Interface_Manager and CLX.
Charlie Martin
+2  A: 

Nowadays I am using C/C++ when I have to do a fast prototype. It is very portable and there are plenty of code already written for both. I can find any function already written to do anything I am looking for. And you also have the STL.

But I heard that now meany people is starting to use Ruby

Eduardo
C++ has long compile times and it isn't very portable unless you have some experience with build scripts or build script generators.
It's just fine if you use standardized or cross-platform libraries like Qt.
Bob Somers
Regarding the portability I try to use just the standard things. And for a simple prototye I do not care a lot about compilation time.
Eduardo
+2  A: 

Qt with C++.

Even MFC is also good for rapid development

Vinay
A: 

VB.net with a Linq friendly O/R Mapper

Harry
Although be prepared to have to pull the linq stuff out once you have finished building the prototype
Harry
+2  A: 

Many consider Python to be a good tool for prototyping (in general). It is easy to read, quick to pick up and has no write/compile/run cycle. It has a nicely featured standard library and the documentation is mostly pretty good.

Concerning your needs for a GUI builder, at least three major toolkits (WxWidget, QT, GTK+) offer you such a tool -- the output of these tools (usually meant for C/C++ programs) is either usable directly or a conversion tool exists. I'm not quite sure what you mean by a GUI-builder tool that integrates well with the language. IMHO a programming language shouldn't be biased towards a single purpose.

As for interfacing with C/C++ code, there are several ways:

  • programming a Python module manually (the hard way)
  • using a tool like SWIG
  • interfacing with the library via ctypes
  • probably more I cannot think of right now
paprika
+8  A: 

If your were a mac guy, Objective C with Cocoa. Python is a quicker language but Interface Builder is a lot better than any of the wx builder/straight coding that I have tried. Writing straight WX allows quick prototypes but I find it difficult to get them looking decent. Depending on your prototype needs, that may not be important.

HTML with javascript can also work well if you have a UI designer that can build prototypes while you do a bit of glue behind it to do what you want. Flash and the like perform similarly.

In reality, the key is to get a lot of familiarity with a toolset. If you spend 90% of your time using some GUI toolkit, you will want to use it for the prototype. Your familiarity with the toolkit will more than make up for language shortcomings in my experience.

hacken
A: 

I would go Ruby on Rails, its really fast, you should go and check this out..

But for "Easy to integrate code from C/C++ (as a linked library)", I am not so sure, as I also in learning stage about ruby on rails. I manage to build a functional website (for my school project) that can log in, shopping, image galleries, and so on in within a week... :)

roa3
Ruby on Rails is a web development framework, not a language for prototyping.
Jergason
+1  A: 

The answer is Perl, it is fast to write, portable and has some 18000 modules of prewritten code. I can write anything with it in about 1/10th of the time of any compiled language. I am very sad it's losing traction. Does Python or PHP have a similar scale of module support ? ( I know Ruby hasn't)

madcowjack
A: 

what about flex ( + AIR if necessary) ? It's pretty easy with its xml markup, it has a fantastic interface builder program (FlashBuilder 4) and it's completely cross platform!

I forgot to mention.. action script (language used by flex framework) kinda sucks in my opinion... and it's not very good for prototyping..

luca
+2  A: 

Tcl/Tk makes an excellent choice. Arguably it is as easier or easier than any other scripting language to extend with C. You can use the TkProE GUI editor, though Tk is so easy I find GUI editors to be more a hindrance than a help. YMMV.

One advantage Tcl has over all other languages is the ease in which you can package code up. If you need to ship your prototype to another machine or across the net nothing beats bundling it up as a starkit or starpack.

Another advantage for Tk is that you can use it with Tcl but you can also use it with Ruby, Python and Perl. For more information see the tkdocs website

The toughest of your requirements to meet is "easy to read" -- Tcl is definitely a required taste. Some people find it extraordinarily easy to read, others find it obtuse.

Bryan Oakley