tags:

views:

560

answers:

18

I am planning to program a deviantartish site. It wont be like deviantart but the things it would need to do would be alike (watch people, send notes, upload, tag, access (my)sql etc).

I am sure i will use a lot of ajax, but what should i program this site in? php or python (or ruby?). My server is debian linux so i dont think C# is available.

+2  A: 

I'd recommend rails for the job. These kind of apps usually have a well defined workflow and Rails makes it pretty simple to connect to MySQL and do that kinda stuff.

Chris Bunch
+10  A: 

There are a variety of answers depending on how comfortable you are with the language, the specific needs and set up of your site. There is no way to answer this reliably - you really need to work this out for yourself

  • Do you feel comfortable with the language?
  • Do you have experience with it?
  • Are there any particular needs which fits a languages capabilities well?

etc....

Jamie Lewis
+2  A: 

You sould take a look at the various languages yourself. This could easily turn into a religious war between the Ruby on Rails and Python zealots.

BobbyShaftoe
There you go, I just added the requisite python/django/turbo gears/cherrypy/etc. answer. :D
Aaron Maenpaa
As an $otherlang zealot, I would like you to include my apologies for not attending this war.
Chris Burgess
lol. I apologize for excluding any dynamic/non-dynamic or functional/non-functional programming languages. :)
BobbyShaftoe
+6  A: 

I'm a big fan of python+django for my web development work.

Honestly, whatever you're comfortable with or want to learn is probably the way to go.

Aaron Maenpaa
+5  A: 

For the back-end, C# actually can be an answer, if you go the Mono route - although I don't personally have any experience with this. They're pretty much current up to .NET 2.0, so you get all the fun stuff like generics, etc., but none of the really fun stuff like LINQ.

As far as the front-end goes, you'll probably end up going with jQuery - it's all the rage nowadays, especially if you want to have a good experience developing in JavaScript.

Edit: Oops, my bad - Mono does support .NET 3.0 language features now. I don't really keep up, or I'd have known. Interesting...

Erik Forbes
+3  A: 

There is no right answer. PHP, Python and Ruby are all languages that you could do it in. They all have their fans. I like Ruby, but people do great stuff in Python, PHP and even Microsoft-spawned clones of Java. If you already know a language and there's a Web framework there that appeals to you, go with that. If you're not sure, just give them a go and see what you like best — that's the one thing no one else can tell you.

Chuck
A: 

