| The static programmer says: |
The dynamic programmer says: |
| “Static typing catches bugs with the compiler and keeps you out of trouble.” |
“Static typing only catches some bugs, and you can’t trust the compiler to do your testing.” |
| “Static languages are easier to read because they’re more explicit about what the code does.” |
“Dynamic languages are easier to read because you write less code.” |
| “At least I know that the code compiles.” |
“Just because the code compiles doesn’t mean it runs.” |
| “I trust the static typing to make sure my team writes good code.” |
“The compiler doesn’t stop you from writing bad code.” |
| “Debugging an unknown object is impossible.” |
“Debugging overly complex object hierarchies is unbearable.” |
| “Compiler bugs happen at midmorning in my office; runtime bugs happen at midnight for my customers.” |
“There’s no replacement for testing, and unit tests find more issues than the compiler ever could.” |