Me, trying a new programming language: Wow, this is great! I wish all software was written in it so that it has a healthy ecosystem!
Me, one or two years later: Ugh, that language has major downsides, is a pain to use and now I'm stuck with software written in it. Why was I ever enthusiastic about it?
Somehow I always end up going back to Perl and C, old and ugly languages that don't let me down.
@wolf480pl @grainloom @alcinnz If I had to come up with a criteria for "boring" in this context, it would come down to: Ubuiqitous, well-understood and very stable in both the language and the ecosystem.
I'd say the most boring functional language would be one of the Lisp dialects.
(Of course, a language can also be "boring" in the sense of not taking on any novel ideas, but that's probably a different topic)
@alcinnz @ayo @wolf480pl @grainloom
I think a boring programming language is a language that:
- has very clear and distinct concepts (and not too many of them)
- a well maintained set of libraries and an easy way to install them in different versions
- does not hit you in the face with NullPointerExceptions and segfaults
- when it compiles it runs
#Rust is such a language for me.
@wolf480pl @alcinnz @ayo @grainloom
Well, I think we have to differentiate here. Version numbers go up, because:
- existing features/concepts get refined(!) -> there are not many entirely new concepts and if there are, they make sense design-wise, because they play nicely with existing ones
- the standard library evolves
As long as nothing gets *removed* and you are able to use an older version I don't see a problem in that. That is why there is something like SemVer.
Also, what is the alternative? Stagnation?
Regarding technical debt: I highly recommend this very good read 🤓 "Forget Technical Debt — Here's How to Build Technical Wealth":
"Technical debt always reflects an operations problem."
The alternative is making things good enough that they don't need to be improved, and continuing to fix bugs while others build cool stuff on top.
BUT, there is no such thing as time-travel!
These libraries and other languages had years or, in case of languages, *decades* to mature, before they are considered stable.
Rust had it's 1.0 in 2015 and look what they have achieved in this "blink of an eye" (I'm taking Rust as an example, but there are certainly other projects, which have achieved the same)!
If you like "very clear and distinct concepts (and not too many of them)", Haskell has even fewer without feeling limiting! And it hits your other points quite well too.
Whilst having had decades to stabalize. The only problem is mainstream programming shuns functional programming...
And when the poorly documented GHC language extensions get brought up, which I find largely irrelevant.
@alcinnz @janriemer @ayo @grainloom
-XFlexibleInstances -XMultiParamTypeClasses -XFunctionalDependencies -XTypeFamilies -XFlexibleContexts -XTemplateHaskell -XQuasiQuotes -XTypeApplications -XScopedTypeVariables -XViewPatterns -XLambdaCase
Haskell is fun.
Overengineering stuff in Haskell is even more fun.
Definitely not boring.
@alcinnz well ok, -XViewPatterns, -XLambdaCase, -XQuasiQuotes and -XTemplateHaskell are kinda bloat.
But the other ones are usefull all the time...
For people who care about, support, or build Free, Libre, and Open Source Software (FLOSS).