The dynamic/compiled distinction needs to go away. Combine a simple syntax with very rapid compilation with LLVM, Type Inference, and very advanced emulator-based debugging, and there would be no need to have anything like Smalltalk/Perl/Python/Ruby any more. Instead of dynamic Duck Typing, you'd have Go's version, with auto-magic help from type inference. The emulator-based debugger could subsume many of the capabilities granted by a VM and enable the freewheeling runtime monkey-patching that can be leveraged for the same jaw-dropping ingenious debugging available in many current dynamic langs. This last component would be the hardest to implement.
(Cue the Haskell guys so they can point out how they're most of the way there already.)
Pretty much the same with Smalltalk, but people still make this distinction in their minds. That's part of my point. The distinction no longer even has so much basis in the actual organization of code and runtimes!
(Cue the Haskell guys so they can point out how they're most of the way there already.)