Static typing vs. dynamic typing
The dispute: Software developers all understand that type checking is a necessary thing. After all, in order for a program to function properly, constructs of a specific type (such as an integer variable) must follow the rules imposed by that type (e.g., you can’t multiply 3, an integer, by “blue,” a string). Whether to do such type checking at compile-time or run-time, however, is a hot-button topic among programmers.
What static typing advocates say:
Statically typed languages, such as Java, C, C++, and Haskell, do type-checking at compile-time. Proponents say this leads to fewer runtime errors, faster execution, easier-to-understand code (since types have to be explicitly declared), and smarter IDEs.
“Static typing will remove an entire class of mistakes a programmer may create from a program simply by not accepting it for compilation” Jack
“In a static language, the method signature tells you what types of arguments are required. In a dynamic language, you can't tell as easily - the API documentation has to tell you what objects are expected.” quanticle
“Static languages make the programmer more accountable. Dynamic programming sometimes creates a moral hazard, and encourages bad programming habits.” Ari Falkner
What dynamic typing advocates say:
“The difference is that dynamic languages are ‘write, run, fix’. You can experiment and fix quickly. Static languages are ‘write, compile, build, run, fix’. You can't experiment as easily.” S.Lott
“Anyone, who has worked seriously with a modern dynamically typed language like Ruby or Smalltalk, know that they are more productive.” Anders Janmyr
“Somehow things just seem to flow better when you're programming in that [dynamically-typed] environment…” Martin Fowler