March 12th, 2015
(written by lawrence krubner, however indented passages are often quotes). You can contact lawrence at: email@example.com
This question is an endless source of flame wars. Ruby is better than Java because it has dynamic typing, which in turn allows for short, concise source code. Yeah, right, the Java guys say, your programs read fine, but they crash at your customer’s because type checking is left to the runtime. You’ve got it all wrong, the followers of LISP and Clojure say. Object Oriented Programming is an expensive disaster which must end. Don’t you see it’s all about functions? My boss is inclined to agree. “When we’re programming NATURAL on the mainframe my programmers never come up with the kind of problems you Java gals and guys are fighting”, he frequently says, adding “Are you sure objects are an improvement of procedural programming?”. C programmers shake their head in despair. How can you waste so many CPU cycles? Don’t you ever think about memory consumption? “But we do”, assembler programmers say. “We know exactly how many cycles our instructions take”, they claim, only to hear “So what? Our GNU C optimizer knows even better”.
…Cutting a long story short, the study says that
Your programming language does have an influence on code quality.
Functional languages are better than procedural languages.
Strong typing is better than weak typing.
Static typing is better than dynamic typing.
Managed memory (i.e. using a garbage collector) is better than unmanaged memory (i.e. calling malloc() and dealloc() manually).
But the study also says the influence is small. Other factors are much more important. Code quality differs only by a small percentage between languages. So it’s better to look at your team’s skills when choosing a language. First of all you should care about your team’s motivation. Lack of motivation is the number one killer of productivity. Closely related are corporate politics and bureaucracy. You shouldn’t even think about improving developer productivity as long as you spend a major part of your budget on politics or bureaucracy.