Hacker News new | ask | show | jobs
by throwaway38405 746 days ago
Thank you very much for your feedback and insights!

Two follow up questions:

You mention that functions/types are just values and can be created at runtime. IMHO you get the same with Java (8+) and everything running atop the JVM, Golang and some other programming languages. Why is this such a big differentiator for you?

The other thing I find interesting, that you didn't mention tooling at all. For me, navigation in bigger code bases is a killer feature ('one reads code more of ten than write it'). Code navigation/auto complete is IMHO much inferior in dynamic languages, even for small projects and with state of the art IDEs (IDEA...). (And not even mentioning deploying the software to servers/clients.) Did you find issues with the tooling in these projects, don't you care and just use VIM/Emacs or wasn't it just bothering you enough to mention?

1 comments

> IMHO you get the same with Java (8+) and everything running atop the JVM, Golang and some other programming languages.

I mean... kind of? Java and Go both have reflection, sure. Creating types at runtime (e.g. for mocking) also kind of exists ... kind of. Though it's very hacky in both languages.

The REPL story is also much better in dynamic languages. I've seen production incidents get investigated, diagnosed and resolved in minutes, that would've taken hours at other companies.

Though of course with great power comes great responsibility. I've seen some abhorrent misuses of reflection, and I've seen issues caused by overuse of prod REPLs. It's all a tradeoff at the end of the day.

> Code navigation/auto complete is IMHO much inferior in dynamic languages

With type annotations, I've never had any problems with autocomplete or code navigation in Python (e.g. PyCharm, Python extensions for vscode, etc). Ruby either.

Without type annotations, you're gonna have a hard time.