I really want to code more open-source Haskell but i just cant justify the lack in contribution that would result in....
@freemo You mean that people would not contribute to it because it is written in Haskell?
@raichoo Not as many as, say, python.
@freemo Potential contributors? Maybe. Actual contributors. Maybe not so much. People rarely help with small to medium projects. Most feedback you usually get is that you are not using the right language, license, version control, you name it. But even if you change those aspects, the people who have initially complained about that won't contribute anything. I'd say, use what's best for you to realize the project. You will remain the sole maintainer for the majority of its existence anyway.
@raichoo I run a lot of different open-source projects across several different languages. I find that language choice is a huge factor in the actua number of contributors you get on an active and useful project.
@freemo It's just my take on it, not trying to convince you of anything. It's just the way I tend to role with things. YMMV and that's totally fair.
@raichoo In terms of enjoying what your coding, I agree, do what is fun.
Thats the thing, you are going to pick what languages you find fun, most people would, most people SHOULD. But thats also why if I want a piece of software to be successful I will have better luck picking a popular language.
Whenever I want to write a project in haskell I quickly look at other projects like xmonad and how simply choosing haskell for the most part has lead to it getting very little attention compared to things like i3
@freemo Attention can be a driving factor. I personally don't see the merit in it though. I want to create the best outcome possible for me and the people who end up using my code. If it gains a larger audience that's fine. If it happens to be a handful of people, that's also fine. I don't consider "user base" or whatever an interesting metric to go by. I use some rather obscure tools, but I use them because they are exceptionally good, not because they are popular.
@raichoo Depends what your building. In my case I am building a decentralized P2P system that, like all such systems, has its success determined by how many people use it. So in this case getting attention is of critical importance really.
@freemo Like I said. Different needs, different drives. For something like that I'd probably use Haskell because of the robustness it delivers. Been using it for rather critical stuff for a couple of projects in my day-job. But if you have your reasons not to use it, why ponder the idea?
@raichoo I like haskell because its fun. But it cant really do anything better or worse than any other language. In fact since it isnt as popular if anything it works to my disadvantage due to having fewer libraries to pick from.
I would happily pick a language just for enjoyment to use it alone if i could get away with it (and on many projects I can). But sadly in this case practical needs outweigh my personal enjoyment.
@freemo In that regard I disagree. Anyway, it's your project. I'm not here to convince you of anything.
That is true, if im having fun im more motivated and that should be factored in for sure. Next time im working on a project that isnt so dependent on contribution i will likely take a stab at Haskell. Until now I've just done toy snippets like this:
@freemo @byron Certainly depends on what you mean by "better". Haskell just gives you tools to prevent certain common classes of errors. Tools which other languages simply lack and cannot emulate. Algebraic data types are also really just a piece of the puzzle. Things like data kind promotion also open up whole new possibilities, akin to dependent types. Being able to write code that eradicates certain classes of bugs yields "better" applications in terms of robustness. At least for me.
@raichoo @freemo ...BUT still, in most cases the first order differentiator between apps is whether you wrote it at all, or not.
Sounds simple but realistically the biggest hurdle tends to be "did I finish it in a meaningful way?"
So it can be about picking the language you enjoy using the most.
Of course it depends on use case too, and in a real sense languages aren't just syntax but libraries, tools and even supported platforms too.
As @freemo says, removing bug classes often adds others.
Very true, the most important thing is your own productivity. If a choice in language is going to significantly effect that, even if just due to not having fun, then it should factor into your choice.
With that said I tend to get excited about the application, what it can do, what new algorithms I can invent. The language effects my pleasure for sure but its not the biggest factor for my happiness. I can easily pick a less enjoyable language and still be plenty motivated and get the job done if I like the idea.
@byron @freemo "Removing some bugs often add others" to me pretty much sounds like a false dichotomy. It's not the experience I've had and I've been working with Haskell for about 10 years now. It's an argument I hear quite often though, as if there was some unspoken law of nature that magically spawns bugs to keep balance between programming languages. Seems to be a variation of "Turing's Tarpit". I don't think it's helpful at all, but again, it's your call.
To be fair the tune you are playing is also the tune I've heard from almost anyone that is the fan boy of any specific language, how their language is the good one because it reduces bugs or anything else.
No suprise these people also used their favorite language for "decades" and claim that as expiernce as to why it must be true.
I usually just read it as confirmation bias myself.
The truth is there are certain languages better suited for some tasks than others. Yes they reduce certain classes of bugs, they increase certain classes of other bugs. This doesnt make them equal it just means they are suited in cases where those classes of bugs are of more concern.
What I find almost entierly unhelpful in any discussion about languages is the one guy who is the expert on a language and puts it at the top of his fan list trying to tell everyone how his language of choice is universally superior. IT is completely blind to the nuance and plays entierly to personal biases.
But I agree, to each their own. You code what you have fun doing, as you should. ITs only when you claim your choice universally superior that it looses credibility in my eyes.
@freemo @byron I don't think Haskell is the end of the line. It's currently the language that approximates my idea of a good PL for most of the stuff I do in my day job. I've seen systems using dependent types and I would very much like to have something like that, but sadly this is still research and not suitable for every day usage. Haskell is just a tool that helps me at expressing concepts I would otherwise be unable to write down. ML also seems to be pretty neat, but I can't speak for it.
Haskell is a great language, lots to love about it. I find it fun as a langauge. I simply dont see it as functionally or universally superior to anything else (though perhaps superior in specific use cases). Even PL as a whole is not superior to non-PL overall.
There are many classes of languages, they all shine under certain circumstances. Some shine a bit more often than others overall.
@byron @freemo I basically think that one should use the PL one is most familiar with. That also includes ecosystem and tooling. However, not all PLs are created equal. I'm not using BASIC anymore, and for good reason. There is a whole branch of science dedicated to PLs and Haskell and ML draw from that. Are these languages suited for everything? I don't think so, but most of what we do these days would benefit from them.
Well I wouldnt argue that point. Your going to be most effective in a language if it happens to be the language you have significantly more expiernce with. But that is also the result of selection bias and historic usage.
I generally find, as a professional of 3 decades in the CS field, that it only takes me a few months to become an expert in any one language. Over the course of a career it is trivial to become a complete expert in many dozens of languages if you invest the time into learning and applying them. At that point there isnt just one language that you are most expiernced with, you are an expert in many, so it is no longer the limiting factor.
@freemo @raichoo I agree learning new languages isn't a huge barrier.
When I was in CS, it was pretty normal to have brand new languages in each course, where the language wasn't the *topic*, just something we were supposed to learn on the side while doing course work.
I've even found I usually learned languages best by starting with a project and then learning the language people said was good for it. Way back I first learned Perl just to write a text processing script for a friend.
@freemo @raichoo Still it can be a barrier, the difference between:
"I'll tinker with four new languages I've heard good things about for the next 3 months making toy programs in my spare time"
vs
"I'll just sit down right now and start this new app."
It's tricky because every language exists for a reason and has its advocates. It's hard to know what you'll *actually* like using and find effective until you've written real programs in it.
And it's still about what *you* work best in.
Well yea, surely if you only know one or two languages there is a barrier if you want to pick one you never learned. But I think most well expiernced coders already should know dozens of languages at expert level. At that point its all about selecting the tool that will get the job done.
@freemo @byron If you want to find out what languages like Haskell and ML can do better than other languages, I really want to recommend this talk to you: https://www.youtube.com/watch?v=DM2hEBwEWPc. Even though it's about ML it applies to all languages that have algebraic data types, something that is missing in most popular languages. The rabbit hole is far and wide. I don't want to appear condescending, this is stuff that most people don't realize when they just toy around with the language (which is cool!).