4 ms·
Seeing statically typed variants of Python such as ShedSkin or PyPy's RPython, I think that one major annoyance is gone. You still need polymorphism for some t
by sqrt17 16y ago
Seeing statically typed variants of Python such as ShedSkin or PyPy's RPython, I think that one major annoyance is gone.
You still need polymorphism for some things, and having the possibility to have "implicit interfaces" (you just write x.foo() without declaring that x implements the foo interface, or that y and z also implement it - this is also useful when y or z are library classes you cannot change).
Often, the type inference that is needed slows down the compile times quite a bit; and (both with Haskell and with C++) you get incomprehensible error messages when something is wrong but it could have gone wrong in half a dozen places. (C++: 6 lines with "in ...", then "no such method: foo", Haskell: expected type bla->foo->Z x, found a->B c->d)
IMO, static type analysis on top of a dynamic language (e.g. PyDev) gives you most of the benefits of IDE and refactoring support - with the additional coolness that it can just skip the places that are not type-able. (Optional type declarations to put PyDev back on track in the most obvious
cases would be great, though).
- Rusky 16y agoStatic typing can have the benefits of implicit interfaces without the danger of runtime errors- look at Go's structural typing.
- nivertech 16y agoI can get away with simple dynamic typing in small Erlang projects. But building a large project in Erlang/OTP without static type analysis is hard. You will debug for hours some stupid bugs, which C++/C#/Java compilers usually find for you. I started using type specs and dialyzer - it finds typing errors, and make building complex systems in Erlang much easier. The only problem that dialyzer requires intermediate step of building PLT, which sometimes can takes 20 minutes and more, but only once per project.