6 ms·
>I'm reluctant to believe that Haskell magically protects you from that i can only show you the door you have to walk through it. >What if my run-of-the-mill
by crimsonalucard 7y ago
>I'm reluctant to believe that Haskell magically protects you from that
i can only show you the door you have to walk through it.
>What if my run-of-the-mill gang can rewrite the project three times over before your wizards have congregated to sing their first incantation?
The 3rd rewrite of your nodejs app still has technical debt. It still has flaws and still is buggy. Every time you redo it, you repeat the same mistakes over and over and over again never knowing how to make things better. You are doomed to participate on an endless cycle of rewrites as people of every generation reinvent the wheel with a new framework and new mistakes never converging on a better solution.
It's a myth that Haskell is slower. The speed I would say is the same because Haskell you would require significantly less testing and validation.
>Even if that was true, unless you're writing Haskell in a vacuum, you're going to have to interface with various other horrible pieces of technology that will throw a wrench into your beautiful pure design.
You do that anyway. At least keep one section of your stack safe and nice. Haskell.
>Dealing with the ugly bits while maintaining composure is what makes the difference between a really good engineer and somebody who just wants to program. That quality is invaluable, but you're likely not going to develop it by programming in a language that you enjoy.
Haskell is about safety and good design. If these two things are not critical to your program, then you shouldn't go the way of Haskell. If it is, Haskell is one of the best technologies to meet that requirement while not costing too much in performance / speed of development.
If Haskell has a critical flaw it's the learning curve. But that's a one time deal. Once you get past the curve you're good. Also don't call us wizards. We're not... Haskell isn't that hard. Anyone can learn it, this isn't like quantum physics. Becoming an expert database SQL ninja admin on postgresql is probably just as hard as becoming one on haskell. haskell like sql is just a bit challenging because it's expression based as opposed to imperative like python.
- gridlockd 7y ago> The 3rd rewrite of your nodejs app still has technical debt. It still has flaws and still is buggy. Every time you redo it, you repeat the same mistakes over and over and over again never knowing how to make things better. Oh really? Well that's good news too, because now I can just save myself those rewrites, because they're pointless. That's a 3x improvement right there. > It's a myth that Haskell is slower. The speed I would say is the same because Haskell you would require significantly less testing and validation. If you have wizards, that is. > Haskell is about safety and good design. If these two things are not critical to your program, then you shouldn't go the way of Haskell. They certainly aren't critical to your run-of-the-mill NodeJS/Angular project which, I must remind, is the alternative that we are discussing here. > If Haskell has a critical flaw it's the learning curve. But that's a one time deal. No, it's a "one time per hire" deal. > Also don't call us wizards. We're not... Haskell isn't that hard. I'm certainly not calling all Haskell programmers wizards, I'm referring to that "team of experienced developers that had built large applications in other languages (and then arrived at Haskell as a better solution)" that the original commenter saw as a requirement for success. Of course it's not impossible to assemble such a team for a run-of-the-mill project. It's just impractical. > Becoming an expert database SQL ninja admin on postgresql is probably just as hard as becoming one on haskell. See, that's another kind of expert that I definitely don't want to need on the team. I want people who have a basic understanding of SQL, with a reluctance to learn the ins and outs of it. That'll dramatically lower the chances of them trying to be smart with SQL.
- crimsonalucard 7y ago>Oh really? Well that's good news too, because now I can just save myself those rewrites, because they're pointless. That's a 3x improvement right there. No dude don't even write it because likely it will be garbage. If you truly believe that nodejs apps don't need to be rewritten go to Uber. They never rewrote their entire nodejs code base in Golang. >If you have wizards, that is. Haskell isn't all wizards. It's just regular people who learned something different. >No, it's a "one time per hire" deal. Same with almost every other language that isn't popular yet. Rust and golang and kotlin and swift all went through this. The goal of any language is to become popular enough to get past this. >I'm certainly not calling all Haskell programmers wizards Then what is the big deal. If we aren't wizards then it's easy to learn. Programmers learn new languages all the time. Learning Haskell is just slightly more challenging and not a huge drain on productivity. Spend a couple more months training new developers in exchange for a 90% reduction in bugs and much better design. >See, that's another kind of expert that I definitely don't want to need on the team. I want people who have a basic understanding of SQL, with a reluctance to learn the ins and outs of it. That'll dramatically lower the chances of them trying to be smart with SQL. Eventually for certain queries you will have to get clever and write queries to optimize. Additionally to serve certain architectures you have to know a lot about the inner workings of the database and how to manipulate the api to get the performance needed at the lower level. An expert has no trouble with this and is an asset. This isn't about getting clever or doing tricky things with syntax just to be clever... this is about inevitability of the fact that a client will want to ask a question to a database that has grown so complex it is not straightforward to answer his question in a performant way. This is extremely common even for your run of the mill web app company. But that's besides the point. I'm comparing haskell to SQL because it's a similar learning curve. Both are expression based languages. In fact I would argue that Haskell is EASIER then SQL due to the type checking. Learn the language if you really want to understand our perspective. I use to be in that camp of why learn a freaking language when it's barely used, but that changed once I learned haskell.
- gridlockd 7y ago> Then what is the big deal. There is no "big deal". You're taking my facetious use of the word "wizard" the wrong way. > Same with almost every other language that isn't popular yet. Rust and golang and kotlin and swift all went through this. If Haskell already was popular, it would be an entirely different argument. Then we can talk about the merits of the language/platform versus the alternatives. Right now you're trying to sell me this exotic language used by exotic programmers who have strong opinions on design. From a business point of view, those are alarm bells. That's what you need to at least recognize, even though you disagree. > Learning Haskell is just slightly more challenging and not a huge drain on productivity. Spend a couple more months training new developers in exchange for a 90% reduction in bugs and much better design. This is what you believe and take for granted in your argument. I'm sure you're sincere about that, but remember, I'm not buying all those beliefs wholesale. Haskell has been around for thirty years, if it really makes for such vast increases in its productivity, why aren't those Haskell programmers dominating software development? > This just tells me you're someone with little experience. At least consider the possibility that there's some insight there that you don't quite grasp yet. > Learn the language if you really want to understand our perspective. "Buy the product in order to see why it's so great!" would be a terrible sales pitch, if you catch my drift.
- goto11 7y ago> The 3rd rewrite of your nodejs app still has technical debt. It still has flaws and still is buggy. Are you seriously suggesting that code written in Haskell cannot have bugs, flaws and technical debt? > Every time you redo it, you repeat the same mistakes over and over and over again never knowing how to make things better. Am I to understand that people writing in JS cannot learn from mistakes, but people writing in Haskell can? Haskell is a cool language, but you are not helping its image by such outlandish claims.
- crimsonalucard 7y ago>Are you seriously suggesting that code written in Haskell cannot have bugs, flaws and technical debt? No way. Not at all. I am suggesting that Haskell code will have significantly less bugs and less technical debt not none. I am not making a single outlandish claim. >Am I to understand that people writing in JS cannot learn from mistakes, but people writing in Haskell can? Yeah. Every couple years people who write JS come up with new garbage frameworks that don't really move the needle forward. React, angular, vue, jquery.... different flavors of the same issue while fixing old problems and creating new ones. Of course their's slight progress forward with things like type script but overall I see the same mistakes being repeated every generation. History repeats itself is a popular saying because there are just as many people who don't learn as there are people who do. >Haskell is a cool language, but you are not helping its image by such outlandish claims. Maybe you should understand my claim before calling it outlandish. Significantly less bugs and less technical debt is a real thing, but nowhere did I claim ZERO. You still need unit tests and you still need to think about your design. Perhaps it's my fault. My comments deliver a perception about haskell that is false. I'll think about it, but in no way did I intend to imply anything outlandish about haskell.
- gridlockd 7y ago> Every couple years people who write JS come up with new garbage frameworks that don't really move the needle forward. React, angular, vue, jquery.... different flavors of the same issue while fixing old problems and creating new ones. People needed to figure out how to turn HTML into a somewhat usable application platform while it is evolving. The DOM of 2019 is not the DOM of 2009. Javascript ES6+ is far different from ES3. It's chaotic, but how could it not be? The other day, someone posted a link on writing Haskell for the web frontend. Guess what, people were reinventing things over and over there too, it's just that nobody really took notice of it.