Hacker News new | past | comments | ask | show | jobs | submit login

All of your data structures have types, whether you declare them or not. Your code expects things to be a certain way, and if it's not, things break. Static typing just means that you annotate you code with your expectations so you can get some automated error and consistency checking.

Automation is good, right?

With dynamic typing, you need to manually write more unit tests to get the same level of confidence. That's just not worth it for anything important.




Static typing just means that you annotate you code with your expectations so you can some automated error and consistency checking.

And in languages with type inference, you largely don't even have to do the annotating.


> All of your data structures have types ... Static typing just means that you annotate ...

Programs have (static) types, data does not. Static typing removes correct programs from the language. Try this in some ML-like language:

    let selfapply f = (f f) in
    let identity x = x in
    selfapply identity 42
If you transcribe this to (e.g.) Lisp, it will return the number 42. The program is short, simple, and safe, but well-regarded static type systems can't cope.


Any static constraint is likely to rule out good and bad programs. The tradeoff is how irreplacable those good programs are vs. how dangerous those bad programs are. "endofunction over either integers or endofunctions over integers (or over endo…)" is cute but I wouldn't lose a lot of sleep from underconstraining that domain.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: