All of the most popular languages have mutable data by default.  99.99% of all enormous systems were written with mutable by default languages.<p>The type system not being &quot;strong&quot; simply means that you put logic in functions and methods instead of magic parts of the type system.<p>And Go can absolutely make abstractions.  The standard library is full of abstractions. Every Go package is an abstraction.  Hell, every function is an abstraction.