4 ms·
I disagree with the presentation a lot. * There's no widely used successful system written in Haskell. Yes, there's GHC, Agda, Idris and other research tools b
by solomatov 12y ago
I disagree with the presentation a lot.
* There's no widely used successful system written in Haskell. Yes, there's GHC, Agda, Idris and other research tools but they are marginal.
* It's untrue that mutable state is the main reason of problems with code. You can manage state in Java and C# in any other language.
* Haskell programmers are usually smarter than Java programmers, but they often don't want to work on tasks which they aren't very interested in, which are almost non existent, or have little business meaning.
* Haskell, actually has a lot of design flaws. The worst of them is the scope of record fields.
- r0naa 12y ago> You can manage state in Java and C# in any other language. Yes but I think that the "value prop" with Haskell is that it forces everyone to abide to a certain discipline with respect to type safety and immutability. > they are marginal. Relative to what/whom? All the projects you have quoted are really successful and directly or indirectly pushed mainstream software engineering forward (i.e safer style).
- solomatov 12y ago>Yes but I think that the "value prop" with Haskell is that it forces everyone to abide to a certain discipline with respect to type safety and immutability. Thanks, to a large number of extensions with questionable utility, it's very easy to write not only unmaintainable code, but just unreadable code. >Relative to what/whom? All the projects you have quoted are really successful and directly or indirectly pushed mainstream software engineering forward (i.e safer style). They aren't safer style. They are more related to math than to programming. I believe, they could have benefitted from being implemented in more mainstream language than Haskell.
- dragonwriter 12y ago> There's no widely used successful system written in Haskell. Yes, there's GHC, Agda, Idris and other research tools but they are marginal. Google's Ganeti? Microsoft's Bond? > It's untrue that mutable state is the main reason of problems with code. Its certainly one of the biggest, if not the single biggest (the only thing I can think of that gets cited nearly as much is multithreading/parallelism, and the main source of problems in that domain is also managing mutable state in that context.) > You can manage state in Java and C# in any other language. Sure, Turing equivalence means there is very little difference in what languages can do, just in how suitable the abstractions they present are to enabling humans to do it effectively. > Haskell programmers are usually smarter than Java programmers, but they often don't want to work on tasks which they aren't very interested in, which are almost non existent, or have little business meaning. So, take Java programmers (particularly smart ones) and teach them Haskell. Bang, you've got Haskell programmers without worrying about the interest distribution among pre-existing Haskell programmers. Learning PLs, for skilled programmers, isn't a huge deal -- the good Java programmers won't have much problem becoming good Haskell programmers.
- solomatov 12y ago>Google's Ganeti? Microsoft's Bond? Only 2 known products for 20+ years of being widely known and available is unimpressive.
- dragonwriter 12y agoThose aren't the only two known projects, those are just two examples of open source projects that are, in addition, used in key infrastructure by the major solutions provider that is the original source of the project, and so widely, if indirectly, used. More Haskell use in production: https://wiki.haskell.org/Haskell_in_industry https://wiki.haskell.org/Haskell_in_industry
- solomatov 12y agoCompare this list to Java/C#/C++ used in the industry. Or even to Scala/Clojure/Erlang used in industry. There will be several orders of magnitude difference.
- dragonwriter 12y agoAnd, so what? Sure, Haskell is less popular in industry many other languages. That was true of all the currently popular industrial languages before they became popular. But its certainly not the case that there are no succesfull uses of Haskell in significant systems.
- solomatov 12y ago>That was true of all the currently popular industrial languages before they became popular. The most popular language, namely C#, Java and C++ became popular quite quickly. >But its certainly not the case that there are no succesfull uses of Haskell in significant systems. I didn't say that. I am sure there are successful uses for Haskell, but there're no killer apps for it.
- 12y ago
- evincarofautumn 12y ago> There’s no widely used successful system written in Haskell. All writes to Facebook—on the order of billions per day—go through the Sigma site integrity service, whose rules are written in Haskell.
- solomatov 12y agoSite integrity service is minor compared to such things used at facebook as, Cassandra (Java), React (JS). Haskell might be used efficiently in some cases, but we don't see any killer applications created with it.
- deleted 12y ago[deleted]
- m0nastic 12y agoI've been using Haskell at work for the past two years, but despite the fact that it's been a great investment, I don't really like articles like this. I find evangelism gross, and in particular, developer technology evangelism especially distasteful. That said, I take issue with the objectiveness of your points. For the first one, there are indeed quite a few successful systems written in Haskell (I suppose I might be quibbling with your definition of "successful"). Facebook is using Haskell for a few things internally (including their rule engine for fraud/spam processing), Standard Charter is using Haskell. In fact, here's a whole site of people using Haskell in industry (https://wiki.haskell.org/Haskell_in_industry https://wiki.haskell.org/Haskell_in_industry) I do think that it's only recently that you're starting to see projects/products built with Haskell that aren't libraries. Just this week there's been a bunch of web frameworks released (Airship and Spock, with Silk releasing a REST API framework a couple of months ago). I'd like to see more projects that people can use that don't have to care about the fact that the software is written in Haskell (databases and data analytics systems are a particular area I'd like to see become less Java-focused). Your second point on mutable state seems counter to a lot of the current conventional wisdom of the past five years, which is that immutability is vastly preferred to mutability. This is becoming true in Javascript (with React and Underscore), has always been true in Clojure, and is becoming more and more important in any system that deals with concurrency. You can certainly disagree that mutable state is the root of all evil, or even the most important problem with modern development; but I don't think it's accurate to paint Haskell as being the weirdo fringe language that's advocating immutability is the way to go. They have a lot of company on that front, they've just been making the point for a lot longer than most. Your third point seems like you just completely made it up. Do you have evidence that Haskell programmers are "usually smarter than Java programmers"?, or that they are somehow inordinately picky about what projects they work on? Do you know many professional developers who work in Haskell? It's true that the population of Java programmers is probably an order of magnitude larger than Haskell programmers (the number of universities who still teach Java for their introductory CS classes would probably guarantee that's the case), but contrary to what message board lore would have you believe, Haskell isn't some magical "smart person" language. I'm an idiot and I haven't had any trouble using it full-time. I don't use it for crazy math stuff, or advanced computer-science research. I use it to process events, interact with databases, and display CRUD operations (like probably 80% of most enterprise-y software development). Haskell's design flaws, while certainly existent, don't seem appreciably above or below any other language (I'm trying not to be smug, I actually think Haskell is much better designed than most any other language). I can happily attest that the record field scoping has not actually been an issue (although maybe I've just been lucky, and there's actually a bunch of other idioms for dealing with the scoping issue like lenses).