Types Are Moving to the Right
There are several technical advantages to the types-to-the-right style. For one, it's often easier to write a parser for: having an explicit <i>let</i> or <i>val</i> keyword makes it immediately obvious to a parser without lookahead that the statement in question is a declaration, and not an expression. This is less of a problem in languages like Java, where the grammar of types is simpler, but in C and C++, if you begin a line with<p><pre><code>    foo * bar
</code></pre>
then it's not yet clear to the parser (and won't be until after more tokens are observed) whether this is a variable declaration for <i>bar</i> or a statement multiplying <i>foo</i> and <i>bar</i>. This isn't a problem for name-then-type syntaxes.<p>On a related note, it's also often advantageous for <i>functions</i> to indicate their return type last, as well, especially when the return value of the thing might be a function of an earlier argument. There are plenty of examples of this in functional or dependently-typed languages, but even C++ (which historically has listed the return type of a function first) has added an alternate (slightly clunky) syntax for function types where you can specify the return type after the arguments for this reason:<p><pre><code>    template<typename Container, typename Index>
    auto
    foo(Container& c, Index i)
      -> decltype(c[i])
    { ... }</code></pre>