← Back to context

Comment by odiroot

5 years ago

> The older I get, the more I appreciate dynamic languages. Fuck, I said it. Fight me.

The other ones are quite obvious but this is the one that really resonated with me. People, with experience, tend to get more pragmatic and less "academic".

Pragmatic for me is knowing what’s wrong at compile time, and not being told much much later at runtime that I nested this array in a dictionary in an array wrong, or that my string is an integer.

I got older, stopped using python for exactly the reasons above (I just really felt that it was wasting my time for trivial reasons), and found mypy which made it bearable again.

  • Yeah, I'd be on board with that if 99% of the people talking about typed languages at the moment weren't using Typescript for use cases where you literally get instant feedback from hot reloading as you code.

    Every time I see an example of a bug that TS would solve, it's something that I routinely find in 2 seconds by looking 10 degrees to the left at my second monitor and noticing the screen is white and there's some red text in the dev tools. "Compile time" doesn't mean anything if it consistently happens 0.5s before "run time".

    • As your application gets larger it's not that easy. Even if your code hot reloads all the time, getting to the piece of code that breaks might take 10 clicks or you are working on some feature that has quite a few combinations for use and/or settings that influence it. Maybe some feature flags thrown in. With this setting off and that feature flag on, suddenly your integer is a string. Boom runtime error but only because your QA thought of it when testing it 3 days after you already moved on to another ticket.

  • Groovy is a dynamic language that runs in the JVM, it lets you put @CompileStatic at the top of every class.

    I believe typescript also has options for compiling statically.

Yeah, the funny thing for me is that I run my business on Haskell exactly for the sake of pragmatism.

The last time I had a job was on a Clojure team, and that team has since abandoned Clojure and some of my former colleagues have come to me and essentially said that they got tired of fighting with runtime errors.

As I got older the more I appreciated static typing and expressive type systems. To each their own.

I keep getting downvoted on Reddit for stating that I personally hate TypeScript to the max. It ruined the beauty of JavaScript (once you know it, anyway, I understand there are difficulties for JS-novices) and I honest to goodness 100% do not EVER find myself thinking: "Gosh, thanks TypeScript!" - on the contrary, it's always: "For fuck's sake you stupid POS TypeScript, you're wasting my time for no benefit at all."

Strong-typed languages (especially in the damn browser) make no sense to me. It's not like we need to manage memory or anything.

20+ Years of experience here, and I hate TS with the passion of a thousand suns.