Although I think point 1 is valid point 2 seems somewhat hyperbolic. Could you clarify why dynamic languages are more productive than C#?
http://openmymind.net/2012/4/24/I-Rather-Have-Silly-Tests-Th...
It essentially comes down to less code. Some of that is simply less language clutter:
public virtual void Add(int a, int b) { }
vs
def add(a, b) end
Some of it is just what's possible due to dynamic languages, whether that's because of the type system, or, more likely, meta programming.
The benefit of meta programming compounds itself through libraries too. So not only is my code able to leverage it, but I can use libaries that leverage it and end up with User.find_by_name("leto") (as a classic, but certainly not singular, example)