views:

86

answers:

3

OK, go easy on me as it's my first question here. ;)

I am experienced in Web Application development, but I need to design 2 different desktop applications at work. I need advice on what languages to use (I use PHP for Web Applications, I have little other experience), any frameworks that may help me accomplish this easier and any IDEs to use to make my life easier too.

My first application will essentially be an interface to an embedded or remote DB and essentially it needs to do not much more than CRUD. A fulltext search function will be necessary as will sorting of the CRUD table too. I'd like to include the possibility of hiding columns of data too, but this isn't a priority. I currently use MySQL, but am happy to use any other DB, as long as they support importing from Excel. Of course, if it supports an excel spreadsheet as the database, fantastic, but wishful thinking...

I only need to support Windows XP upwards, this won't change. Let me know if I can add anything to help answer this.

My second application is going to be more complicated, I guess. It needs to output the SHA, MD5, CRC-32, CRC-16 signatures for an entire external drive on-screen and/or into a text document of the users choice (new and append). The external drive could be Compact Flash, EEPROM, CD-ROM, DVD-ROM, SD, etc. Whereas I have an idea where to start on the first application, this one is where I need major help as I have no idea which programming language has built-in support for all the algorithms above, or the best way to go about coding it. So any and all advice will be more than welcome.

Edit: OK, so I have come across Titanium and am wondering if this is the best option out there for my 2 projects. The first one I am certain I can achieve, but the second project is going to be pretty difficult I believe, as unlike most hash calculators out there, I do not only need to check individual files for SHA/MD5/CRC-32/CRC-16, but I also need to check Compact Flash through a USB-connected Sandisk CF reader and EEPROMs through a COM or USB connection as well. I essentially need to produce the signature/hash for the entire drive, not the files on it. Any advice on this in particular would be helpful, please let me know if I am going too far off-topic by stackoverflow standards, as I can create a new question with this in.

A: 

If the only development experience you have is PHP for web, your options for quick desktop development are seriously limited.

since i don't know of any (sane) way to use PHP for desktop apps, my first thought was to reach for a framework that would let you use JavaScript and a mostly declarative UI. That would save you from most of the pain.

The best one for that would be Qt, which is supposed to let you do almost everything on QML and JavaScript. the unfortunate part is the 'almost'; since anything that escapes that would mean C++ development. The best C++ environment, for sure; but still widely different from Web work (specially PHP web work).

The other option, which I think would be best for you is Adobe AIR. I haven't really checked it; but it lets you write a 'desktop-like' app using only Flash (with or without the Flex framework) or HTML+JavaScript. When i first saw it seemed pretty much complete. For DB work i think it can use an embedded SQLite library; or access any HTTP service (which could be a local DB+PHP app exposing the CRUD methods)

Javier
Thank you. I've worked with Air before and am not a huge fan to be honest, but I did come across an alternative that may be worth looking at for me: [Titanium](http://www.appcelerator.com/products/titanium-desktop-application-development/ "Titanium"). A free community edition which supposedly has 90% less RAM-usage than Air and uses the native GUI, avoiding extra install requirements on any client.
Paul
I've also messed around with Qt but did not have enough experience to gain a useful opinion, I may try again if I do not find a suitable solution.
Paul
+3  A: 

I'm going to have to say Perl might be a good (though not necessarily the best) option for you, if you aren't one of the PHP developers who are Perl-allergic:

  • Perl is probably easier for a PHP developer to pick up than some statically typed compiled language that typical desktop apps are written in

  • Perl has libraries to interface to pretty much ANY database back-end you want, though I'm not 100% sure about using Excel as DB directly (I'm fairly confident something exists in CPAN but can't recommend anything from personal experience).

  • Perl has Windows GUI development - from an easier (for you) web GUI using local/embedded web server to Tk to Win32 GUI modules (StackOverflow has a couple of questions with very good references on the topic of Perl Windows GUI options).

  • Perl has a fairly complete set of support for MD5/SHA etc... Again CPAN is your friend.

DVK
Certainly not Perl-allergic, I'm very open to learning new things. I'm really just after something that will work and equally important, be worth learning for the future. In that respect, Perl loses a few points for me personally (no disrespect meant), but CPAN will certainly be of great use if I decide to go down this route. Thanks for your help.
Paul
@Paul - while Perl may arguably not be as career/self-development helpful to you as something from an entirely different ballpark (e.g. Java or C# or some other static typing/compiled language), it will still be helpful from both those angles. This answer was definitely written from the shortest learning curve angle :)
DVK
Certainly understood, I definitely took it that way!
Paul
A: 

You could try PHP-GTK.

It may not be the fastest, but it does work.

Alexander