Php or python or ruby (or for that matter perl or C# or lisp or many others) are all reasonable choices. Probably the most important factor is, which one do you like? Because you're going to be stuck with that decision, possibly for a long time. So, pick the language that you enjoy programming in.

If you don't know which one you like, spent a day learning each one. Implement a day's worth of your site in each, and see how far you get and what you think of it. That's probably a good thing to do in any case.

If you're planning to hire a team, you might want to see what kind of programming talent is available to you. For example, here in the bay area, php, ruby, and java programmers are easy to hire, but, e.g., python programmers are more rare.

+1  A: 

If you already are fluent with a language that is capable for the task - stick to what you know. This could avoid a lot of wishful thinking later (What! Why can't i do this??? etc) I think that you are better off in the long run to be strong in at least one major language than mediocre in many

I Highly recommend JQuery for any client side javascript - can't beat it for power and simplicity!

Harry
+5  A: 

Anyone suggesting a language (including me) will only be giving their preference.

Pick the language that will best grow with your current and future needs. It will avoid major rebuilds.

Try to pick a language that you can easily "think" programming in. Each language will have it's pro's and cons, you'll have to pick what is best short and long term for your situation (time available, money available, are other people involved, deadlines, etc.)

One language may offer more than the other and it's something to certainly consider. The more you investigate now will save you more in the long term.

You might want to get a quote on a freelancing site for the major languages/platforms:

The five I'd recommend looking at are

  • Rails
  • PHP
  • ASP
  • Python (Django, etc)
  • Coldfusion

Depending on what your needs are now, and the future, you should see how many of those functions are built into the language, and how much you'd have to purchase and spend time/money integrating into the site.

Rails will likely get you up and running quickest. However make sure any custom work you want to do will be easy to do though.

PHP has a wealth of pre-made packages (concrete5, joomla, drupal, etc) that may or may not work for you.

Python has had some great libraries come out for it (Django and a few other) that make building quickly very nice. Again, it's a learning curve you might have to factor in.

Coldfusion has is probably one of the most capable out of the box. It may be well suited for what you need as it has a large feature set built in that you would have to find or buy third party libraries.. To get past the commercial license costs of this option, you can look to very capable free/open source editions (Railo, etc).

I would pick what saved me the most time, because I don't have much free time. Python/Django has been looking intriguing, but I haven't had a chance to play with it more than a few hours.

Jas Panesar
+1  A: 

In all honesty, there is no right answer. Do you have any future career goals that can help you make the decision?

I personally have nothing against Ruby on Rails, I just prefer the ASP.NET MVC framework because I prefer the C# language syntax. I'm actually told that you can run ASP.NET MVC on top of Mono. There is also the MonoRail project.

I do, however, believe that if I were in your shoes that I would probably go with Ruby on Rails or PHP since you're working in the Linux world. But there's nothing wrong with exploring outside the norm. You might actually learn something worthwhile from it.

senfo
+2  A: 

If you're willing to tackle Java, you could try the Google Web Toolkit. If you don't mind your site's front-end being a Flash app, you could look into Open Laszlo.

The number of viable options for developing a web site is dizzying. :)

Parappa
Where, with "Java", you mean "JavaScript", right?
Thomas
A: 

There's any number of options.

  • Ada Web Services springs to mind as a more esoteric one (one that I'd like to learn though).
  • Ruby/Rails is well supported most places.
  • PHP
  • HTML + Scary JavaScript
  • C-based CGI scripts (not very maintainable)

I will chime in with Rails. I've been learning it a while. It's easy to get a basic site up and running. I've always liked the MVC paradigm. The only thing you need to get around is laying out your site in a sexy way which requires some HTML/CSS knowledge. I like the documentation for Rails - there's a lot out there and a lot of good HOWTOs to draw upon.

If you know any of the above you might have more luck sticking with what you know.

EDIT: If you're using Debian, avoid installing Rubygems from the package manager; Debian packages an older version and makes it impossible to run the newest Rails releases. For those who don't know, RubyGems is a package management system for Ruby 'libraries' (called Gems). Its method of package management disagrees with the FHS-standard and Debian's way of doing things. Debian messed it up a little to package each gem in a .deb, but you're at the mercy of their Debian-God as to when you get updates to Gems that way: http://pkg-ruby-extras.alioth.debian.org/rubygems.html

Adam Hawes
A: 

These days I really like the combination of Python and CherryPy. I like this combination because it basically takes Python and web-enables it, by giving you all the mechanisms you need to handle URLs, GET / POST requests and all those good things.

Now the real kicker with that combination is that it gives you the freedom to use any other combination of associated technologies you wish. You could use Postgres with a module for Python, MySQL which has a good module also or any other DB you like which has a Python module.

Some people are afraid of having the extra freedom that you don't get with things like Django or TurboGears, and it definitely makes it easier to give yourself problems long-term, but you can also make a truly amazing system if you do it right.

If you want an example of a large project using CherryPy, Cuil springs to mind.\

Edit: This is a relevant and researched answer. Can whoever rated this down please explain why in the comments? That would be good netiquette and manners, it doesn't make any sense.

Wayne Koorts
Reason for down-vote please? This question is completely relevant and researched.
Wayne Koorts
+3  A: 

If you are going to use lot of AJAX Google Web Toolkit is best.It is very easy to make AJAX.

BlackPanther
A: 

First of all, do you have any Web Development experience? If not then you're going to struggle, badly. A Social Network is a huge undertaking, even for those that have been doing this for years.

Secondly, regardless of what anyone here says you'll definitely need (X)HTML and CSS, perhaps even JavaScript if it ties in with your design plans. Again, if you've never designed a website before then you'll probably either want to get someone else to do that for you or spend a long while learning how to do it well.

Thirdly, the actual language is irrelevant. As many SO users come from the blogs of Joel and Jeff you'll find that a lot of people will recommend C# (ASP.NET) regardless of whether it is the right choice or not. Python with Django is a good option but the tried and true method is still PHP. Sure, the language looks awful, but it works well! Ruby is an alternative but if you're looking to expand then you'll painfully realise that RoR won't really want to grow with you.

It doesn't really matter what you choose, just get started on whatever language you feel comfortable with and good luck!

EnderMB
A: 

If you're a relatively new programmer, consider a more "standard" language for the web, Java and C# come to mind, though seeing as you're *nix, you're probably better with Java. Both with their rich featureset can be a good starting point for any other language down the line (at least they'll give you a good grasp of programming in general).

From there in the *nix world, it's a toss up nowadays between PHP/Python/Ruby and even Perl on occasion. I favor Python as coming from a .NET object oriented background it's made it easy to learn (outside of Mono of course). Your mileage may vary...

tekiegreg
A: 

i prefer Javascript, PHP, MySQL. since i'm used to it. and it's easy to learn. but it's still up to you on what language u know. you could use flash for nice UI and design/ use javascript,css for the primitive way. there are a lot of js toolkits/framworks out there to help u out. eg.jquery,ext.

bgreen1989
A: 

Depending on the factors -

Factor: Development Time

Languages: Ruby, Python, PHP

Possible Frameworks: Rails (Ruby), Django (Python), CakePHP (PHP)

Reason: Due to their dynamic nature, they tend to be faster to get web applications built in, you do not have to deal with static typing and it's related verboseness. Some people believe you trade off reliability for ease of use, other argue this can be mitigated by good testing, a debate I won't get into here.

Factor: Functionality (deviantartish)

Languages: Ruby, Python, PHP, C# / VB.Net, Java

Possible Frameworks: Rails (Ruby), Django (Python), CakePHP (PHP), ASP.NET / ASP.NET MVC (C#), Struts/Spring (Java)

Reason: All of these languages can achieve the functionality you desire. Some have AJAX functionality built into the framework and may favour certain libraries (Rails - Prototype, ASP.NET - ASP.NET AJAX). Others (Django, CakePHP) are library agnostic, CakePHP I believe has a Javascript helper, not sure Django's current position. The less you want to dig into Javascript, the more you should probably lean to a framework that abstracts the details of the language.

Factor: Libraries

Languages: Ruby, Python, PHP

Possible Frameworks: Rails (Ruby), Django (Python), CakePHP (PHP)

Reason: Due to the open source nature and popularity of these languages and frameworks, they hold the advantage in libraries built to work in the web application space.

Factor: Ease of Use

Languages: Ruby, Python

Possible Frameworks: Rails (Ruby), Django (Python)

Reason: The dynamic nature of these languages again makes them easier to use and learn. PHP, unless you are very disciplined can result in a lot of spaghetti code, however some very impressive applications have been built with it, including yahoo.com, flickr.com, etc. Java and C# carry the burden in terms of ease of use, due to having to deal with the verboseness of static typing, C# is making some inroads into this area as the language becomes more dynamic.

Disclaimer: I mainly use Ruby and Ruby on Rails so I may be biased, I have started experimenting with ASP.NET MVC and while it is a young framework, it appears to be maturing nicely.

Laz