开发者

How does the choice of programming languages help to the success of software products?

When evaluating the success of products such as the iPhone, iPad, Google, Twitter, YouTube, etc. are there objective criteria for开发者_开发知识库 determining the importance of the programming language(s) used to construct them?


Most of the time, choice of language won't affect a product, but there are a hand full of well-known case studies where language choice decides whether a project sinks or swims. For example:

1) Paul Graham's article Beating the Averages credits the choice of Lisp as the reason why he could consistently out-compete competitors developing their similar apps in C++.

2) This very well-known comparison of two web servers, Apache written in C and Yaws written in Erlang, comparing how they handle many concurrent connections. Apache dies after 4000 concurrent connections, but Erlang keeps chugging along with no degredation in response time with 80000 concurrent connections. Yaws performs so well because Erlang was designed from the ground up with high availability, concurrency, and scalability in mind.

Due to its high scalability, telecommunications companies like Nortel and Verizon choose to write their call routing software in Erlang rather than C.

3) MUMPS in just about anything.

4) A wonderful Google Tech talk by Rob Pike explains how he designed a language from the ground up to make it easy to write windowing systems for early generation operating systems.


Do you have objective knowledge about how important is the programming language?

No.

But I know it when I see it.


Thinking about this a little bit more I have come to the conclusion that the programming language was not a deciding factor for success or not.

The key factor is the quality of your software developers. Even if forced to use a less optimal language a great team should be able to produce successful products. It might take longer and they might be less happy about it.

There are many smart ways to work around language issues to make it easier on the developer. Code generation, good IDEs, and good practices.

This however only applies to very general products. If you are talking about software that runs close to hardware then choose carefully. You can't change how a language was designed at a fundamental level and that design choice might screw you over for a specific hardware choice.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