4 ms·
Scala has a Lisp-like quality in that I feel like I should love it. On a certain, 30,000-ft level, I do, but when I'm actually trying to solve a real problem I
by commandlinefan 6y ago
Scala has a Lisp-like quality in that I feel like I should love it. On a certain, 30,000-ft level, I do, but when I'm actually trying to solve a real problem I usually end up just doing it in Java and then "translating" it back into Scala.
- taeric 6y agoI'm curious, what is the lisp like quality? I like scala. I haven't used it for anything big, though. And hard to argue that it has an interesting approach to discipline. Lisp, though, I like to use. I'm not as impressed with myself for getting something working in it. I am impressed that all of my books have code still work.
- commandlinefan 6y agoI mean I feel like I should love Lisp the way I feel like I should love Scala - int he abstract I do, but practically neither is my go-to.
- taeric 6y agoFair. I didn't know if there was any practice overlap. For me, lisp is bigger in the meta programming. Really pulls the covers back on how things relate. Not just in how to put the code together, but how to look at the data. Scala was my first big intro to category theory. Helped me see relations in some higher ideas. Many, though, are hard to see a priori.
- orwin 6y agoThe issue i have with metaprogramming (lisp or elixir but also C++ macro) is that it is easy to forget, unlike most programming principle. It require you to twist your mind, and if you stop for two-three years, it require efforts to put your head back in that space.
- taeric 6y agoI've found that as long as you keep it transparent and focus on what the shape of the data is, things go easier than you'd expect. That said, a lot of things folks reach for with meta programming, I think should get a pass. The goal shouldn't be to make the code like a text. The goal should be to heavily leverage core data structures.
- kaba0 6y agoI think the more expressive language is that quality. Which I believe is the base of the problem. If you have a really professional team then it will make programming even complex programs a breeze. But this same thing is a catastrophe in the hand of average devs. Go’s design was pretty much this (though I prefer a more expressive lang than that). Java while not necessarily an elegant language, I think strikes a great balance between sufficient expressiveness and not-too-many ways to express things.
- taeric 6y agoSome of this comes from a willingness to do it, though. With static imports, it isn't actually impossible to effectively add keyword like things to java. It is done far less often than it is in other communities, though. And I can't see why.
- kaba0 6y agoI don’t see any hard to reason about feature in static inports. If I must choose something, I would say that reflection allows for some spooky things from a distance, but it is not abused as often in my experience.
- taeric 6y agoRight. It is the lack of. "abuse" that I can't really explain. To be honest, the same people I used to see do heavy Reflection are the same that did heavy meta programming. Usually to the same end. I do not have a hypothesis on why.
- divs1210 6y ago> Scala has a Lisp-like quality in that I feel like I should love it. This is the complete opposite of my experience. I love Clojure because it enables me to build large / non-trivial applications after learning a minimal set of rules. Scala, on the other hand, appears to have a relatively large number of syntax rules and special cases.