views:

71

answers:

6

I know everyone usually chooses languages they are familiar with. I would honestly like to know when starting an open source project; which language would you select to begin development and why?

What do you use as "measurement" tools to see which language would be best suited? How do you eliminate particular languages on what criterion?

Please and thank you.

*I dont mean to start a flaming war or anything just a question I have been having when deciding on selecting a language for my own personal projects.

+6  A: 

Whatever you feel you will be most productive with.

Developer Art
+1: I propably wouldn't write a device driver or a high-performance physics simulation in Python. But then again, I couldn't write these porperly anyway. So for any project I would actually want to start, I would use Python - the language I am most productive with.
delnan
@developer this is the answer I didn't want. assuming I have all the time in the world and know all languages.
garbagecollector
If you knew all languages, you wouldn't be asking this question here.
Developer Art
I find the answer of Carl very reasonable. Think of usage scenarios for your project and what other systems it might need to be integrated. Then the language choice falls easy.
Developer Art
@developer haha all i said was give me reasons for selection outside of whatever you know. i agree.
garbagecollector
+3  A: 

You mention open-source - so presumably you want other developers involved, and you want others to be able to take advantage of the code you're writing. So a good question might be: in which software ecosystem does your software best fit?

Carl Manaster
+1  A: 

Anecdotic answer: Paul Graham and Robert Morris, founders of Viaweb, which was sold to Yahoo later, wrote their shop-building web application in lisp. Why? Because lisp was the language Paul Graham knew. The one and (more or less, I presume) the only.

The MYYN
In general, Lisp is not the first language somebody learns, and I'm pretty sure Graham knew other languages. Graham simply thought Lisp was the best language for the job. You can learn why he thought (and thinks) so in his writings.
David Thornley
A: 

Start by looking at your project. Come up with all the functional requirements and start to look at what other people are using for solutions to similar problems. From there it's a matter of do you know the language paradigms in those language and do you have the time to learn them. If you just want to start working and prototyping go with whatever you're comfortable with but be open to languages you don't know aswell.

Ken Struys
+2  A: 

This is how I choose a language:

  1. How productive/familiar am I with that language?

  2. Do (preferably GPL licensed) well documented libraries exist to allow me to do the things I want to do in the project in question (e.g. parse XML).

  3. Is this a project in which I want to primarily get things done or am I interested in trying a new language / platform and using it as a learning opportunity?

  4. Will other people have to work on the same codebase in the future (usually yes for open source)? Will they likely to be OK working with this language?

  5. Should the language be cross-platform?

  6. Does it need to run really fast / scale?

  7. Do I have access to the tools on my desk (e.g. editor, IDE, source control, compiler) that play nicely with the language(s) I'm considering?

  8. Does the problem domain /ecosystem have any bias toward a particular platform / language?

I really like question 5 which languages are applicable? java?
garbagecollector
I was thinking of say, java vs. c# in question 5and say, Python vs. C in question 6.
+1  A: 

Most programmers' first instinct is to look at the technical merits of the language first, and then development tools, libraries, etc. They'd like to pick the language, libraries, etc., that best support the kind of task they need to carry out.

Unfortunately, in the real world technical merit is a secondary (or maybe even tertiary) consideration at best. The first and most important consideration in most cases is choosing a language that's sufficiently mainstream that you'll be able to easily find plenty of programmers to wok on the project without first spending a lot of time training them on a strange language that none of them knows.

This is particularly true of open-source projects. With an open source project (at least initially) most of the people who get involved are likely to be volunteers, and few will put in the time and effort to learn a new language before they even get started (though already-active participants might).

The technical capabilities of the language are also generally secondary to how that language is perceived. Perception is important because it tends to determine (to a large degree) the skill sets of the programmers who are familiar with that language. Just for example, let's assume you wanted to write a compiler. You looked at languages carefully, and decided that from a technical viewpoint PHP would be the perfect choice for writing your compiler. There are certainly a lot of PHP developers around, so finding people who know PHP shouldn't be a problem. Unfortunately, whether it is suited to writing compiler or not, PHP generally isn't perceived as a language to use for writing compilers. You can find lots of people who know PHP, but most of those are likely to be people whose experience and skills run toward database-driven web pages, not compiler development. Even though it's a mainstream language that (we'll postulate) is technically suited to the job, it's still probably a poor choice for the job.

Jerry Coffin