top | item 91911

Ask YC: Deciding what programming language

13 points| wumi | 18 years ago | reply

Scenario: Two programmers with solid programming knowledge are trying to build a scalable website that will include multimedia uploading and user login.

One loves ruby on rails, ajax knows some php , c ++,

Other loves php, java, knows some c ++ etc.

Both nkow mySql

How do they decide which programming language they should choose for dynamic, scalable website?

46 comments

order
[+] gruseom|18 years ago|reply
A more powerful language is a better choice than a familiar one. The learning curve with the first is mostly a one-time cost, but the cost of a lower-level language (complexity and gruntwork) is ongoing and increases as your system grows.

Just as important is to pick something you both love and feel great about working in. If you can't find something you both love, try to figure out why. It may be a sign of incompatibility.

[+] greendestiny|18 years ago|reply
Go for a language that's case insensitive...
[+] axod|18 years ago|reply
Why? I'm not convinced this is the number one criteria... Am I missing a joke/reference to something?
[+] inovica|18 years ago|reply
We chose Python because 2 guys knew PHP and one guy was an ASP dude. We decided on Python because it would give all 3 something to learn (and to help to bond) but ultimately its ended up being more powerful than we all imagined.

The main thing for you is just to get on and get started

[+] chaostheory|18 years ago|reply
Python is a great language... my only concern with it is Python 3000.

from http://www.python.org/dev/peps/pep-3000/#timeline: "Python 3.0 will break backwards compatibility with Python 2.x."

how do people using python account for this? (I think the timeline mentioned 2008 for Python 3.0 final)

this is really the only reason I'm hesistant to use Django beyond just experimentation

[+] vikram|18 years ago|reply
How long have you guys been debating this? If it's longer than a day, that it's just a mechanism to help you not get started. Just write it, open the editor and make the first page, then the second and so on. Get the site built so that it works. Don't worry about scalability, you'll need to rewrite it anyway.

Choose rails if the guy who loves rails wants to write the the majority of the app, otherwise write it in php.

It would be best if you two sat together while you wrote the it, that way you can figure out if you can work together, or not.

[+] mrevelle|18 years ago|reply
If you're looking to optimize for learning, choose a more powerful language that you don't yet know: Python, a Lisp, or Scala.
[+] rms|18 years ago|reply
PHP is fine if you don't want to learn a new langugae, just use one of the MVC frameworks like Symfony or Cake.

The general consensus here though is Python/Django or Ruby on Rails, whatever you prefer.

[+] iamelgringo|18 years ago|reply
If you both know php, it sounds like you've answered your own question.

+1 for suggesting an MVC framework like Symfony or Cake.

[+] icky|18 years ago|reply
If you both know php, use php.

If you want someone else to cut the Gordian knot for you, I hereby command you to use python! ;-)

[+] Zak|18 years ago|reply
Learning a new language is easy if you already know how to hack. Use the most powerful one you can find.
[+] randallsquared|18 years ago|reply
I would say, rather, use the language with the most libraries in the area of your startup. Code you don't have to write beats ease of reinventing everything, any day. I say this as someone who has reinvented some things over and over during the last seven years.
[+] Kaizyn|18 years ago|reply
I suggest that you first code for flexibility for at least the first few iterations of your site. Think of it as a fail fast optimization. Because you will be learning a lot and finding better ways to do things, you want to keep it as cheap as possible for as long as possible to explore different alternatives to your initial website concept(s).

Other than that, don't focus on languages too much. Find a way for you and your partner to write 'services' with language agnostic interfaces. If done correctly, there's no reason why you couldn't have parts of your site built in every one of the languages you mentioned. Naturally, the extra flexibility this affords you comes at a cost of being much harder to do correctly.

[+] axod|18 years ago|reply
I'd say spend a day, competing. See which one can get the most features, in the least lines/simplest/easiest to maintain code.
[+] mrtron|18 years ago|reply
Yes, yes and yes! I took a week and evaluated basically one setup per day. RoR, Django, Zope, Java/Struts/Hibernate. Yes, the last one took 2 days to evaluate.

My top two were RoR and Django, but the learning experience was invaluable. I got to see a good perspective of how they all handle things front to back.

[+] objectiveous|18 years ago|reply
IMO, it's a question of accountability. Decide first who is accountable for the success of the effort and the give that person the power to make the decision.
[+] JulianMorrison|18 years ago|reply
People have suggested languages, but I think they (and you!) are missing out the most fundamental first step. What do you want to achieve! You need to make a high level overview of what your site will do, and from that sketch out a rough mid-level idea of the technologies you will need in the implementation. Then ask which languages have libraries or built-ins which facilitate your design. And only then, pick amongst the languages which are still in the running.

It's hard to learn a new language, but it's harder to write a library/binding for video frame decoding, if your favored language doesn't already have one.

[+] nreece|18 years ago|reply
Imho, consider three main aspects: overall performance, future scalability, and learning-curve for the team.

Looking at what you have described, I would recommend you to go with PHP and MySQL, or RoR and MySQL.

[+] dkberktas|18 years ago|reply
RIFE of course. It handles login stuff and much more about authentication built in and also support uploading. Use RIFE/Crud. It takes less then 5 minutes. (it is a Java Framework by the way. rifers.org)
[+] gabrielroth|18 years ago|reply
Use Blub. It has everything you need. All those "more powerful" languages just add a bunch of meaningless parentheses.
[+] ptn|18 years ago|reply
I'm not sure that learning a new language while developing for final product is a good idea, it will slow you down unless you are an expert. So I think it depends on what you want: decent website right now = old language; really powerful stuff at some point in the future = new language.
[+] edw519|18 years ago|reply
"I'm not sure that learning a new language while developing for final product is a good idea"

I KNOW it's not. I wasted 6 months on this same stupid question before coding it in what I knew best first. Don't make the same mistake as me.

Minimize the number of unknowns. Your app is unknown. That should be the only unknown. Forget about scaling for now. Forget about learning new technology for now. They'll just take focus and energy away from the only important thing now: getting Your App 1.0 up and running. Code it with what you already know. When you're ready to rewrite it later (you know you'll have to), post your question again.

[+] mrtron|18 years ago|reply
I would absolutely disagree.
[+] pierrefar|18 years ago|reply
Choice of language does not affect scaling - Website architecture does... massively!

I would go for the language you know best between you too that serves your current needs. If you get successful, you will have the money to re-write the damn thing.

So just get going!

Pierre

[+] timr|18 years ago|reply
Consensus is boring. I think you should write your own custom MVC framework in C++.
[+] herdrick|18 years ago|reply
You should probably use S3 to store and access the multimedia stuff. Other than that, I'm not sure what a scalable website is.