Surely every language designer including Hickey thinks they are assembling the best set of features for their goals.
I see Hickey as having a specific, focused, goal about enabling simplicity (given his specific meaning for that word) and yes I totally agree that every designer, including Hickey, does as you say.
What I was trying to get across was that I don’t see the guiding principle that guide the selection of those “best” features to include so much as “there’s this great stuff” that we must include.
Does that make more sense? Or should I put down my shovel?
† http://www.win.tue.nl/~evink/education/avp/pdf/feel-of-java....
> "We were after the C++ programmers. We managed to drag a lot of them about halfway to Lisp."
He appears to have specific aims and seems unafraid to make the necessary compromises to achieve them.
Non nullable default types, defer, patterns are great ideas.
Virtual by default, associated protocols instead of generic protocol, Exception handling designed based on how objc passes nserror, Generic instantiation is done at runtime, not by the compiler, so field access and even defining locals involves needless math,
All things with a lot better alternatives at the time swift was designed.
I didn’t see a reason to design a new language when Objective-C could be improved (for those that think it needs improved).
I think this is the root of my dislike of Swift. "Assembling" together the best ideas, which may only be 'best' within a specific context does not suggest the kind of design principles I am looking for in a language.
I was looking for a quote and it seems it was Antoine de Saint Exupéry who said something like "It seems that perfection is attained not when there is nothing more to add, but when there is nothing more to remove."
So I contrast Lattner/Swift with Hickey/Clojure: a small set of coherent design choices that lead to a language that is simple but deep. It's by no means all things to all women and that's a good thing.