@lupyuen Interesting read! Thanks. I am partial to Clojure and the lisps, which he doesn't mention -- lisps might fall behind his call for "modern" languages (because of their age, though this is actually a bad indicator for them), and Clojure definitely disagrees with him about types, but strong agreement on immutability and functional thinking.

@worldsendless @lupyuen I heard many people this, "This enables you to catch many bugs before running your application". It is accurate; however, after debugging my Rust library, I produced more bugs than a compiler can catch. So I ended up implementing unit tests. Defining types and fixing them is time-consuming. So I spent more time implementing the Rust version than the Clojure version. 😪

Anyways, I still code in Rust because my library ran many times faster than one in Clojure. 🙀
@worldsendless @lupyuen It is a shame that I didn't try clj-kondo yet. 🤦🏾‍♂️

I have a high hope in static analysis tools for dynamic typing languages.

https://github.com/clj-kondo/clj-kondo/blob/master/doc/types.md

@lupyuen I didn't expect the compiler emphasis, though. Funny twist there. I think web devs like me don't so often think of that.

@worldsendless @lupyuen

Yeah. A TDD design gives types and then instances of types. It is in everyday programmers hands, so it is not as often logically sound, as a type system outside of direct human contact would be. But it is a lot better than people give it credit for.

@jmw150 @lupyuen also, TDD (and gradual typing) are far more flexible. Types only solve one, very narrow (albeit common) class of errors. Options that allow for testing specific to the problem-space, rather than highlighting the problem space of the language, are good

Sign in to participate in the conversation
Qoto Mastodon

QOTO: Question Others to Teach Ourselves
An inclusive, Academic Freedom, instance
All cultures welcome.
Hate speech and harassment strictly forbidden.