Make Reasoned Choices

Clojure was developed using reasoned choices. Every decision that went into its features had trade-offs that were carefully weighed after time was taken to fully understand the consequences.

For example, compare Clojure’s state-management facilities to the message-based protocol you find in Erlang. Clojure focuses on concurrent processes implemented on one host, whereas Erlang focuses on distributed systems. Clojure’s atoms, refs, agents, and core.async library are a more efficient fit for that concurrency model than message-passing. This decision yields simple, robust concurrency at the cost of nearly transparent distributability. Horizontal scaling is more difficult, vertical scaling more effective.

Adopting this approach ...

Get Clojure Applied now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.