Search code examples
language-agnostic

Best portable development platform for small personal project


I'm looking for a development platform (language and set of libraries) that will allow me to develop a personal project. (In case anyone is curious, I'm looking at making a music library manager, similar to iTunes, that can work on multiple platforms and sync with Android devices).

I want the language to have the following characteristics:

Essential The program must run flawlessly, with no (or very little) code changes on Mac, Linux, and Windows. That means, notably, that I need to have a cross-platform GUI framework, a consistent API for accessing files and directories, and a consistent interface for talking to USB storage devices

Important A language that is easy to use, powerful, and expressive. Big standard libraries with a lot of built-in functionality. (I'd probably use C#/.NET but the portability isn't great)

Nice to have Good tool support (on Linux if possible, but I'll do my development on Windows if needs be) Not Java. (I have used it and just don't like it - I'm not interested in getting into a language war here).

Please help me choose a language!


Solution

  • Python

    1. Cross platform GUI: more than one option, I'd use WxPython, but Qt bindings are also available (comparison between wxWidgets and Qt).
    2. File System API: this gets into the os package, but there are also convenience methods for just dealing with I/O.
    3. USB I/O: I confess to not having any knowledge here, but suspect if you're talking storage that Python will be able to read and write using its IO package.
    4. Libraries, Ease of Use, etc..: there's a lot built in, but also a huge number of add-ons (called "packages"). Some of the most notable are SciPy and NumPy, used for scientific and numerical analysis.
    5. Tooling: there are a number of IDEs out there, I use PyDev (but it's Eclipse based so you probably won't like it if you don't like Java).

    Finally, Python is supported on Android via its scripting environment.