The first programming languages I've learned and used were strongly typed: Turbo Pascal, C, C++, later Java and C#. I used to believe that strong typing is essential and a great help for quality code. In fact, a strong type system that ensures correctness sounds amazing from an intellectual perspective.
However, I started noticing practical problems. Trying to use a Haskell library for the first time was harder than it should have been due exactly to the strong types. On the other side, Python and later Groovy proved to be excellent for solving problems fast and maintaining code. So what's the answer? Is strong typing essential? How useful is it? And does weak typing work for me because I'm compensating the types with experience and design principles?
Join me to explore this topic and learn from code samples and practical experience how I've used weak types and the conclusions I reached from comparing the approaches.
This talk contains a lot of code samples in multiple programming languages.