@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
CleverLibre Social

CleverLibre Social is an inclusive social instance for open discussion, learning, and community.
All cultures welcome.
Hate speech and harassment strictly forbidden.