I see a lot of programming debates start with assertions that look like this:
> Language A is dynamically typed, so it's more expressive, so you'll have working code sooner, so you'll be more productive!
or this:
> Language B is statically typed, so you can't fool the compiler, so your code is more likely to work on the first try, so you'll spend less time debugging and therefore be more productive!
Neither of these statements should carry any weight without actual hard data, no matter how compelling the argument sounds. And the fact that we can't come to an agreement about how to quantify things like productivity and "expressiveness" is itself evidence that these are subjective statements.
The whole point of science is that rational thinking alone is not enough. There must be empirical data. A rationally argued falsehood is as useless as an irrationally argued falsehood or an irrationally argued truth. A beautiful logical argument based on false premises is still wrong. Only empirical data can sort out which it is you have in hand.
> Language A is dynamically typed, so it's more expressive, so you'll have working code sooner, so you'll be more productive!
or this:
> Language B is statically typed, so you can't fool the compiler, so your code is more likely to work on the first try, so you'll spend less time debugging and therefore be more productive!
Neither of these statements should carry any weight without actual hard data, no matter how compelling the argument sounds. And the fact that we can't come to an agreement about how to quantify things like productivity and "expressiveness" is itself evidence that these are subjective statements.
The whole point of science is that rational thinking alone is not enough. There must be empirical data. A rationally argued falsehood is as useless as an irrationally argued falsehood or an irrationally argued truth. A beautiful logical argument based on false premises is still wrong. Only empirical data can sort out which it is you have in hand.