Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I think type systems have diminishing returns. I’ve used Python professionally for 15 years and a whole lot of time is wasted trying to figure out exactly what properties a given parameter must have. In the best case, you have stuff like “file like object” which doesn’t tell you if it just needs a “read()” method or also write, seek, close, etc. In the common cases you have annotations that are incorrect or outdated.

On the other extreme, you have Rust and Haskell type systems where you spend gratuitous time on pacifying the type checker for negligible quality gains (arguably negative gains).

I always felt Go hit the sweet spot.



Violently agreeing with this. Both extremes hinder productivity, just at different times during the development cycles.

It's easy to confuse type systems with correctness or clarity of thought. I've fallen victim to this myself – "oh this didn't map well to Rust's type system, I must be thinking wrong", kinda. It tickles this ocd nerve and I lose focus on the problem I'm trying to solve, often without realizing that I'm just wasting time.

I also like Go for these reasons. It's dumb and predictable, which let's me focus on the problem I'm solving. My only annoyance is really verbosity and small amounts of boilerplate.


Yeah, and there is a time and place for rigorous static analysis. If you’re writing embedded code for a car which is mission critical and prohibitively expensive to update frequently (firmware updates require people to bring their cars into dealerships for technicians to update), then you probably want to verify everything you can. On the other extreme you have SaaS software where you can get a bug report, diagnose it, and deploy a patch in an afternoon and no one’s life is at jeopardy (but the rewards for rapid iteration are huge).

Unfortunately, this nuance is missing from the discussion with people mostly talking about software as though it’s all mission critical / infrequently updated / rapid iteration doesn’t matter which is exactly incorrect for the general case.




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

Search: