divVerent<p><span class="h-card" translate="no"><a href="https://mastodon.social/@mrudokas" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>mrudokas</span></a></span> <span class="h-card" translate="no"><a href="https://malenfant.net/@didier" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>didier</span></a></span> And that's why I avoid <a href="https://social.vivaldi.net/tags/Java" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Java</span></a>. Even <a href="https://social.vivaldi.net/tags/Kotlin" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Kotlin</span></a> and <a href="https://social.vivaldi.net/tags/Scala" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Scala</span></a> already has way less boilerplate (but I still dislike it). Part of the problem is the language, other parts is the libraries - and the alternative <a href="https://social.vivaldi.net/tags/JVM" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>JVM</span></a> languages only change one part of the equation.</p><p>Now you know why I prefer even <a href="https://social.vivaldi.net/tags/C" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>C</span></a>++ over those. In C++ there's already way less boilerplate, and thus also way less efficiency of such tools. In fact I only ever get useful matches at all when writing code for a batch processing framework similar to <a href="https://social.vivaldi.net/tags/ApacheBeam" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ApacheBeam</span></a>.</p><p>Which has a REALLY nice <a href="https://social.vivaldi.net/tags/Go" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Go</span></a> interface where stateless parallel functions can just be Go functions. No class/struct/whatever around it, no extra methods, no weird context objects, just pure functions from type A to type B. That's how I want things to be.</p><p><a href="https://social.vivaldi.net/tags/Haskell" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Haskell</span></a> also is a very good example, and in fact one of the languages with least amount of boilerplate I know.</p><p>Otherwise, the point is "my team does not have the power to change the existing ecosystem". We have projects to deliver, can't spend too much resources in creating better APIs to existing systems. We can do incremental improvements though - in C++ that is possible, in Java it is a lost cause.</p>