Which Web Tech?
February 6, 2008 6:48 AM   Subscribe

Which web development technology should I pursue for a commercial venture - php, python, perl or ruby?

I am an ex-programmer with around 8 years of development experience in ASP, VB, .Net, Java, T-SQL, HTML, CSS, Javascript and XML. At my peak, I was considered to be a talented programmer. I moved away from development about 5 years ago and have coded probably less than a dozen lines since then.

I now find myself boot-strapping a web-based commercial venture and think I could code the back-end (using the MVC pattern) given a solid grounding in the right language. I am keen to use one of php, python, perl or ruby as these seem to be the de facto standards for this type of work.

So given the above, which one should I spend a month or so getting to grips with? Or is there something else at which I need/ought to be looking?
posted by mooders to Computers & Internet (18 answers total) 6 users marked this as a favorite
I'd have a hard time not using Ruby on Rails for a web application these days. It has tons of momentum, and it's probably the most productive web framework currently available. I'm not a fan of some of the decisions they've made as of late, but at it's core, it's still good stuff.

If you were familiar with the request/response cycle of web applications back in the day, RoR will be pretty easy to pick up. I doubt it would take a month.
posted by AaRdVarK at 6:56 AM on February 6, 2008

I'd have a hard time not using Ruby on Rails Perl and it's many relevant modules for a web application these days. It has tons of momentum, and it's probably the most productive web framework currently available. I'm not a fan of some of the decisions they've made as of late, but at it's core, it's still good stuff.

I'm not snarking at AaRdVarK; just making the point that many languages/frameworks would be appropriate, and there may not be a "best" without knowing more about the application. It's often a matter of personal preference.
posted by buxtonbluecat at 7:11 AM on February 6, 2008

It probably doesn't make much difference which language you pick, as long as you build/choose a good framework. I use PHP because I like to be able to deploy small projects to cheap shared hosting without problems or command-line faff, and created my own framework largely as a learning tool, but if I was working with a team on slightly larger sites I'd probably settle on Python/Django or Ruby/Rails.
posted by malevolent at 7:25 AM on February 6, 2008

I'd advise against choosing a language first, but since you asked: Python.

Have you considered one of the 100 CMSes out there, rather than reinventing the wheel?
posted by unixrat at 7:31 AM on February 6, 2008

I work on Django, so obviously that's what I'd choose.

That said, it's hard to go wrong with any of the new hotness in web frameworks. Rails, Seaside, Symfony, Django, Pylons... most of the difference comes down to matters of taste and preference. Perhaps the best thing about all these frameworks is that they put a high premium on helping users get started quickly, so I think the best advice would be to try all the tools you're remotely interested in and see what grabs you.

I'd be happy to give you some specific high points of Django if you'd like; feel free to email/MeFi mail me.
posted by jacobian at 7:34 AM on February 6, 2008

Learn python or php.
posted by null terminated at 7:44 AM on February 6, 2008

Even as a card-carrying ruby whore I'd advise against Rails, it's a bit more Koolaid than framework now, most of the really helpful stuff from it has made its way into other frameworks like Symfony for PHP (what we use) and (I believe) Django for Python. And those don't have Rails' significant performance penalties.

If you enjoy Ruby and want to use it for web programming, I've just started a side project using Merb which is very minimalistic (doesn't even include an ORM!) but reasonably fast and very pleasant to develop in. Not a lot of docs there.

PHP is becoming less and less of a basket case language-wise (ZOMG namespaces!) but it's still tainted by the flood of 12-year-olds that popularized it.

Google uses Python a lot internally, which is a pretty solid point in its favor.
posted by Skorgu at 7:50 AM on February 6, 2008

Perl, my personal favorite, is an elegant language and is an excellent way to parse through sets of data. But I think you'll find that all these different languages will handle some tasks more efficiently than others and vice versa.

Since you've previously worked with ASP and other web related technologies, I would recommend using PHP as your development backbone for starters...then slowly incorporate the other languages as needed (or where they would seem like better solutions for the given task). If it was me, I would start with PHP, then experiment making calls from that to Perl routines, then Python and Ruby.

You'll find a lot of similarities between ASP and PHP which should get you up and moving quickly too.
posted by samsara at 7:57 AM on February 6, 2008

I'd vote for PHP, purely because its probably one of the most highly supported/available languages. It definitely has the best online manual of any language I've ever tried.

Ruby on Rails is very 'trendy' right now but what a lot of people don't realise is its just a framework for the Ruby language and that many such frameworks exist for PHP - I wrote my own after getting frustrated with Ruby, I just didn't like it as a language and as I got to understand the whole rails thing and what its about, it made no sense for me to continue struggling on with it, learning a whole new language and syntax when the selling point is the rails, not the ruby. Writing my own mini-rails for php was definitely worth the time investment. Much more worthwhile than learning Ruby

Starting from scratch you might as well pick anything, but don't pick ruby just because of rails.

I'd still pick PHP for 'future-proofing', php developers are 10 a penny, if you were ever to decide to move on from this project, they'd have no trouble finding a reasonably priced replacement.
posted by missmagenta at 7:57 AM on February 6, 2008

