However, I do admire Go's type system, which is by all means static, but it often feels dynamic, due to type inference and interfaces.
Also, I kind of like the approach taken by Common Lisp, where the language is basically dynamic but allows for optional type declarations, and you even can tell the compiler to use these type declarations for safety or for optimizing your code. It would be really nice if Python or Ruby had those. (IIRC, Perl6 has optional type declarations.)
The industry doesn't share the same sentiment it seems.
Every platform as a service includes some dynamic language binding and parts implemented in a dynamic language.
The Java-ists have produced mountains of code, but it is still not the go-to for most of industry as they continue to hack in dynamic language features (mixins already replaced AOP so we get Java 8 : First class functions, static methods on interfaces and dynamic behaviors of Java 7). Java has also introduced ways to avoid the bugs that are resulting from the polyglot (Java 8 : Annotations).
Yes the computer deals in strict types at the ASM level, but for programmer productivity, nothing beats dynamic typing except for atoms (Erlang, LISP) aka symbols (Ruby, Scheme). We will get there with more actual science applied.
However, I do admire Go's type system, which is by all means static, but it often feels dynamic, due to type inference and interfaces.
Also, I kind of like the approach taken by Common Lisp, where the language is basically dynamic but allows for optional type declarations, and you even can tell the compiler to use these type declarations for safety or for optimizing your code. It would be really nice if Python or Ruby had those. (IIRC, Perl6 has optional type declarations.)