Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm writing a small webpage that will allow the user to download small tools to run locally, I'm thinking what might be a suitable choice of language for the small tools. There will be a rather large amount of fairly specific small tools, so I'm interested in cutting down the development time for each one as much as possible.

Requirements:

  • The tools will have graphics, nothing fancy mainly 2D-shapes.
  • Can be run offline.
  • Preferably no installation at all, just run. Some of the users will not be very technically at all.
  • Cross-platform, primarily Windows and OSX but also a bit of Linux.

My current thoughts:

  • Python. Easy to write in but can be a hassle for the user to get to run if using libraries like PyGame. I can't count on the user already having python installed on windows or osx.
  • I'm discounting .NET and Mono for more or less the same reason as Python, they'd need installers, or is there a way to ship everything needed in the same folder?
  • C++. Takes a slightly longer time to write things in, but does support the requirements. I thought about using a scripting language(Lua, Angelscript or similar) on top of SDL to get the benefits of both c++ and shorten the development time once the middleware is well developed enough.

Do you have any other suggestions?

EDIT: Please leave a comment as to why if you vote negatively.

share|improve this question

closed as off topic by MichaelT, Glenn Nelson, unholysampler, Robert Harvey, Walter Feb 7 '13 at 20:14

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

1  
Consider Tcl/Tk, it is quite easy to install as a bundle on all the popular OSes. Mono also allows installing bundled binaries (see mkbundle tool in your mono distribution: mono-project.com/Guide:Running_Mono_Applications ) –  SK-logic Feb 7 '13 at 8:29
    
Thanks, I didn't know about mkbundle. That does put Mono and C# in another light. –  dutt Feb 7 '13 at 8:33

3 Answers 3

This problem is just the reason that web applications became popular. If your clients were willing download the JVM, Mono, or Python and keep it up to date with patches so that it's not a security nightmare, then you could use a cross-platform language. Right now the JVM is becoming a strong contender for the title of "Most Exploited Software in the World" - a title that .NET held for most of the 1990's. End-users generally don't update their software unless forced to.

The C++ route... Wow. Are you really going to compile and test all the functionality of all your apps on Windows XP, Windows 7, Windows 8, several versions of Mac OS-X, and several popular distributions of Linux, including ones with Unity, KDE, and Gnome desktops? Don't underestimate the amount of work involved.

If there is any way you could make these tools usable through a browser, even if you write them in JavaScript to run in all the popular browsers, the end-user won't have to install or update anything. Testing on Chrome, Firefox, and three or four versions of IE is a lot easier than different operating systems. I mean, there will be quirks between browsers, but different OS's have different design philosophies...

share|improve this answer
    
I'm not sure .NET was popular in the 90s considering it was released in 2002 –  Brad Feb 8 '13 at 13:33

Basically what @GlenPeterson said. Unless you need really fancy stuff, the browser is the correct target for "small apps". The enormous effort of making an incredibly rich GUI toolkit that behaves exactly the same on every platform has already been taken by browsers' developers; you better not try to duplicate it. Instead, build upon it.

If possible, the app should run completely without a server, packaged as a Chrome app, Firefox extension, or what they have in the IE world for that. This approach worked e.g. for Angry Birds.

If a server is required, a local server can be written in any reasonable cross-platform language, with a strict minimum of dependencies (e.g. using only Python and its standard modules, or a statically-linked executable). But you have to have damn good reasons to take this route. You will have the hassle of testing the server on each platform, but a server is far easier to make portable than fancy graphics stuff.

If you don't like Javascript (as I don't), there's a lot of languages that translate to Javascript: from CoffeeScript and TypeScript to elm and fay.

share|improve this answer

Embarcadero Delphi with Firemonkey meets easily all your requirements but linux. On the linux side, you can reuse much of your non-firemonkey-related code using FreePascal.

share|improve this answer
    
Thanks for the suggestion but if Linux isn't in the list I'll keep looking for a while more. –  dutt Feb 7 '13 at 8:30

Not the answer you're looking for? Browse other questions tagged or ask your own question.