5 ms·
Ask HN: Why isn't grpc popular within functional languages?
I'm myself enthusiastic Clojure programmer but I wanted to use the gRPC with my next project but I found out that the API of the java-library isn't any functional and actually gRPC doesn't have any "reference"-implementations for functional languages. Is there some reason gRPC isn't more widely used within FP community, ie. is there other
, more functional protocols?
- shouldbworking 9y agoI hate to say this but it's an example of language hype not matching actual usage. I love GRPC, it's beautiful, but the fact that native implementations are only available in unsexy "old" languages should say something about the state of software development. I'm glad GRPC is available in Java, because that's what my company uses. I have a feeling this is the case with most devs. It's annoying that I can't use it in rust, but then again, it's newsworthy if a major company is using rust for anything. I don't think it has anything to do with a language being functional or not, it's based on sheer popularity in the business world
- grcp 9y agoI'm very curious how gRPC has selected the business first way; many now commonly used technologies in buiness field has very "hyped" backround, modern examples are javascript and react. I'm pretty sure it would accelerate adoptation if more developers would have tried it especially in their hobby projects
- shouldbworking 9y agogRPC feels very industrial to me. It's similar to Google's Guava library, used everywhere but nobody really talks about it. A lot of the stuff I've seen hyped to heaven in recent years is UI related or close to it. I think we might still have a human fascination with shiny objects.
- itamarst 9y agoMost of gRPC development is still done by Google, I would guess. Google would care about language popularity (and doesn't use any functional languages internally AFAIK).
- brudgers 9y agoWithout going deep into what 'functional programming' means, a remote procedure call is not necessarily functional. The use of "procedure" versus "function" in the name might be indicative that the remote endpoint maintains mutable state. The possibility that the remote endpoint is inaccessible indicates that the result of one call may be an (expected) integer and the result of the next call may be a (hopefully anticipated) network error. Haskell jumps through mathematically monadic hoops to fit this class of behaviors into its functional programming paradigm. Clojure, being more practical, offers its transactional structures as a possible way of reasoning about remote calls in terms of asynchrony (a failed procedure call might be considered a process that never finishes (or not)). Good luck.