I can understand the speed part but maintainability? Sounds interesting, would you like to elaborate?
class Foo {
type_t getValue() const;
}
When I call foo.getValue(), I can be certain [1] that foo has not been mutated.[1] In C++, things like memset((void*)this, val, 1024) are always possible.
I love that C++ programmers still believe in the false gods of the const keyword.
Zen: reflect upon the meaning of a const volatile pointer.
-> exits stage right
I've worked on rather big projects in Ruby and Javascript, and testing always managed to keep things sane. Static typing helps you refactor things or make sure certain variables are the correct type, but in the grand scheme of things, I'm not sure type casting is the major source of bugs/errors in any system
The dynamic nature puts many errors into the runtime stage and increases verification complexity. Can be limited by static code checking, but grows cumbersome.