I'm about to produce a prototype for a technology startup that I've just joined, and I'm trying to decide which language to use. It's going to be a simple web tool with a MySQL database in the background and some AI stuff going on in between. I've used Ruby and PHP a reasonable amount in the past, but wonder whether I might be better off going with Python or even Perl. My main programming experience is with C / C++ / Java, but I feel like I want to go for something that will make my life as easy as possible since I'm just developing a prototype.
I guess what I'm looking for is:
- speed of development
- existing AI libraries (e.g. SVMs, neural networks, Bayesian classifiers)
- ease of interacting with a web interface
Anyone have any thoughts on this?
I would second taking a look at grails. It is definitely easy to set up and get working within an hour, and you still have the power of java underneath.
I also agree with those who say make sure you are thinking down the road. I have been the beneficiary way too many times of those who had not.
All three of Ruby, Python, and Perl are good for quick development, prototypes, and web apps. I'm guessing from your question that the most substantial part of this project is the AI piece. Perl does have quite a number of AI-related libraries on CPAN. Check out the AI namespace for a sampling. There's also modules in other namespaces so make sure to search for specific things like "Bayes" or "SVM".
I don't know much about the AI library options for Python or Ruby. My recommendation is to take a day or two and do some serious research on the libraries for each of Perl, Python, and Ruby. Since you've already used Ruby before, if that has the libraries you need, it's a no-brainer, and Ruby is certainly web friendly.
As far as the web side goes, for Python, I've heard many good things about Django. For Perl, I'd recommend taking a look at Catalyst.
You'll note I've ignored PHP. That's something I try to do as much as possible ;)
If you're a Mac user have a look at WebObjects to do all the framework stuff, and you can focus on writing the meaningful neural code in Java.
You choose a language because it is the right tool for the job, but you haven't told us what the job is yet. We don't know what sorts of libraries you'll need, what other people in the industry use for the same job, and so on. Most people seem to be recommending something with complete ignorance of what you actually need to do, which means they really have no idea how to help you.
As you already have pointed out:
If you are the only person doing your task in language X, you're going to have a tough time getting help from anyone else. Find out what other people have already used to do similar tasks.
If all of the good libraries for your task are in another language, you're going to have to reinvent a lot of wheels. Instead of your question, ask about which libraries do the important parts of your task, then research those. "AI" is much too big of a topic to recommend anything.
If no one at work knows the language you want to use, even if it is a rapid prototyping language, you'll lose the rapidity as they have to learn the language. Learning a language is more than knowing its syntax; it's knowing its idioms, libraries, documentation, and a lot more. What do the people at work already know? What will they tolerate?
Do you really want to make your life easier, or make it easier for your customer? Those things are sometimes at odds, so you should consider if you are really delivering the value the customer needs. Prototypes seem to often turn into the production code, so once you start, you're often stuck with it.
I think Perl would be the way to go . Check out Moose for Perl OOP , and as for the other libraries you're searching for , I'm sure you'll find some of them on CPAN ( maybe something like the Bayesian modules )
AI? Definitely LISP