Yes, and the result of that is cabal hell. Types aren't there to help you break your API. Once the API is out and it has users it is rude to break them. The linux kernel is a prime example how far can you get if you don't break your users.
170 karma · joined June 23, 2015
Yes, and the result of that is cabal hell. Types aren't there to help you break your API. Once the API is out and it has users it is rude to break them. The linux kernel is a prime example how far can you get if you don't break your users.
Common Lisp is huge, which is fine. In some concepts it is closer to traditional languages (mutable data structures, multiple inheritance OO, tools to write low-level efficient code). It is more extendable than clojure (reader macros, symbol macros, CLOS and MOP). With quicklisp you can find most of the libraries you might need.
Clojure is much more different from traditional languages. It puts immutable maps and vectors up front and expects you to work with data directly. Why is that preferable is hard to explain in a short post, if you're interested about the ideas I'd recommend watching Rich Hickey's talks like Value of Values[1].
> neither of these languages can help me much in finding a new job
I don't know about CL but there are clojure shops hiring. Depending on your employer if the JVM is being used you might get a chance to use clojure as well (or CL through ABCL for that matter). It's also used by some shops for the frontend. And for your own work you can often choose what to use. Both can be used as a scripting language (clojure through babashka[2]).
> CL sounds like the logical choice because of SLIME
I'm not sure what you mean.
> Clojure sounds like the choice to avoid because of the JVM and the fact that I already know Go that plays in the same domain...
I don't get the JVM hate. Sure, every platform has its issues, but the JVM is a highly tuned virtual machine that has decades of development behind it. It is cross platform. It is used for high performance projects as well. It has libraries for everything.
[1] http://infoq.com/presentations/Value-Values [2] https://github.com/babashka/babashka
Also, IMHO it's much better than slack for chatting. If only everyone switched!
(alter-config-file!)
is bad because that code will run during compilation, but in (defn -main [& args]
(alter-config-file!)
(app!))
it will run only after calling -main.- a simple VM implementation - code using a JIT framework - using Apache Impala on this particular dataset
which performs on par and didn't take astonishingly long to write then these are just vague claims and hypotheses.
Nobody does. But that's where the power lies. You can't have unrestricted power with restricted features. Lisp gives you unrestricted power. It's up to you to use it correctly, for w/e definition of correct your context makes sense.
[1] https://www.businessinsider.com/how-many-people-use-windows-... [2] https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp...
> Encoding invariants in a type system is far cheaper than writing tests.
You may need to back that claim up with something or you're going to be anecdotal as well.
> Rejecting an entire field of study (like types!) is not only anti-intellectual, but also does nothing to move the state of our industry forward.
Who says type theory is needed to move our industry forward? Even if you think that why would every language need to use it? This is slippery slope.
> I’d say that’s especially harmful now in a time where software errors can bring down a couple of Boeing 787 Max airplanes and kill hundreds of people.
Was the crash the result of a bug that a type system would have solved? Otherwise this is quite the straw man too.
[1] https://en.wikipedia.org/wiki/Erlang_(programming_language)
So..
> Some might see the expansion of a single compound command into a nearly 200-line script as a sign of everything wrong with modern software development.
No, just avoid - looking for functionality that noone is asking for (YAGNI) - complecting