I'm sorta in the the same position as you. After checking out Python and Ruby and their respective frameworks, I'm now leaning towards Java, which I started coding in. It turns out that the suckage that is J2EE is increasingly being replaced by more lightweight frameworks that make coding faster, easier and, actually, fun. Basically, you get the performance, programmer market share, and tool support of Java and a lot of the flexibility and ease of use of Ruby and Python frameworks.

Some of the more known java frameworks are:
Spring (often used with struts and hibernate)
AppFuse (uses Spring, Hibernate and Struts)
posted by Foci for Analysis at 8:00 AM on February 6, 2008

Platform picks are always challenging. They really depend on a few factors:

1) what will you need to integrate with? Is there an internal system you'll need to talk to? What does it support?

2) What are the requirements of your system? What features lend themselves well? Is there an open source project (or commercial if you lean that way) that can be easily repurposed to your needs? That can drive the platform pick in a bunch of projects.

3) What are your scalability and uptime requirements? Do you need something that is massively performant, or is that just a waste of effort with you business model?

4) What are the skills in your community? If you need to grow the team, can you find local Ruby guys to work with you? How about Java? How much do they cost?

5) What investors are there in this? Do they have a bias to one platform or another?

6) How important is security in your application? Some platforms are far more security challenged than others- primarily because of the skillsets of the developers involved, not necessarily the attributes of the platform. PHP is particularly subject to insecure code cowboys- great PHP developers are great at writing secure, scalable apps- but the low barriers to entry mean there's a ton of bozos out there.

7) How much are you willing to devote to ops and maintenance? Do you want to build it once, or are you ok with building it once to get to a funding milestone, and tearing it down to rebuild later? If a teardown is ok, then I'd look at a more agile approach- ruby or PHP. If you need it to be done once and done forever, I'd look to Java or C#.
posted by jenkinsEar at 8:27 AM on February 6, 2008

My 2 cents.

I have worked daily with various Java web frameworks, raw PHP (No frameworks - When I did my PHP work it was in the early days of the MVC PHP frameworks which were slow beasts then) and with Ruby on Rails. I've also worked in Perl but similar to PHP not with a modern web framework.

I've found Rails to be by far the most productive framework then anything I've worked in. Its still pretty young and getting knocked similar to PHP did in its early days still but I love working with it. Documentation is still not entirely up to snuff, and while I don't agree completely with Zed's Rails is a ghetto rant, he does make some valid points re: the community at large.

I've also come to enjoy the elegance of the Ruby language, but I'm not a language zealot I'll pretty much work with whatever language is on my plate. Contrary to what some may say, it will scale but you're going to jump through hoops making it so.

Honestly the Google/Python thing is the one thing that makes me keep considering that language too though I have no familiarity.
posted by bitdamaged at 8:28 AM on February 6, 2008

Since you already have ASP and .NET experience why not ASP.NET?
posted by mphuie at 8:29 AM on February 6, 2008

piggybacking on mphuie's comment

if you are interested in using your existing asp.net experience there are a couple of mvc options.

i have enjoyed working with the castle project's mvc framework.

alternatively the official microsoft mvc framework is showing some promise. if you go that route you will want to check out mvc contrib.

if you do not want to use .net my vote is for python and the django framework.
posted by phil at 9:22 AM on February 6, 2008

As a web developer with similar skills, I would have to recommend php for 'ease of transition'. Although programming in .net is fundamentally different then regular php, the asp language is quite similar.

As you're considering an MVC approach, I would have to recommend Code Igniter, which is just delicious to program in from a php perspective. I guess at the end of the day all of these frameworks do similar things, however with CI I have never been frustrated by limitations. Everything just works, really well.
posted by ChefQuix at 9:28 AM on February 6, 2008

My choices:

1. Python, Plone and Zope.

2. C#, ASPX, .NET

3. Ruby, Rails
posted by jkaczor at 11:29 AM on February 6, 2008

Language should not matter. Most good coders are fairly proficient in a number of them. I work in a Perl shop, but what we value is people who are familiar with the APIs and web services that make most modern web applications possible. We value people who are able to be mindful of scaling and robustness and manageability. There are good MVC frameworks for all of these languages -- for Ruby, there's Rails, for Perl there's Catalyst, etc. etc.

First, understand how to correctly model your problem, then research which existing frameworks map to that model with the fewest compromises. Then, you can invest in learning (or hiring) the skills to best take advantage of it. In short, if your intent is to start a business, start by solving the business problem, not by choosing a technical platform.
posted by anildash at 8:45 PM on February 6, 2008

After many years of using Perl and the various frameworks for it, as well as creating custom frameworks, I'd say go with Rails. Efficient web programming pretty much requires a good framework in order to scale to anything worth doing(scaling to numbers of users, numbers of servers, lines of code & cyclomatic complexity approximations, development velocity, etc).

I think Rails swiped all the best ideas from the existing frameworks for dynamic languages, and really hit a sweet spot in providing a clean, smart and extendable library of APIs. And Ruby is such a great language to use--it really reveals the clunky parts of Perl, PHP and Python in contrast. It is for these reasons that Rails seems to have captured the web programming zeitgeist for the moment.
posted by archae at 8:54 PM on February 10, 2008

« Older Irony in travel through photos   |   Help with a Quote Newer »
This thread is closed to new comments.