On Thursday, October 17, 2013 04:49:29 growler wrote: > On Thursday, 17 October 2013 at 02:37:35 UTC, H. S. Teoh wrote: > > On Wed, Oct 16, 2013 at 10:16:17PM -0400, Jonathan M Davis > > > > wrote: > >> On Tuesday, October 15, 2013 15:15:45 Walter Bright wrote: > >> > http://www.reddit.com/r/programming/comments/1oi8wd/ruby_is_a_dying_lan > >> > guage /ccs8yr8 > >> > >> I can't possibly like any language where the type of a > >> variable could > >> change based on whether the condition in an if statement is > >> true > >> (because a variable gets assigned a completely different type > >> depending no the branch of the if statement). > >> > > auto func(alias condition)() > > { > > > > static if (condition()) > > > > int t; > > > > else > > > > float t; > > > > return t; > > > > } > > > > ;-) > > But if you make a mistake it is very likely that you'll see it at > compile time, not runtime. Plus D has very explicit casting which > also helps.
The key difference is that the type of a variable won't change on you in D. Sure, the return type of a function could change depending on the types of its arguments or the value of its template arguments, but it's all known at compile time, and you'll get an error for any type mismatch. In contrast, with a dynamically typed language, the type of a variable can actually change while your program is running, resulting in function calls being wrong due to the fact that they don't work with the new type. If you're dealing with static typing, the type of every variable is fixed, and the legality of code doesn't suddenly change at runtime. And it's not like scripting requires dynamic typing (e.g. you can write scripts in D, which is statically typed), so as far as I'm concerned, there's no excuse for using dynamic typing. It just causes bugs - not only that, but the bugs that it causes are trivially caught with a statically typed language. I pretty much outright hate dynamic typing and expect that I will never heavily use a language that has it. - Jonathan M Davis